diff --git a/app/controllers/admin/activity_controller.rb b/app/controllers/admin/activity_controller.rb index 1d763c09d..ce9c04183 100644 --- a/app/controllers/admin/activity_controller.rb +++ b/app/controllers/admin/activity_controller.rb @@ -1,5 +1,5 @@ class Admin::ActivityController < Admin::BaseController - has_filters %w{all on_users on_proposals on_debates on_comments} + has_filters %w{all on_users on_proposals on_debates on_comments on_system_emails} def show @activity = Activity.for_render.send(@current_filter) diff --git a/app/models/activity.rb b/app/models/activity.rb index 834f7721c..afe25bed3 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -11,6 +11,7 @@ class Activity < ActiveRecord::Base scope :on_users, -> { where(actionable_type: 'User') } scope :on_comments, -> { where(actionable_type: 'Comment') } scope :on_budget_investments, -> { where(actionable_type: 'Budget::Investment') } + scope :on_system_emails, -> { where(actionable_type: 'ProposalNotification') } scope :for_render, -> { includes(user: [:moderator, :administrator]).includes(:actionable) } def self.log(user, action, actionable) diff --git a/app/models/proposal_notification.rb b/app/models/proposal_notification.rb index f057b9cb8..2532f6c4c 100644 --- a/app/models/proposal_notification.rb +++ b/app/models/proposal_notification.rb @@ -10,6 +10,7 @@ class ProposalNotification < ActiveRecord::Base validates :proposal, presence: true validate :minimum_interval + scope :with_hidden, -> { all } scope :public_for_api, -> { where(proposal_id: Proposal.public_for_api.pluck(:id)) } scope :sort_by_created_at, -> { reorder(created_at: :desc) } scope :sort_by_moderated, -> { reorder(moderated: :desc) } diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index 52dafc762..259ea7c44 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -67,6 +67,7 @@ en: on_debates: Debates on_proposals: Proposals on_users: Users + on_system_emails: System emails title: Moderator activity type: Type no_activity: There are no moderators activity. diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index bae2c43c1..00cd907a3 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -67,6 +67,7 @@ es: on_debates: Debates on_proposals: Propuestas on_users: Usuarios + on_system_emails: Emails del sistema title: Actividad de los Moderadores type: Tipo no_activity: No hay actividad de moderadores. diff --git a/spec/features/admin/activity_spec.rb b/spec/features/admin/activity_spec.rb index 5529cb464..9cfd5f9b8 100644 --- a/spec/features/admin/activity_spec.rb +++ b/spec/features/admin/activity_spec.rb @@ -331,4 +331,22 @@ feature 'Admin activity' do end end + context "System emails" do + scenario "Shows moderation activity on system emails" do + proposal = create(:proposal, title: 'Proposal A') + proposal_notification = create(:proposal_notification, proposal: proposal, + title: 'Proposal A Title', + body: 'Proposal A Notification Body') + proposal_notification.moderate_system_email(@admin.user) + + visit admin_activity_path + + within("#activity_#{Activity.last.id}") do + expect(page).to have_content(proposal_notification.title) + expect(page).to have_content("Hidden") + expect(page).to have_content(@admin.user.username) + end + end + end + end