import AppEvents from "discourse/lib/app-events"; import createStore from "helpers/create-store"; import { autoLoadModules } from "discourse/initializers/auto-load-modules"; import TopicTrackingState from "discourse/models/topic-tracking-state"; export default function(name, opts) { opts = opts || {}; test(name, function(assert) { const appEvents = AppEvents.create(); this.site = Discourse.Site.current(); this.registry.register("site-settings:main", Discourse.SiteSettings, { instantiate: false }); this.registry.register("app-events:main", appEvents, { instantiate: false }); this.registry.register("capabilities:main", Ember.Object); this.registry.register("site:main", this.site, { instantiate: false }); this.registry.injection("component", "siteSettings", "site-settings:main"); this.registry.injection("component", "appEvents", "app-events:main"); this.registry.injection("component", "capabilities", "capabilities:main"); this.registry.injection("component", "site", "site:main"); this.siteSettings = Discourse.SiteSettings; autoLoadModules(this.registry, this.registry); const store = createStore(); if (!opts.anonymous) { const currentUser = Discourse.User.create({ username: "eviltrout" }); this.currentUser = currentUser; this.registry.register("current-user:main", this.currentUser, { instantiate: false }); this.registry.register( "topic-tracking-state:main", TopicTrackingState.create({ currentUser }), { instantiate: false } ); } this.registry.register("service:store", store, { instantiate: false }); if (opts.beforeEach) { opts.beforeEach.call(this, store); } andThen(() => { return this.render(opts.template); }); andThen(() => { if (opts.skip) { assert.expect(0); } else { opts.test.call(this, assert); } }); }); }