Skip to content

Commit

Permalink
PR fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
EgorrodE committed Dec 12, 2019
1 parent bb4a7bd commit b503f57
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 124 deletions.
20 changes: 3 additions & 17 deletions app/mailers/user_mailer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -74,25 +74,11 @@ def work_package_updated(user, journal, author = User.current)
end
end

def work_package_watcher_added(work_package, user, watcher_setter)
def work_package_watcher_changed(work_package, user, watcher_changer, action)
User.execute_as user do
@issue = work_package
@watcher_setter = watcher_setter

set_work_package_headers(work_package)
message_id work_package, user
references work_package, user

with_locale_for(user) do
mail to: user.mail, subject: subject_for_work_package(work_package)
end
end
end

def work_package_watcher_removed(work_package, user, watcher_remover)
User.execute_as user do
@issue = work_package
@watcher_remover = watcher_remover
@watcher_changer = watcher_changer
@action = action

set_work_package_headers(work_package)
message_id work_package, user
Expand Down
37 changes: 0 additions & 37 deletions app/views/user_mailer/work_package_watcher_added.html.erb

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See docs/COPYRIGHT.rdoc for more details.
++#%>
<%= t(:text_work_package_watcher_removed, id: "##{@issue.id}", watcher_remover: @watcher_remover) %>
<%= t("text_work_package_watcher_#{@action}", id: "##{@issue.id}", watcher_changer: @watcher_changer) %>
<hr />
<%= render partial: 'issue_details', locals: { issue: @issue } %>
<p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ See docs/COPYRIGHT.rdoc for more details.
++#%>
<%= t(:text_work_package_watcher_added, id: "##{@issue.id}", watcher_setter: @watcher_setter) %>
<%= t("text_work_package_watcher_#{@action}", id: "##{@issue.id}", watcher_changer: @watcher_changer) %>

----------------------------------------
<%= render partial: 'issue_details', locals: { issue: @issue } %>
Expand Down
34 changes: 0 additions & 34 deletions app/views/user_mailer/work_package_watcher_removed.text.erb

This file was deleted.

2 changes: 1 addition & 1 deletion app/workers/deliver_watcher_added_notification_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@ class DeliverWatcherAddedNotificationJob < DeliverWatcherNotificationJob
def render_mail(recipient:, sender:)
return unless watcher

UserMailer.work_package_watcher_added(watcher.watchable, recipient, sender)
UserMailer.work_package_watcher_changed(watcher.watchable, recipient, sender, 'added')
end
end
2 changes: 1 addition & 1 deletion app/workers/deliver_watcher_removed_notification_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@ def perform(watcher_attributes, recipient_id, watcher_remover_id)
def render_mail(recipient:, sender:)
return unless watcher

UserMailer.work_package_watcher_removed(watcher.watchable, recipient, sender)
UserMailer.work_package_watcher_changed(watcher.watchable, recipient, sender, 'removed')
end
end
4 changes: 2 additions & 2 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2315,8 +2315,8 @@ en:
text_work_package_category_destroy_question: "Some work packages (%{count}) are assigned to this category. What do you want to do?"
text_work_package_category_reassign_to: "Reassign work packages to this category"
text_work_package_updated: "Work package %{id} has been updated by %{author}."
text_work_package_watcher_added: "You have been added as a watcher to Work package %{id} by %{watcher_setter}."
text_work_package_watcher_removed: "You have been removed from watchers of Work package %{id} by %{watcher_remover}."
text_work_package_watcher_added: "You have been added as a watcher to Work package %{id} by %{watcher_changer}."
text_work_package_watcher_removed: "You have been removed from watchers of Work package %{id} by %{watcher_changer}."
text_work_packages_destroy_confirmation: "Are you sure you want to delete the selected work package(s)?"
text_work_packages_ref_in_commit_messages: "Referencing and fixing work packages in commit messages"
text_journal_added: "%{label} %{value} added"
Expand Down
7 changes: 4 additions & 3 deletions lib/services/remove_watcher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,13 @@ def initialize(work_package, user)
end

def run(success: -> {}, failure: -> {})
if @work_package.watcher_users.include?(@user)
@watcher = @work_package.watchers.find_by_user_id(@user.id)
watcher = @work_package.watchers.find_by_user_id(@user.id)

if watcher.present?
@work_package.watcher_users.delete(@user)
success.call
OpenProject::Notifications.send('watcher_removed',
watcher: @watcher,
watcher: watcher,
watcher_remover: User.current)
else
failure.call
Expand Down
32 changes: 14 additions & 18 deletions spec/mailers/user_mailer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,10 @@
end

shared_examples_for 'mail is sent' do
let(:letters_sent_count) { 1 }

it 'actually sends a mail' do
expect(ActionMailer::Base.deliveries.size).to eql(1)
expect(ActionMailer::Base.deliveries.size).to eql(letters_sent_count)
end

it 'is sent to the recipient' do
Expand All @@ -66,6 +68,12 @@
end
end

shared_examples_for 'multiple mails are sent' do |set_letters_sent_count|
it_behaves_like 'mail is sent' do
let(:letters_sent_count) { set_letters_sent_count }
end
end

shared_examples_for 'mail is not sent' do
it 'sends no mail' do
expect(ActionMailer::Base.deliveries.size).to eql(0)
Expand Down Expand Up @@ -130,26 +138,14 @@
it_behaves_like 'does only send mails to author if permitted'
end

describe '#work_package_watcher_added' do
let(:watcher_setter) { user }
describe '#work_package_watcher_changed' do
let(:watcher_changer) { user }
before do
UserMailer.work_package_watcher_added(work_package, recipient, watcher_setter).deliver_now
UserMailer.work_package_watcher_changed(work_package, recipient, watcher_changer, 'added').deliver_now
UserMailer.work_package_watcher_changed(work_package, recipient, watcher_changer, 'removed').deliver_now
end

it_behaves_like 'mail is sent'

it 'contains the WP subject in the mail subject' do
expect(ActionMailer::Base.deliveries.first.subject).to include(work_package.subject)
end
end

describe '#work_package_watcher_removed' do
let(:watcher_remover) { user }
before do
UserMailer.work_package_watcher_removed(work_package, recipient, watcher_remover).deliver_now
end

it_behaves_like 'mail is sent'
include_examples 'multiple mails are sent', 2

it 'contains the WP subject in the mail subject' do
expect(ActionMailer::Base.deliveries.first.subject).to include(work_package.subject)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@

require 'spec_helper'

shared_examples "DeliverWatcherNotificationJob" do |mailer_method_name|
let(:mailer_method_name) { mailer_method_name }
shared_examples "DeliverWatcherNotificationJob" do |action|
let(:action) { action }
let(:project) { FactoryBot.create(:project) }
let(:role) { FactoryBot.create(:role, permissions: [:view_work_packages]) }
let(:watcher_changer) { FactoryBot.create(:user) }
Expand All @@ -44,14 +44,15 @@

before do
# make sure no actual calls make it into the UserMailer
allow(UserMailer).to receive(mailer_method_name)
allow(UserMailer).to receive(:work_package_watcher_changed)
.and_return(double('mail', deliver_now: nil))
end

it 'sends a mail' do
expect(UserMailer).to receive(mailer_method_name).with(work_package,
watcher_user,
watcher_changer)
expect(UserMailer).to receive(:work_package_watcher_changed).with(work_package,
watcher_user,
watcher_changer,
action)
subject
end

Expand All @@ -60,7 +61,7 @@
before do
mail = double('mail')
allow(mail).to receive(:deliver_now).and_raise(SocketError)
expect(UserMailer).to receive(mailer_method_name).and_return(mail)
expect(UserMailer).to receive(:work_package_watcher_changed).and_return(mail)
end

it 'raises the error' do
Expand All @@ -71,13 +72,13 @@
end

describe DeliverWatcherRemovedNotificationJob, type: :model do
include_examples "DeliverWatcherNotificationJob", :work_package_watcher_removed do
include_examples "DeliverWatcherNotificationJob", 'removed' do
let(:watcher_parameter) { watcher.attributes }
end
end

describe DeliverWatcherAddedNotificationJob, type: :model do
include_examples "DeliverWatcherNotificationJob", :work_package_watcher_added do
include_examples "DeliverWatcherNotificationJob", 'added' do
let(:watcher_parameter) { watcher }
end
end

0 comments on commit b503f57

Please sign in to comment.