gitlabhq/spec/support/stubbed_repository.rb

61 lines
1.6 KiB
Ruby

# Stubs out all Git repository access done by models so that specs can run
# against fake repositories without Grit complaining that they don't exist.
module StubbedRepository
extend ActiveSupport::Concern
included do
# If a class defines the method we want to stub directly, rather than
# inheriting it from a module (as is the case in UsersProject), that method
# will overwrite our stub, so use alias_method to ensure it's our stub
# getting called.
alias_method :update_repository, :fake_update_repository
alias_method :destroy_repository, :fake_destroy_repository
alias_method :repository_delete_key, :fake_repository_delete_key
alias_method :path_to_repo, :fake_path_to_repo
alias_method :satellite, :fake_satellite
end
def fake_update_repository
true
end
def fake_destroy_repository
true
end
def fake_repository_delete_key
true
end
def fake_path_to_repo
if new_record?
# There are a couple Project specs that expect the Project's path to be
# in the returned path, so let's patronize them.
File.join(Rails.root, 'tmp', 'tests', path)
else
# For everything else, just give it the path to one of our real seeded
# repos.
File.join(Rails.root, 'tmp', 'tests', 'gitlabhq_1')
end
end
def fake_satellite
FakeSatellite.new
end
class FakeSatellite
def exists?
true
end
def create
true
end
end
end
[Project, Key, ProtectedBranch, UsersProject].each do |c|
c.send(:include, StubbedRepository)
end