summaryrefslogtreecommitdiff
path: root/spec/models/project_services/hip_chat_message_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/project_services/hip_chat_message_spec.rb')
-rw-r--r--spec/models/project_services/hip_chat_message_spec.rb98
1 files changed, 56 insertions, 42 deletions
diff --git a/spec/models/project_services/hip_chat_message_spec.rb b/spec/models/project_services/hip_chat_message_spec.rb
index 6096b5c..d4bfb31 100644
--- a/spec/models/project_services/hip_chat_message_spec.rb
+++ b/spec/models/project_services/hip_chat_message_spec.rb
@@ -4,62 +4,76 @@ describe HipChatMessage do
subject { HipChatMessage.new(build) }
let(:project) { FactoryGirl.create(:project) }
- let(:commit) { FactoryGirl.create(:commit, project: project) }
- let(:job) { FactoryGirl.create(:job, project: project) }
- let(:build) { FactoryGirl.create(:build, commit: commit, job: job, status: 'success') }
- context 'when build succeeds' do
-
- before { build.save }
-
- it 'returns a successful message' do
- expect( subject.status_color ).to eq 'green'
- expect( subject.notify? ).to be_false
- expect( subject.to_s ).to match(/Build '[^']+' #\d+/)
- expect( subject.to_s ).to match(/Successful in \d+ second\(s\)\./)
+ context "One build" do
+ let(:commit) do
+ commit = FactoryGirl.create(:commit, project: project)
+ commit.push_data[:ci_yaml_file] = YAML.dump({jobs: ["ls"]})
+ commit.save
+ commit
end
- end
- context 'when build fails' do
+ let(:build) do
+ commit.create_builds
+ commit.builds.first
+ end
- before do
- build.status = 'failed'
- build.save
+ context 'when build succeeds' do
+ it 'returns a successful message' do
+ build.update(status: "success")
+
+ expect( subject.status_color ).to eq 'green'
+ expect( subject.notify? ).to be_false
+ expect( subject.to_s ).to match(/Build '[^']+' #\d+/)
+ expect( subject.to_s ).to match(/Successful in \d+ second\(s\)\./)
+ end
end
- it 'returns a failure message' do
- expect( subject.status_color ).to eq 'red'
- expect( subject.notify? ).to be_true
- expect( subject.to_s ).to match(/Build '[^']+' #\d+/)
- expect( subject.to_s ).to match(/Failed in \d+ second\(s\)\./)
+ context 'when build fails' do
+ it 'returns a failure message' do
+ build.update(status: "failed")
+
+ expect( subject.status_color ).to eq 'red'
+ expect( subject.notify? ).to be_true
+ expect( subject.to_s ).to match(/Build '[^']+' #\d+/)
+ expect( subject.to_s ).to match(/Failed in \d+ second\(s\)\./)
+ end
end
end
- context 'when all matrix builds succeed' do
- let(:job2) { FactoryGirl.create(:job, project: project, name: 'Another Job') }
- let(:build2) { FactoryGirl.create(:build, id: 10, commit: commit, job: job2, status: 'success') }
-
- before { build.save; build2.save }
+ context "Several builds" do
+ let(:commit) {commit = FactoryGirl.create(:commit, project: project)}
- it 'returns a successful message' do
- expect( subject.status_color ).to eq 'green'
- expect( subject.notify? ).to be_false
- expect( subject.to_s ).to match(/Commit #\d+/)
- expect( subject.to_s ).to match(/Successful in \d+ second\(s\)\./)
+ let(:build) do
+ commit.builds.first
end
- end
- context 'when at least one matrix build fails' do
- let(:job2) { FactoryGirl.create(:job, project: project, name: 'Another Job') }
- let(:build2) { FactoryGirl.create(:build, id: 10, commit: commit, job: job2, status: 'failed') }
+ context 'when all matrix builds succeed' do
+ it 'returns a successful message' do
+ commit.create_builds
+ commit.builds.update_all(status: "success")
+ commit.reload
- before { build.save; build2.save }
+ expect( subject.status_color ).to eq 'green'
+ expect( subject.notify? ).to be_false
+ expect( subject.to_s ).to match(/Commit #\d+/)
+ expect( subject.to_s ).to match(/Successful in \d+ second\(s\)\./)
+ end
+ end
- it 'returns a failure message' do
- expect( subject.status_color ).to eq 'red'
- expect( subject.notify? ).to be_true
- expect( subject.to_s ).to match(/Commit #\d+/)
- expect( subject.to_s ).to match(/Failed in \d+ second\(s\)\./)
+ context 'when at least one matrix build fails' do
+ it 'returns a failure message' do
+ commit.create_builds
+ first_build = commit.builds.first
+ second_build = commit.builds.last
+ first_build.update(status: "success")
+ second_build.update(status: "failed")
+
+ expect( subject.status_color ).to eq 'red'
+ expect( subject.notify? ).to be_true
+ expect( subject.to_s ).to match(/Commit #\d+/)
+ expect( subject.to_s ).to match(/Failed in \d+ second\(s\)\./)
+ end
end
end
end