DEV: Switch to new API to render into plugin outlet (#37)

Why this change?

The renderInOutlet plugin API was introduced in Discourse core which
we will prefer to use going forward.
This commit is contained in:
Alan Guo Xiang Tan 2023-10-11 11:33:37 +08:00 committed by GitHub
parent 9076bf8aae
commit 87404864d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 58 additions and 3 deletions

View File

@ -1,2 +1,3 @@
3.1.999: bd0594108a1cfd6c11cb8af218dba9b211b44015
< 3.2.0.beta2-dev: 061adfe5ae20abbb82be711d373894c30987ec75
< 3.2.0.beta1-dev: c344d0f519bbb3660e306c50c0d1aa1a776c5e13
3.1.999: bd0594108a1cfd6c11cb8af218dba9b211b44015

View File

@ -1,7 +1,7 @@
{{#if this.shouldShow}}
<ul
class="custom-header-links
{{if @scrolledTopic 'custom-header-links--hide-links'}}"
{{if @outletArgs.attrs.topic 'custom-header-links--hide-links'}}"
>
{{#each this.links as |link|}}
<li

View File

@ -1 +0,0 @@
<CustomHeaderLinks @scrolledTopic={{@outletArgs.attrs.topic}} />

View File

@ -0,0 +1,6 @@
import { apiInitializer } from "discourse/lib/api";
import CustomHeaderLinks from "../components/custom-header-links";
export default apiInitializer("1.14.0", (api) => {
api.renderInOutlet("before-header-panel", CustomHeaderLinks);
});

View File

@ -0,0 +1,17 @@
# frozen_string_literal: true
module PageObjects
module Components
class CustomHeaderLink < PageObjects::Components::Base
CUSTOM_HEADER_LINKS_SELECTOR = ".before-header-panel-outlet .custom-header-links"
def visible?
has_css?(CUSTOM_HEADER_LINKS_SELECTOR)
end
def has_custom_header_link?(link_name, title:, href:)
expect(find(CUSTOM_HEADER_LINKS_SELECTOR)).to have_link(link_name, href:, title:)
end
end
end
end

View File

@ -0,0 +1,32 @@
# frozen_string_literal: true
require_relative "page_objects/components/custom_header_link"
RSpec.describe "Viewing Custom Header Links", system: true do
fab!(:theme) { upload_theme_component }
let!(:custom_header_link) { PageObjects::Components::CustomHeaderLink.new }
it "should display the custom header links" do
visit("/")
expect(custom_header_link).to be_visible
expect(custom_header_link).to have_custom_header_link(
"External link",
href: "https://meta.discourse.org",
title: "this link will open in a new tab",
)
expect(custom_header_link).to have_custom_header_link(
"Most Liked",
href: "/latest/?order=op_likes",
title: "Posts with the most amount of likes",
)
expect(custom_header_link).to have_custom_header_link(
"Privacy",
href: "/privacy",
title: "Our Privacy Policy",
)
end
end