summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-03-25 15:33:23 -0700
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-03-25 15:36:24 -0700
commita6ebda29fd36497cd7bbf1dd139e5503826bf10e (patch)
tree8dcb15d474eaa762b3b2789d1f360e1366b052ad
parent910f3506babb861b15b24b5e19d47c0108584366 (diff)
downloadgitlab-ci-a6ebda29fd36497cd7bbf1dd139e5503826bf10e.tar.gz
Convert shared runner to specific when assing to project
Conflicts: app/models/runner.rb
-rw-r--r--app/models/runner.rb8
-rw-r--r--spec/models/runner_spec.rb11
2 files changed, 18 insertions, 1 deletions
diff --git a/app/models/runner.rb b/app/models/runner.rb
index 7b32cea..516d3ce 100644
--- a/app/models/runner.rb
+++ b/app/models/runner.rb
@@ -30,7 +30,9 @@ class Runner < ActiveRecord::Base
self.token = SecureRandom.hex(15) if self.token.blank?
end
- def assign_to(project, current_user)
+ def assign_to(project, current_user = nil)
+ self.is_shared = false if shared?
+ self.save
project.runner_projects.create!(runner_id: self.id)
end
@@ -44,6 +46,10 @@ class Runner < ActiveRecord::Base
is_shared
end
+ def specific?
+ !shared?
+ end
+
def only_for?(project)
projects == [project]
end
diff --git a/spec/models/runner_spec.rb b/spec/models/runner_spec.rb
index db2fac3..8d15d33 100644
--- a/spec/models/runner_spec.rb
+++ b/spec/models/runner_spec.rb
@@ -28,4 +28,15 @@ describe Runner do
expect(runner.display_name).to eq runner.token
end
end
+
+ describe :assign_to do
+ let!(:project) { FactoryGirl.create :project }
+ let!(:shared_runner) { FactoryGirl.create(:runner, is_shared: true) }
+
+ before { shared_runner.assign_to(project) }
+
+ it { shared_runner.should be_specific }
+ it { shared_runner.projects.should == [project] }
+ it { shared_runner.only_for?(project).should be_true }
+ end
end