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:33:23 -0700
commit2cf6bac625400bfa037d0aca36e2589c1148204c (patch)
tree360fafd3cf998a01d4fdd4483411c93d269bafd7
parentcebdfc7bf5aa30cfa744f8426a0bf82e77e0e8fa (diff)
downloadgitlab-ci-2cf6bac625400bfa037d0aca36e2589c1148204c.tar.gz
Convert shared runner to specific when assing to project
-rw-r--r--app/models/runner.rb6
-rw-r--r--spec/models/runner_spec.rb11
2 files changed, 17 insertions, 0 deletions
diff --git a/app/models/runner.rb b/app/models/runner.rb
index b9dbfcb..ed70097 100644
--- a/app/models/runner.rb
+++ b/app/models/runner.rb
@@ -33,6 +33,8 @@ class Runner < ActiveRecord::Base
end
def assign_to(project, current_user = nil)
+ self.is_shared = false if shared?
+ self.save
project.runner_projects.create!(runner_id: self.id)
end
@@ -46,6 +48,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 128a05c..5440e9e 100644
--- a/spec/models/runner_spec.rb
+++ b/spec/models/runner_spec.rb
@@ -31,4 +31,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