From d1b63e3056437143b038a3774b44f840316b8fdf Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Thu, 13 Mar 2025 10:51:02 +1000 Subject: [PATCH] DEV: Delete topic map specs (#31785) These specs are causing far more flakes and trouble than they are worth, I think it's just the killer combination of relying on messagebus and background jobs along with the specs being quite big. Let's just get rid of them... --- spec/system/private_message_map_spec.rb | 169 ------------------------ spec/system/topic_map_spec.rb | 83 ------------ 2 files changed, 252 deletions(-) delete mode 100644 spec/system/private_message_map_spec.rb delete mode 100644 spec/system/topic_map_spec.rb diff --git a/spec/system/private_message_map_spec.rb b/spec/system/private_message_map_spec.rb deleted file mode 100644 index 7f955d9aa25..00000000000 --- a/spec/system/private_message_map_spec.rb +++ /dev/null @@ -1,169 +0,0 @@ -# frozen_string_literal: true - -describe "Topic Map - Private Message", type: :system do - fab!(:user) { Fabricate(:admin, refresh_auto_groups: true) } - fab!(:other_user_1) { Fabricate(:user, refresh_auto_groups: true) } - fab!(:other_user_2) { Fabricate(:user, refresh_auto_groups: true) } - fab!(:other_user_3) { Fabricate(:user, refresh_auto_groups: true) } - fab!(:other_user_4) { Fabricate(:user, refresh_auto_groups: true) } - fab!(:other_user_5) { Fabricate(:user, refresh_auto_groups: true) } - fab!(:last_post_user) { Fabricate(:user, refresh_auto_groups: true) } - fab!(:topic) do - Fabricate( - :private_message_topic, - created_at: 1.day.ago, - user: user, - topic_allowed_users: [ - Fabricate.build(:topic_allowed_user, user: user), - Fabricate.build(:topic_allowed_user, user: other_user_1), - Fabricate.build(:topic_allowed_user, user: other_user_2), - Fabricate.build(:topic_allowed_user, user: other_user_3), - Fabricate.build(:topic_allowed_user, user: other_user_4), - Fabricate.build(:topic_allowed_user, user: other_user_5), - Fabricate.build(:topic_allowed_user, user: last_post_user), - ], - ) - end - fab!(:original_post) { Fabricate(:post, topic: topic, user: user, created_at: 1.day.ago) } - - let(:topic_page) { PageObjects::Pages::Topic.new } - let(:topic_map) { PageObjects::Components::TopicMap.new } - let(:private_message_map) { PageObjects::Components::PrivateMessageMap.new } - let(:private_message_invite_modal) { PageObjects::Modals::PrivateMessageInvite.new } - let(:private_message_remove_participant_modal) do - PageObjects::Modals::PrivateMessageRemoveParticipant.new - end - - def avatar_url(user, size) - URI(user.avatar_template_url.gsub("{size}", size.to_s)).path - end - - it "updates the various topic stats, avatars" do - Jobs.run_immediately! - freeze_time - sign_in(user) - topic_page.visit_topic(topic) - - # topic map appears after OP - expect(topic_page).to have_topic_map - - # user count - expect(topic_map).to have_no_users - [other_user_1, other_user_2, other_user_3, other_user_4, other_user_5].each do |usr| - Fabricate(:post, topic: topic, user: usr, created_at: 1.day.ago) - end - page.refresh - expect(topic_map.users_count).to eq 6 - - sign_in(last_post_user) - topic_page.visit_topic_and_open_composer(topic) - # fabricating posts doesn't update the last post details - topic_page.send_reply("this is a cool-cat post") - selector = topic_page.post_by_number_selector(7) - expect(page).to have_css(selector) - topic_page.visit_topic(topic) - expect(topic_map.users_count).to eq 7 - - # avatars details with post counts - 2.times { Fabricate(:post, user: user, topic: topic) } - Fabricate(:post, user: last_post_user, topic: topic) - page.refresh - avatars = topic_map.avatars_details - expect(avatars.length).to eq 5 # max no. of avatars in a collapsed map - - expanded_avatars = topic_map.expanded_avatars_details - expect(expanded_avatars.length).to eq 7 - expect(expanded_avatars[0]).to have_selector("img[src=\"#{avatar_url(user, 48)}\"]") - expect(expanded_avatars[0].find(".post-count").text).to eq "3" - expect(expanded_avatars[1]).to have_selector("img[src=\"#{avatar_url(last_post_user, 48)}\"]") - expect(expanded_avatars[1].find(".post-count").text).to eq "2" - expect(expanded_avatars[2]).to have_no_css(".post-count") - - # views count - sign_in(other_user_1) - topic_page.visit_topic(topic) - try_until_success { expect(TopicViewItem.count).to eq(2) } - page.refresh - expect(topic_map.views_count).to eq(2) - - # likes count - expect(topic_map).to have_no_likes - Fabricate(:post, topic: topic, like_count: 5) - page.refresh - expect(topic_map).to have_no_likes - topic_page.click_like_reaction_for(original_post) - expect(topic_map.likes_count).to eq 6 - end - - it "has private message map that shows correct participants and allows editing of participant invites" do - skip_on_ci!(<<~REASON) - Failing on CI quite consistently with the following error: - `expected to find link "anne1" with href "/u/anne1" within # but there were no matches` - REASON - - freeze_time - sign_in(user) - topic_page.visit_topic(topic) - - expect(topic_page).to have_private_message_map - - # participants' links and avatars - private_message_map - .participants_details - .zip( - [ - user, - other_user_1, - other_user_2, - other_user_3, - other_user_4, - other_user_5, - last_post_user, - ], - ) do |details, usr| - expect(details).to have_link(usr.username, href: "/u/#{usr.username}") - expect(details.find(".trigger-user-card")).to have_selector( - "img[src=\"#{avatar_url(usr, 24)}\"]", - ) - end - - # toggle ability to edit participants - private_message_map.toggle_edit_participants_button - expect(private_message_map).to have_add_participants_button - private_message_map.toggle_edit_participants_button - expect(private_message_map).to have_no_add_participants_button - - # removing participants - private_message_map.toggle_edit_participants_button - private_message_map.participants_details.each do |details| - expect(details).to have_css(".remove-invited .d-icon-xmark") - end - private_message_map.click_remove_participant_button(last_post_user) - expect(private_message_remove_participant_modal).to be_open - expect(private_message_remove_participant_modal.body).to have_text( - I18n.t("js.private_message_info.remove_allowed_user", name: last_post_user.username), - ) - private_message_remove_participant_modal.cancel - expect(private_message_remove_participant_modal).to be_closed - expect(private_message_map).to have_participant_details_for(last_post_user) - private_message_map.click_remove_participant_button(last_post_user) - expect(private_message_remove_participant_modal).to be_open - private_message_remove_participant_modal.confirm_removal - expect(private_message_map).to have_no_participant_details_for(last_post_user) - - # adding participants - expect { - expect(private_message_map).to have_add_participants_button - private_message_map.click_add_participants_button - expect(private_message_invite_modal).to be_open - private_message_invite_modal.select_invitee(other_user_1) - private_message_invite_modal.click_primary_button - expect(private_message_invite_modal).to have_invitee_already_exists_error - private_message_invite_modal.select_invitee(last_post_user) - private_message_invite_modal.click_primary_button #sends invite - expect(private_message_invite_modal).to have_successful_invite_message - private_message_invite_modal.click_primary_button #closes modal - expect(private_message_invite_modal).to be_closed - }.to change(private_message_map, :participants_count).by 1 - end -end diff --git a/spec/system/topic_map_spec.rb b/spec/system/topic_map_spec.rb deleted file mode 100644 index 497928130cf..00000000000 --- a/spec/system/topic_map_spec.rb +++ /dev/null @@ -1,83 +0,0 @@ -# frozen_string_literal: true -# -describe "Topic Map", type: :system do - fab!(:user) { Fabricate(:user, refresh_auto_groups: true) } - fab!(:topic) { Fabricate(:topic, user: user, created_at: 2.day.ago) } - fab!(:original_post) { Fabricate(:post, topic: topic, user: user, created_at: 1.day.ago) } - - fab!(:other_user) { Fabricate(:user, refresh_auto_groups: true) } - fab!(:last_post_user) { Fabricate(:user, refresh_auto_groups: true) } - - let(:topic_page) { PageObjects::Pages::Topic.new } - let(:topic_map) { PageObjects::Components::TopicMap.new } - - def avatar_url(user, size) - URI(user.avatar_template_url.gsub("{size}", size.to_s)).path - end - - it "updates the various topic stats, avatars" do - Jobs.run_immediately! - freeze_time - sign_in(user) - topic_page.visit_topic(topic) - - expect(topic_page).to have_topic_map - page.refresh - expect(topic_page).to have_topic_map - expect(topic_map).to have_no_users - - Fabricate(:post, topic: topic, created_at: 1.day.ago) - page.refresh - - # bottom map, avatars details with post counts - expect(topic_map).to have_no_bottom_map - - 2.times { Fabricate(:post, topic: topic, created_at: 1.day.ago, like_count: 1) } - Fabricate(:post, topic: topic, created_at: 2.day.ago) - Fabricate(:post, topic: topic, created_at: 1.day.ago, like_count: 3) - page.refresh - - expect(topic_map.users_count).to eq 6 - - # user count - Fabricate(:post, topic: topic, user: user, created_at: 1.day.ago) - sign_in(last_post_user) - topic_page.visit_topic_and_open_composer(topic) - # fabricating posts doesn't update the last post details - topic_page.send_reply("this is a cool-cat post") - selector = topic_page.post_by_number_selector(6) - expect(page).to have_css(selector) - topic_page.visit_topic(topic) - expect(topic_map.users_count).to eq 7 - - Fabricate(:post, topic: topic) - Fabricate(:post, user: user, topic: topic) - Fabricate(:post, user: last_post_user, topic: topic) - page.refresh - - expect(topic_map).to have_bottom_map - - avatars = topic_map.avatars_details - expect(avatars.length).to eq 5 # max no. of avatars in a collapsed map - - expanded_avatars = topic_map.expanded_avatars_details - expect(expanded_avatars.length).to eq 8 - expect(expanded_avatars[0]).to have_selector("img[src=\"#{avatar_url(user, 48)}\"]") - expect(expanded_avatars[0].find(".post-count").text).to eq "3" - expect(expanded_avatars[1]).to have_selector("img[src=\"#{avatar_url(last_post_user, 48)}\"]") - expect(expanded_avatars[1].find(".post-count").text).to eq "2" - expect(expanded_avatars[2]).to have_no_css(".post-count") - - # views count - sign_in(other_user) - topic_page.visit_topic(topic) - try_until_success { expect(TopicViewItem.count).to eq(2) } - page.refresh - expect(topic_map.views_count).to eq(2) - - # likes count - expect(topic_map).to have_no_likes - topic_page.click_like_reaction_for(original_post) - expect(topic_map.likes_count).to eq 6 - end -end