diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/factories/job.rb | 4 | ||||
-rw-r--r-- | spec/services/create_commit_service_spec.rb | 44 |
2 files changed, 46 insertions, 2 deletions
diff --git a/spec/factories/job.rb b/spec/factories/job.rb index 93f2ff7..9a00a13 100644 --- a/spec/factories/job.rb +++ b/spec/factories/job.rb @@ -2,5 +2,9 @@ FactoryGirl.define do factory :job do name 'rspec' commands 'bundle exec rspec spec' + + factory :deploy_job do + job_type :deploy + end end end diff --git a/spec/services/create_commit_service_spec.rb b/spec/services/create_commit_service_spec.rb index 725ea08..761bfaf 100644 --- a/spec/services/create_commit_service_spec.rb +++ b/spec/services/create_commit_service_spec.rb @@ -25,12 +25,52 @@ describe CreateCommitService do it "calls create_deploy_builds if there are no builds" do project.jobs.destroy_all Commit.any_instance.should_receive(:create_deploy_builds) - service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312') + service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312') end it "does not call create_deploy_builds if there is build" do Commit.any_instance.should_not_receive(:create_deploy_builds) - service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312') + service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312') + end + end + + context "skip tag if there is no build for it" do + it "does not create commit if there is no appropriate job" do + project.jobs + + result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312') + result.should be_false + end + + it "creates commit if there is appropriate job" do + project.jobs.first.update(build_tags: true) + + result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312') + result.should be_persisted + end + + it "does not create commit if there is no appropriate job nor deploy job" do + project.jobs.first.update(build_tags: false) + FactoryGirl.create(:deploy_job, project: project, refs: "release") + + result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312') + result.should be_false + end + + it "creates commit if there is no appropriate job but deploy job has right ref setting" do + project.jobs.first.update(build_tags: false) + FactoryGirl.create(:deploy_job, project: project, refs: "0_1") + + result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312') + result.should be_persisted + end + + it "creates commit if there is no appropriate job and deploy job has no ref setting" do + project.jobs.first.update(build_tags: true) + FactoryGirl.create(:deploy_job, project: project) + + result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312') + result.should be_persisted end end end |