diff --git a/app/controllers/admin/system_emails_controller.rb b/app/controllers/admin/system_emails_controller.rb index c7d1c8dd0..d079c171b 100644 --- a/app/controllers/admin/system_emails_controller.rb +++ b/app/controllers/admin/system_emails_controller.rb @@ -1,6 +1,6 @@ class Admin::SystemEmailsController < Admin::BaseController - before_action :load_system_email, only: [:view, :preview_pending] + before_action :load_system_email, only: [:view, :preview_pending, :moderate_pending] def index @system_emails = { diff --git a/app/models/proposal_notification.rb b/app/models/proposal_notification.rb index f0a6850f7..f057b9cb8 100644 --- a/app/models/proposal_notification.rb +++ b/app/models/proposal_notification.rb @@ -55,4 +55,9 @@ class ProposalNotification < ActiveRecord::Base self.update(author_id: self.proposal.author_id) if self.proposal end + def moderate_system_email(moderator) + Notification.where(notifiable_type: 'ProposalNotification', notifiable: self).destroy_all + Activity.log(moderator, :hide, self) + end + end diff --git a/app/views/admin/system_emails/preview_pending/_proposal_notification_digest.html.erb b/app/views/admin/system_emails/preview_pending/_proposal_notification_digest.html.erb index 7cdd4d66d..273dee0c5 100644 --- a/app/views/admin/system_emails/preview_pending/_proposal_notification_digest.html.erb +++ b/app/views/admin/system_emails/preview_pending/_proposal_notification_digest.html.erb @@ -1,33 +1,40 @@ <% if preview.proposal.present? %> -
-
-
- <%= t("admin.shared.proposal") %>
- <%= link_to preview.proposal.title, proposal_url(preview.proposal) %> -
-
- <%= t("admin.shared.title") %>
- <%= link_to preview.title, proposal_url(preview.proposal, anchor: "tab-notifications") %> +
+
+
+
+ <%= t("admin.shared.proposal") %>
+ <%= link_to preview.proposal.title, proposal_url(preview.proposal) %> +
+
+ <%= t("admin.shared.title") %>
+ <%= link_to preview.title, proposal_url(preview.proposal, anchor: "tab-notifications") %> +
+
+ <%= t("admin.shared.author") %>
+ <%= preview.proposal.author&.username || '-' %> +
+
+ <%= t("admin.shared.created_at") %>
+ <%= l(preview.created_at, format: :datetime) %> +
-
-
- <%= t("admin.shared.author") %>
- <%= preview.proposal.author&.username || '-' %> -
-
- <%= t("admin.shared.created_at") %>
- <%= l(preview.created_at, format: :datetime) %> -
-
-
-
-
- <%= t("admin.shared.content") %> -

- <%= preview.body %> -

+
+
+ <%= t("admin.shared.content") %> +

+ <%= preview.body %> +

+
+ + <%= link_to t("admin.system_emails.preview_pending.moderate_pending"), + admin_system_email_moderate_pending_path(system_email_id: 'proposal_notification_digest', + id: preview.id), + method: :put, + class: "button hollow float-right" %>
+
<% end %> diff --git a/spec/models/proposal_notification_spec.rb b/spec/models/proposal_notification_spec.rb index 60021d95c..d7ba529c4 100644 --- a/spec/models/proposal_notification_spec.rb +++ b/spec/models/proposal_notification_spec.rb @@ -152,5 +152,21 @@ describe ProposalNotification do end + describe "#moderate_system_email" do + let(:admin) { create(:administrator) } + let(:proposal) { create(:proposal) } + let(:proposal_notification) { build(:proposal_notification, proposal: proposal) } + let(:notification) { create(:notification, notifiable: proposal_notification) } + + it "removes all notifications related to the proposal notification" do + proposal_notification.moderate_system_email(admin.user) + expect(Notification.all.count).to be(0) + end + + it "records the moderation action in the Activity table" do + proposal_notification.moderate_system_email(admin.user) + expect(Activity.last.actionable_type).to eq('ProposalNotification') + end + end end end