# frozen_string_literal: true RSpec.describe GroupHistory do fab!(:group_history) let(:other_group_history) do Fabricate( :group_history, action: GroupHistory.actions[:remove_user_from_group], group: group_history.group, ) end describe ".with_filters" do it "should return the right records" do expect(described_class.with_filters(group_history.group)).to eq([group_history]) end it "should filter by action correctly" do other_group_history expect( described_class.with_filters(group_history.group, action: GroupHistory.actions[3]), ).to eq([other_group_history]) end it "should filter by subject correctly" do other_group_history.update!(subject: "test") expect(described_class.with_filters(group_history.group, subject: "test")).to eq( [other_group_history], ) end it "should filter by multiple filters correctly" do group_history.update!(action: GroupHistory.actions[:remove_user_from_group]) other_group_history.update!(subject: "test") expect( described_class.with_filters( group_history.group, action: GroupHistory.actions[3], subject: "test", ), ).to eq([other_group_history]) end it "should filter by target_user and acting_user correctly" do group_history other_group_history group_history_3 = Fabricate( :group_history, group: group_history.group, acting_user: other_group_history.acting_user, target_user: other_group_history.target_user, action: GroupHistory.actions[:remove_user_as_group_owner], ) expect( described_class.with_filters( group_history.group, target_user: other_group_history.target_user.username, ).sort, ).to eq([other_group_history, group_history_3]) expect( described_class.with_filters( group_history.group, acting_user: group_history.acting_user.username, ), ).to eq([group_history]) expect( described_class.with_filters( group_history.group, acting_user: group_history_3.acting_user.username, target_user: other_group_history.target_user.username, ).sort, ).to eq([other_group_history, group_history_3]) end end end