We were very inconsistent regarding these rules. Personally I prefer no empty lines around blocks, clases, etc... as recommended by the Ruby style guide [1], and they're the default values in rubocop, so those are the settings I'm applying. The exception is the `private` access modifier, since we were leaving empty lines around it most of the time. That's the default rubocop rule as well. Personally I don't have a strong preference about this one. [1] https://rubystyle.guide/#empty-lines-around-bodies
82 lines
3.4 KiB
Ruby
82 lines
3.4 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Activity do
|
|
it "is valid for different actionables" do
|
|
expect(build(:activity, actionable: create(:proposal))).to be_valid
|
|
expect(build(:activity, actionable: create(:debate))).to be_valid
|
|
expect(build(:activity, actionable: create(:comment))).to be_valid
|
|
expect(build(:activity, actionable: create(:user))).to be_valid
|
|
expect(build(:activity, actionable: create(:newsletter))).to be_valid
|
|
end
|
|
|
|
it "is a valid only with allowed actions" do
|
|
expect(build(:activity, action: "hide")).to be_valid
|
|
expect(build(:activity, action: "block")).to be_valid
|
|
expect(build(:activity, action: "restore")).to be_valid
|
|
expect(build(:activity, action: "email")).to be_valid
|
|
expect(build(:activity, action: "dissapear")).not_to be_valid
|
|
end
|
|
|
|
describe "log" do
|
|
it "creates an activity entry" do
|
|
user = create(:user)
|
|
proposal = create(:proposal)
|
|
|
|
expect { Activity.log(user, :hide, proposal) }.to change { Activity.count }.by(1)
|
|
|
|
activity = Activity.last
|
|
expect(activity.user_id).to eq(user.id)
|
|
expect(activity.action).to eq("hide")
|
|
expect(activity.actionable).to eq(proposal)
|
|
end
|
|
end
|
|
|
|
describe "on" do
|
|
it "lists all activity on an actionable object" do
|
|
proposal = create(:proposal)
|
|
activity1 = create(:activity, action: "hide", actionable: proposal)
|
|
activity2 = create(:activity, action: "restore", actionable: proposal)
|
|
activity3 = create(:activity, action: "hide", actionable: proposal)
|
|
create(:activity, action: "restore", actionable: create(:debate))
|
|
create(:activity, action: "hide", actionable: create(:proposal))
|
|
create(:activity, action: "hide", actionable: create(:comment))
|
|
create(:activity, action: "block", actionable: create(:user))
|
|
|
|
expect(Activity.on(proposal)).to match_array [activity1, activity2, activity3]
|
|
end
|
|
end
|
|
|
|
describe "by" do
|
|
it "lists all activity of a user" do
|
|
user1 = create(:user)
|
|
activity1 = create(:activity, user: user1)
|
|
activity2 = create(:activity, user: user1, action: "restore", actionable: create(:debate))
|
|
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)).to match_array(
|
|
[activity1, activity2, activity3, activity4, activity5, activity6]
|
|
)
|
|
end
|
|
end
|
|
|
|
describe "scopes by actionable" do
|
|
it "filters 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_investment = create(:activity, actionable: create(:budget_investment))
|
|
|
|
expect(Activity.on_proposals).to eq [on_proposal]
|
|
expect(Activity.on_debates).to eq [on_debate]
|
|
expect(Activity.on_comments).to eq [on_comment]
|
|
expect(Activity.on_users).to eq [on_user]
|
|
expect(Activity.on_budget_investments).to eq [on_investment]
|
|
end
|
|
end
|
|
end
|