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.
This commit is contained in:
parent
12fe6a6fd7
commit
e37c39a21d
2 changed files with 31 additions and 8 deletions
|
@ -33,13 +33,13 @@ class EmailsOnPushWorker
|
||||||
reverse_compare = false
|
reverse_compare = false
|
||||||
|
|
||||||
if action == :push
|
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
|
diff_refs = compare.diff_refs
|
||||||
|
|
||||||
return false if compare.same
|
return false if compare.same
|
||||||
|
|
||||||
if compare.commits.empty?
|
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
|
diff_refs = compare.diff_refs
|
||||||
|
|
||||||
reverse_compare = true
|
reverse_compare = true
|
||||||
|
|
|
@ -2,19 +2,19 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe EmailsOnPushWorker do
|
describe EmailsOnPushWorker do
|
||||||
include RepoHelpers
|
include RepoHelpers
|
||||||
|
include EmailSpec::Matchers
|
||||||
|
|
||||||
let(:project) { create(:project) }
|
let(:project) { create(:project) }
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:data) { Gitlab::DataBuilder::Push.build_sample(project, user) }
|
let(:data) { Gitlab::DataBuilder::Push.build_sample(project, user) }
|
||||||
let(:recipients) { user.email }
|
let(:recipients) { user.email }
|
||||||
let(:perform) { subject.perform(project.id, recipients, data.stringify_keys) }
|
let(:perform) { subject.perform(project.id, recipients, data.stringify_keys) }
|
||||||
|
let(:email) { ActionMailer::Base.deliveries.last }
|
||||||
|
|
||||||
subject { EmailsOnPushWorker.new }
|
subject { EmailsOnPushWorker.new }
|
||||||
|
|
||||||
describe "#perform" do
|
describe "#perform" do
|
||||||
context "when push is a new branch" do
|
context "when push is a new branch" do
|
||||||
let(:email) { ActionMailer::Base.deliveries.last }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
data_new_branch = data.stringify_keys.merge("before" => Gitlab::Git::BLANK_SHA)
|
data_new_branch = data.stringify_keys.merge("before" => Gitlab::Git::BLANK_SHA)
|
||||||
|
|
||||||
|
@ -31,8 +31,6 @@ describe EmailsOnPushWorker do
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when push is a deleted branch" do
|
context "when push is a deleted branch" do
|
||||||
let(:email) { ActionMailer::Base.deliveries.last }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
data_deleted_branch = data.stringify_keys.merge("after" => Gitlab::Git::BLANK_SHA)
|
data_deleted_branch = data.stringify_keys.merge("after" => Gitlab::Git::BLANK_SHA)
|
||||||
|
|
||||||
|
@ -48,15 +46,40 @@ describe EmailsOnPushWorker do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when there are no errors in sending" do
|
context "when push is a force push to delete commits" do
|
||||||
let(:email) { ActionMailer::Base.deliveries.last }
|
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 }
|
before { perform }
|
||||||
|
|
||||||
it "sends a mail with the correct subject" do
|
it "sends a mail with the correct subject" do
|
||||||
expect(email.subject).to include('Change some files')
|
expect(email.subject).to include('Change some files')
|
||||||
end
|
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
|
it "sends the mail to the correct recipient" do
|
||||||
expect(email.to).to eq([user.email])
|
expect(email.to).to eq([user.email])
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue