diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-03-25 15:33:23 -0700 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-03-25 15:36:24 -0700 |
commit | a6ebda29fd36497cd7bbf1dd139e5503826bf10e (patch) | |
tree | 8dcb15d474eaa762b3b2789d1f360e1366b052ad | |
parent | 910f3506babb861b15b24b5e19d47c0108584366 (diff) | |
download | gitlab-ci-a6ebda29fd36497cd7bbf1dd139e5503826bf10e.tar.gz |
Convert shared runner to specific when assing to project
Conflicts:
app/models/runner.rb
-rw-r--r-- | app/models/runner.rb | 8 | ||||
-rw-r--r-- | spec/models/runner_spec.rb | 11 |
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 |