diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2015-08-21 14:47:37 +0100 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2015-08-21 14:49:36 +0100 |
commit | 7d0a1220f145b8c6b502486fa370e01c62d1aa2b (patch) | |
tree | 0dcd225acbce54624370397940596fd3628a0f99 | |
parent | 5cc0cfb15d9a12737bc5e8d1710861af52c145d3 (diff) | |
download | gitlab-ci-7d0a1220f145b8c6b502486fa370e01c62d1aa2b.tar.gz |
Added CreateTriggerRequestService specs
-rw-r--r-- | app/services/create_trigger_request_service.rb | 4 | ||||
-rw-r--r-- | spec/factories/commits.rb | 9 | ||||
-rw-r--r-- | spec/services/create_trigger_request_service_spec.rb | 52 |
3 files changed, 63 insertions, 2 deletions
diff --git a/app/services/create_trigger_request_service.rb b/app/services/create_trigger_request_service.rb index 8ab34d2..a60f6f6 100644 --- a/app/services/create_trigger_request_service.rb +++ b/app/services/create_trigger_request_service.rb @@ -1,6 +1,6 @@ class CreateTriggerRequestService - def execute(project, trigger, ref, variables) - commit = project.commits.find_by_ref(ref) + def execute(project, trigger, ref, variables = nil) + commit = project.commits.where(ref: ref).last return unless commit trigger_request = trigger.trigger_requests.create!( diff --git a/spec/factories/commits.rb b/spec/factories/commits.rb index 82f7d70..6fdd46f 100644 --- a/spec/factories/commits.rb +++ b/spec/factories/commits.rb @@ -51,15 +51,24 @@ FactoryGirl.define do } end + factory :commit_without_jobs do + after(:create) do |commit, evaluator| + commit.push_data[:ci_yaml_file] = YAML.dump({}) + commit.save + end + end + factory :commit_with_one_job do after(:create) do |commit, evaluator| commit.push_data[:ci_yaml_file] = YAML.dump({rspec: { script: "ls" }}) + commit.save end end factory :commit_with_two_jobs do after(:create) do |commit, evaluator| commit.push_data[:ci_yaml_file] = YAML.dump({rspec: { script: "ls" }, spinach: { script: "ls" }}) + commit.save end end end diff --git a/spec/services/create_trigger_request_service_spec.rb b/spec/services/create_trigger_request_service_spec.rb new file mode 100644 index 0000000..41db01c --- /dev/null +++ b/spec/services/create_trigger_request_service_spec.rb @@ -0,0 +1,52 @@ +require 'spec_helper' + +describe CreateTriggerRequestService do + let(:service) { CreateTriggerRequestService.new } + let(:project) { FactoryGirl.create :project } + let(:trigger) { FactoryGirl.create :trigger, project: project } + + describe :execute do + context 'valid params' do + subject { service.execute(project, trigger, 'master') } + + before do + @commit = FactoryGirl.create :commit, project: project + end + + it { subject.should be_kind_of(TriggerRequest) } + it { subject.commit.should == @commit } + end + + context 'no commit for ref' do + subject { service.execute(project, trigger, 'other-branch') } + + it { subject.should be_nil } + end + + context 'no builds created' do + subject { service.execute(project, trigger, 'master') } + + before do + FactoryGirl.create :commit_without_jobs, project: project + end + + it { subject.should be_nil } + end + + context 'for multiple commits' do + subject { service.execute(project, trigger, 'master') } + + before do + @commit1 = FactoryGirl.create :commit, committed_at: 2.hour.ago, project: project + @commit2 = FactoryGirl.create :commit, committed_at: 1.hour.ago, project: project + @commit3 = FactoryGirl.create :commit, committed_at: 3.hour.ago, project: project + end + + context 'retries latest one' do + it { subject.should be_kind_of(TriggerRequest) } + it { subject.should be_persisted } + it { subject.commit.should == @commit2 } + end + end + end +end |