diff options
Diffstat (limited to 'spec/models/project_services/builds_email_service_spec.rb')
-rw-r--r-- | spec/models/project_services/builds_email_service_spec.rb | 66 |
1 files changed, 57 insertions, 9 deletions
diff --git a/spec/models/project_services/builds_email_service_spec.rb b/spec/models/project_services/builds_email_service_spec.rb index 905379a64e3..236df8f047d 100644 --- a/spec/models/project_services/builds_email_service_spec.rb +++ b/spec/models/project_services/builds_email_service_spec.rb @@ -1,23 +1,71 @@ require 'spec_helper' describe BuildsEmailService do - let(:build) { create(:ci_build) } - let(:data) { Gitlab::BuildDataBuilder.build(build) } - let(:service) { BuildsEmailService.new } + let(:data) { Gitlab::BuildDataBuilder.build(create(:ci_build)) } - describe :execute do - it "sends email" do - service.recipients = 'test@gitlab.com' + describe 'Validations' do + context 'when service is active' do + before { subject.active = true } + + it { is_expected.to validate_presence_of(:recipients) } + + context 'when pusher is added' do + before { subject.add_pusher = true } + + it { is_expected.not_to validate_presence_of(:recipients) } + end + end + + context 'when service is inactive' do + before { subject.active = false } + + it { is_expected.not_to validate_presence_of(:recipients) } + end + end + + describe '#execute' do + it 'sends email' do + subject.recipients = 'test@gitlab.com' data[:build_status] = 'failed' + expect(BuildEmailWorker).to receive(:perform_async) - service.execute(data) + + subject.execute(data) end - it "does not sends email with failed build and allowed_failure on" do + it 'does not send email with succeeded build and notify_only_broken_builds on' do + expect(subject).to receive(:notify_only_broken_builds).and_return(true) + data[:build_status] = 'success' + + expect(BuildEmailWorker).not_to receive(:perform_async) + + subject.execute(data) + end + + it 'does not send email with failed build and build_allow_failure is true' do data[:build_status] = 'failed' data[:build_allow_failure] = true + + expect(BuildEmailWorker).not_to receive(:perform_async) + + subject.execute(data) + end + + it 'does not send email with unknown build status' do + data[:build_status] = 'foo' + expect(BuildEmailWorker).not_to receive(:perform_async) - service.execute(data) + + subject.execute(data) + end + + it 'does not send email when recipients list is empty' do + subject.recipients = ' ,, ' + data[:build_status] = 'failed' + + expect(BuildEmailWorker).not_to receive(:perform_async) + + subject.execute(data) end end end |