diff options
author | Sean McGivern <sean@gitlab.com> | 2016-08-19 13:07:39 +0100 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2016-08-19 13:07:39 +0100 |
commit | e37c39a21dac3d67c9c589894cf02f3614a04cbe (patch) | |
tree | 505ee4d9d4396ba5fc4d5781689f1d3d01633dd7 | |
parent | 12fe6a6fd733110acc72aa0f5bdaec2b1fa1f358 (diff) | |
download | gitlab-ce-e37c39a21dac3d67c9c589894cf02f3614a04cbe.tar.gz |
Fix force-push message in push emails
`after_sha` maps to the source branch, as it's the head of our compare,
so these were just the wrong way around.
-rw-r--r-- | app/workers/emails_on_push_worker.rb | 4 | ||||
-rw-r--r-- | spec/workers/emails_on_push_worker_spec.rb | 35 |
2 files changed, 31 insertions, 8 deletions
diff --git a/app/workers/emails_on_push_worker.rb b/app/workers/emails_on_push_worker.rb index c6a5af2809a..1dc7e0adef7 100644 --- a/app/workers/emails_on_push_worker.rb +++ b/app/workers/emails_on_push_worker.rb @@ -33,13 +33,13 @@ class EmailsOnPushWorker reverse_compare = false if action == :push - compare = CompareService.new.execute(project, before_sha, project, after_sha) + compare = CompareService.new.execute(project, after_sha, project, before_sha) diff_refs = compare.diff_refs return false if compare.same if compare.commits.empty? - compare = CompareService.new.execute(project, after_sha, project, before_sha) + compare = CompareService.new.execute(project, before_sha, project, after_sha) diff_refs = compare.diff_refs reverse_compare = true diff --git a/spec/workers/emails_on_push_worker_spec.rb b/spec/workers/emails_on_push_worker_spec.rb index eecc32875a5..b43a5897c98 100644 --- a/spec/workers/emails_on_push_worker_spec.rb +++ b/spec/workers/emails_on_push_worker_spec.rb @@ -2,19 +2,19 @@ require 'spec_helper' describe EmailsOnPushWorker do include RepoHelpers + include EmailSpec::Matchers let(:project) { create(:project) } let(:user) { create(:user) } let(:data) { Gitlab::DataBuilder::Push.build_sample(project, user) } let(:recipients) { user.email } let(:perform) { subject.perform(project.id, recipients, data.stringify_keys) } + let(:email) { ActionMailer::Base.deliveries.last } subject { EmailsOnPushWorker.new } describe "#perform" do context "when push is a new branch" do - let(:email) { ActionMailer::Base.deliveries.last } - before do data_new_branch = data.stringify_keys.merge("before" => Gitlab::Git::BLANK_SHA) @@ -31,8 +31,6 @@ describe EmailsOnPushWorker do end context "when push is a deleted branch" do - let(:email) { ActionMailer::Base.deliveries.last } - before do data_deleted_branch = data.stringify_keys.merge("after" => Gitlab::Git::BLANK_SHA) @@ -48,15 +46,40 @@ describe EmailsOnPushWorker do end end - context "when there are no errors in sending" do - let(:email) { ActionMailer::Base.deliveries.last } + context "when push is a force push to delete commits" do + before do + data_force_push = data.stringify_keys.merge( + "after" => data[:before], + "before" => data[:after] + ) + + subject.perform(project.id, recipients, data_force_push) + end + + it "sends a mail with the correct subject" do + expect(email.subject).to include('Change some files') + end + it "mentions force pushing in the body" do + expect(email).to have_body_text("force push") + end + + it "sends the mail to the correct recipient" do + expect(email.to).to eq([user.email]) + end + end + + context "when there are no errors in sending" do before { perform } it "sends a mail with the correct subject" do expect(email.subject).to include('Change some files') end + it "does not mention force pushing in the body" do + expect(email).not_to have_body_text("force push") + end + it "sends the mail to the correct recipient" do expect(email.to).to eq([user.email]) end |