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...
This commit is contained in:
Martin Brennan
2025-03-13 10:51:02 +10:00
committed by GitHub
parent 159aa43cfe
commit d1b63e3056
2 changed files with 0 additions and 252 deletions

View File

@ -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 #<Capybara::Node::Element tag="div" path="..."> 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

View File

@ -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