From e10b262eb93025ece1dc536c705bb0cac75b4a28 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 11 May 2023 23:27:26 +0200 Subject: [PATCH] DEV: fix flakey spec (#21515) Similar fix to the one made in https://github.com/discourse/discourse/commit/aab6fb13a06835db2d07ff2f268b6e7c78eb6c4a Instead of checking last object, check against all modified objects in no specific order. --- .../handle_chat_allowed_groups_change_spec.rb | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/plugins/chat/spec/services/auto_remove/handle_chat_allowed_groups_change_spec.rb b/plugins/chat/spec/services/auto_remove/handle_chat_allowed_groups_change_spec.rb index 741312730a1..9b634f98a6d 100644 --- a/plugins/chat/spec/services/auto_remove/handle_chat_allowed_groups_change_spec.rb +++ b/plugins/chat/spec/services/auto_remove/handle_chat_allowed_groups_change_spec.rb @@ -29,7 +29,6 @@ RSpec.describe Chat::AutoRemove::HandleChatAllowedGroupsChange do context "when new_allowed_groups is empty" do let(:new_allowed_groups) { "" } - let(:action) { UserHistory.where(custom_type: "chat_auto_remove_membership").last } before do public_channel_1.add(user_1) @@ -95,11 +94,26 @@ RSpec.describe Chat::AutoRemove::HandleChatAllowedGroupsChange do it "logs a staff action" do result - expect(action).to have_attributes( - details: - "users_removed: 2\nchannel_id: #{public_channel_2.id}\nevent: chat_allowed_groups_changed", - acting_user_id: Discourse.system_user.id, - custom_type: "chat_auto_remove_membership", + + changes = + UserHistory + .where(custom_type: "chat_auto_remove_membership") + .all + .map { |uh| uh.slice(:details, :acting_user_id) } + + expect(changes).to match_array( + [ + { + details: + "users_removed: 2\nchannel_id: #{public_channel_1.id}\nevent: chat_allowed_groups_changed", + acting_user_id: Discourse.system_user.id, + }, + { + details: + "users_removed: 2\nchannel_id: #{public_channel_2.id}\nevent: chat_allowed_groups_changed", + acting_user_id: Discourse.system_user.id, + }, + ], ) end end