import { acceptance } from "helpers/qunit-helpers"; import { extraConnectorClass } from "discourse/lib/plugin-connectors"; import { action } from "@ember/object"; const PREFIX = "javascripts/single-test/connectors"; acceptance("Plugin Outlet - Connector Class", { beforeEach() { extraConnectorClass("user-profile-primary/hello", { actions: { sayHello() { this.set("hello", "hello!"); } } }); extraConnectorClass("user-profile-primary/hi", { setupComponent() { this.appEvents.on("hi:sayHi", this, this.say); }, teardownComponent() { this.appEvents.off("hi:sayHi", this, this.say); }, @action say() { this.set("hi", "hi!"); }, @action sayHi() { this.appEvents.trigger("hi:sayHi"); } }); extraConnectorClass("user-profile-primary/dont-render", { shouldRender(args) { return args.model.get("username") !== "eviltrout"; } }); Ember.TEMPLATES[ `${PREFIX}/user-profile-primary/hello` ] = Ember.HTMLBars.compile( `{{model.username}} {{hello}}` ); Ember.TEMPLATES[ `${PREFIX}/user-profile-primary/hi` ] = Ember.HTMLBars.compile( ` {{hi}}` ); Ember.TEMPLATES[ `${PREFIX}/user-profile-primary/dont-render` ] = Ember.HTMLBars.compile(`I'm not rendered!`); }, afterEach() { delete Ember.TEMPLATES[`${PREFIX}/user-profile-primary/hello`]; delete Ember.TEMPLATES[`${PREFIX}/user-profile-primary/hi`]; delete Ember.TEMPLATES[`${PREFIX}/user-profile-primary/dont-render`]; } }); QUnit.test("Renders a template into the outlet", async assert => { await visit("/u/eviltrout"); assert.ok( find(".user-profile-primary-outlet.hello").length === 1, "it has class names" ); assert.ok( !find(".user-profile-primary-outlet.dont-render").length, "doesn't render" ); await click(".say-hello"); assert.equal( find(".hello-result").text(), "hello!", "actions delegate properly" ); await click(".say-hi"); assert.equal(find(".hi-result").text(), "hi!", "actions delegate properly"); });