discourse/spec/system/viewing_sidebar_as_anonymous_user_spec.rb
marstall 77626c088e
UX: support links in tag descriptions (#22994)
* scrub non-a html tags from tag descriptions on create, strips all tags from tag description when displayed in tag hover

* test for tag description links

* UX: basic render-tag test

* UX: fix linting

* UX: fix linting

* fix broken tests

* Update spec/models/tag_spec.rb

Co-authored-by: Penar Musaraj <pmusaraj@gmail.com>

* UX: use has_sanitizable_fields instead of has_scrubbable_fields to ensafen tag.description

---------

Co-authored-by: Penar Musaraj <pmusaraj@gmail.com>
2023-08-16 11:43:54 -04:00

84 lines
2.9 KiB
Ruby

# frozen_string_literal: true
describe "Viewing sidebar as anonymous user", type: :system do
let(:sidebar) { PageObjects::Components::NavigationMenu::Sidebar.new }
describe "when viewing the tags section" do
fab!(:tag1) do
Fabricate(:tag, name: "tag 1", description: "tag 1 description <script>").tap do |tag|
Fabricate.times(1, :topic, tags: [tag])
end
end
fab!(:tag2) do
Fabricate(:tag, name: "tag 2").tap { |tag| Fabricate.times(2, :topic, tags: [tag]) }
end
fab!(:tag3) do
Fabricate(:tag, name: "tag 3", description: "tag 3 description").tap do |tag|
Fabricate.times(3, :topic, tags: [tag])
end
end
fab!(:tag4) do
Fabricate(:tag, name: "tag 4").tap { |tag| Fabricate.times(2, :topic, tags: [tag]) }
end
fab!(:tag5) do
Fabricate(:tag, name: "tag 5").tap { |tag| Fabricate.times(2, :topic, tags: [tag]) }
end
fab!(:tag6) do
Fabricate(:tag, name: "tag 6").tap { |tag| Fabricate.times(1, :topic, tags: [tag]) }
end
it "should not display the tags section when tagging has been disabled" do
SiteSetting.tagging_enabled = false
visit("/latest")
expect(sidebar).to have_no_tags_section
end
it "should not display the tags section when site has no top tags and `default_navigation_menu_tags` site setting has not been set" do
Tag.delete_all
visit("/latest")
expect(sidebar).to have_no_tags_section
end
it "should display the site's top tags when `default_navigation_menu_tags` site setting has not been set" do
visit("/latest")
expect(sidebar).to have_tags_section
expect(sidebar).to have_all_tags_section_link
expect(sidebar).to have_tag_section_links([tag3, tag2, tag4, tag5, tag1])
expect(sidebar).to have_tag_section_link_with_title(tag1, "tag 1 description ")
end
it "should display the site's top tags when `default_navigation_menu_tags` site setting has been set but the tags configured are hidden to the user" do
SiteSetting.default_navigation_menu_tags = "#{tag5.name}"
Fabricate(:tag_group, permissions: { "staff" => 1 }, tag_names: [tag5.name])
visit("/latest")
expect(sidebar).to have_tags_section
expect(sidebar).to have_all_tags_section_link
expect(sidebar).to have_tag_section_links([tag3, tag2, tag4, tag1, tag6])
expect(sidebar).to have_tag_section_link_with_title(tag1, "tag 1 description ")
end
it "should display the tags configured in `default_navigation_menu_tags` site setting when it has been set" do
SiteSetting.default_navigation_menu_tags = "#{tag3.name}|#{tag4.name}"
visit("/latest")
expect(sidebar).to have_tags_section
expect(sidebar).to have_all_tags_section_link
expect(sidebar).to have_tag_section_links([tag3, tag4])
expect(sidebar).to have_tag_section_link_with_title(tag3, "tag 3 description")
end
end
end