2012-08-28 07:42:28 +02:00
|
|
|
# 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.
|
|
|
|
|
2012-08-29 02:57:54 +02:00
|
|
|
alias_method :path_to_repo, :fake_path_to_repo
|
|
|
|
alias_method :satellite, :fake_satellite
|
2012-08-28 07:42:28 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
def fake_path_to_repo
|
2012-08-29 02:57:54 +02:00
|
|
|
if new_record? || path == 'newproject'
|
|
|
|
# There are a couple Project specs and features that expect the Project's
|
|
|
|
# path to be in the returned path, so let's patronize them.
|
2012-08-28 07:42:28 +02:00
|
|
|
File.join(Rails.root, 'tmp', 'tests', path)
|
|
|
|
else
|
|
|
|
# For everything else, just give it the path to one of our real seeded
|
|
|
|
# repos.
|
2012-08-29 02:57:54 +02:00
|
|
|
File.join(Rails.root, 'tmp', 'tests', 'gitlabhq_0')
|
2012-08-28 07:42:28 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def fake_satellite
|
|
|
|
FakeSatellite.new
|
|
|
|
end
|
|
|
|
|
|
|
|
class FakeSatellite
|
|
|
|
def exists?
|
|
|
|
true
|
|
|
|
end
|
|
|
|
|
|
|
|
def create
|
|
|
|
true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-08-29 02:57:54 +02:00
|
|
|
[Project, ProtectedBranch, UsersProject].each do |c|
|
2012-08-28 07:42:28 +02:00
|
|
|
c.send(:include, StubbedRepository)
|
|
|
|
end
|