mirror of
https://github.com/discourse/discourse.git
synced 2025-06-04 11:11:13 +08:00

Sharing a controller seems to make query params behave more weirdly than normal. This change lets Ember create a separate controller instance for each route, even though they will still share the same class.
77 lines
2.6 KiB
Ruby
77 lines
2.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe "Discovery list", type: :system do
|
|
fab!(:topics) { Fabricate.times(10, :post).map(&:topic) }
|
|
fab!(:reply) { Fabricate(:post, topic: topics.first) }
|
|
|
|
let(:discovery) { PageObjects::Pages::Discovery.new }
|
|
|
|
def nth_topic_id(n)
|
|
discovery.topic_list.find(".topic-list-item:nth-of-type(#{n})")["data-topic-id"]
|
|
end
|
|
|
|
it "can sort a topic list by activity" do
|
|
visit "/latest"
|
|
expect(discovery.topic_list).to have_topics(count: 10)
|
|
newest_topic_id = nth_topic_id(1)
|
|
|
|
find("th[data-sort-order='activity']").click
|
|
|
|
expect(page).to have_css("th[data-sort-order='activity'][aria-sort=ascending]")
|
|
expect(nth_topic_id(10)).to eq(newest_topic_id)
|
|
|
|
find("th[data-sort-order='activity']").click
|
|
expect(page).to have_css("th[data-sort-order='activity'][aria-sort=descending]")
|
|
expect(nth_topic_id(1)).to eq(newest_topic_id)
|
|
end
|
|
|
|
it "can sort a topic list by replies" do
|
|
visit "/latest"
|
|
expect(discovery.topic_list).to have_topics(count: 10)
|
|
|
|
find("th[data-sort-order='posts']").click
|
|
|
|
expect(page).to have_css("th[data-sort-order='posts'][aria-sort=descending]")
|
|
expect(nth_topic_id(1)).to eq(reply.topic_id.to_s)
|
|
|
|
find("th[data-sort-order='posts']").click
|
|
expect(page).to have_css("th[data-sort-order='posts'][aria-sort=ascending]")
|
|
expect(nth_topic_id(10)).to eq(reply.topic_id.to_s)
|
|
end
|
|
|
|
describe "bulk topic options" do
|
|
fab!(:user)
|
|
fab!(:topic) { Fabricate(:topic, user: user) }
|
|
fab!(:post1) { create_post(user: user, topic: topic) }
|
|
fab!(:post2) { create_post(topic: topic) }
|
|
|
|
it "should correctly show/hide the bulk select toggle for regular users" do
|
|
sign_in(user)
|
|
visit("/unread")
|
|
|
|
# The bulk select toggle should be visible, the user has an unread post
|
|
find("button.bulk-select").click
|
|
expect(page).to have_css(".topic-list-body .bulk-select")
|
|
|
|
find("#navigation-bar .latest > a").click
|
|
|
|
# No bulk select toggle or checkboxes
|
|
# this action is not available for this user in /latest
|
|
expect(page).to have_no_css(".topic-list-body .bulk-select")
|
|
expect(page).to have_no_css("button.bulk-select")
|
|
end
|
|
end
|
|
|
|
it "doesn't preserve query parameters when navigating" do
|
|
category = Fabricate(:category)
|
|
topics.each { |t| t.update(category_id: category.id) }
|
|
topics.last.update(closed: true)
|
|
|
|
visit "/latest?status=closed"
|
|
expect(discovery.topic_list).to have_topics(count: 1)
|
|
discovery.category_drop.select_row_by_value(category.id)
|
|
expect(discovery.topic_list).to have_topics(count: 10)
|
|
expect(page).to have_current_path("/c/#{category.slug}/#{category.id}")
|
|
end
|
|
end
|