mirror of
https://github.com/discourse/discourse.git
synced 2024-12-02 19:03:44 +08:00
41 lines
1.2 KiB
Ruby
41 lines
1.2 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
describe "Topic list focus", type: :system do
|
||
|
let!(:topics) { Fabricate.times(10, :post).map(&:topic) }
|
||
|
|
||
|
before { Fabricate(:admin) }
|
||
|
|
||
|
let(:discovery) { PageObjects::Pages::Discovery.new }
|
||
|
let(:topic) { PageObjects::Pages::Topic.new }
|
||
|
|
||
|
def focussed_topic_id
|
||
|
page.evaluate_script(
|
||
|
"document.activeElement.closest('.topic-list-item')?.dataset.topicId",
|
||
|
)&.to_i
|
||
|
end
|
||
|
|
||
|
it "refocusses last clicked topic when going back to topic list" do
|
||
|
visit("/")
|
||
|
expect(page).to have_css("body.navigation-topics")
|
||
|
expect(discovery.topic_list).to have_topics
|
||
|
|
||
|
# Click a topic
|
||
|
discovery.topic_list.visit_topic(topics[5])
|
||
|
expect(topic).to have_topic_title(topics[5].title)
|
||
|
|
||
|
# Going back to the topic-list should re-focus
|
||
|
page.go_back
|
||
|
expect(page).to have_css("body.navigation-topics")
|
||
|
expect(focussed_topic_id).to eq(topics[5].id)
|
||
|
|
||
|
# Click topic again
|
||
|
discovery.topic_list.visit_topic(topics[5])
|
||
|
expect(topic).to have_topic_title(topics[5].title)
|
||
|
|
||
|
# Visiting a topic list another way should not focus
|
||
|
find(".sidebar-section-link[data-link-name='everything']").click
|
||
|
expect(page).to have_css("body.navigation-topics")
|
||
|
expect(focussed_topic_id).to eq(nil)
|
||
|
end
|
||
|
end
|