diff --git a/app/models/activity.rb b/app/models/activity.rb index 047ccb7dd..0fc35ad11 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -2,7 +2,7 @@ class Activity < ActiveRecord::Base belongs_to :actionable, -> { with_hidden }, polymorphic: true belongs_to :user, -> { with_hidden } - VALID_ACTIONS = %w( hide block restore ) + VALID_ACTIONS = %w( hide block restore valuate ) validates :action, inclusion: {in: VALID_ACTIONS} @@ -10,6 +10,7 @@ class Activity < ActiveRecord::Base scope :on_debates, -> { where(actionable_type: 'Debate') } scope :on_users, -> { where(actionable_type: 'User') } scope :on_comments, -> { where(actionable_type: 'Comment') } + scope :on_budget_investments, -> { where(actionable_type: 'Budget::Investment') } scope :for_render, -> { includes(user: [:moderator, :administrator]).includes(:actionable) } def self.log(user, action, actionable) diff --git a/spec/models/activity_spec.rb b/spec/models/activity_spec.rb index 0c7b99027..44ecc6ffd 100644 --- a/spec/models/activity_spec.rb +++ b/spec/models/activity_spec.rb @@ -56,11 +56,12 @@ describe Activity do activity3 = create(:activity, user: user1, action: "hide", actionable: create(:proposal)) activity4 = create(:activity, user: user1, action: "hide", actionable: create(:comment)) activity5 = create(:activity, user: user1, action: "block", actionable: create(:user)) + activity6 = create(:activity, user: user1, action: "valuate", actionable: create(:budget_investment)) create_list(:activity, 3) - expect(Activity.by(user1).size).to eq 5 + expect(Activity.by(user1).size).to eq 6 - [activity1, activity2, activity3, activity4, activity5].each do |a| + [activity1, activity2, activity3, activity4, activity5, activity6].each do |a| expect(Activity.by(user1)).to include(a) end end @@ -68,20 +69,23 @@ describe Activity do describe "scopes by actionable" do it "should filter by actionable type" do - on_proposal = create(:activity, actionable: create(:proposal)) - on_debate = create(:activity, actionable: create(:debate)) - on_comment = create(:activity, actionable: create(:comment)) - on_user = create(:activity, actionable: create(:user)) + on_proposal = create(:activity, actionable: create(:proposal)) + on_debate = create(:activity, actionable: create(:debate)) + on_comment = create(:activity, actionable: create(:comment)) + on_user = create(:activity, actionable: create(:user)) + on_investment = create(:activity, actionable: create(:budget_investment)) expect(Activity.on_proposals.size).to eq 1 expect(Activity.on_debates.size).to eq 1 expect(Activity.on_comments.size).to eq 1 expect(Activity.on_users.size).to eq 1 + expect(Activity.on_budget_investments.size).to eq 1 expect(Activity.on_proposals.first).to eq on_proposal expect(Activity.on_debates.first).to eq on_debate expect(Activity.on_comments.first).to eq on_comment expect(Activity.on_users.first).to eq on_user + expect(Activity.on_budget_investments.first).to eq on_investment end end