Add acceptance tests for plugin outlets

This commit is contained in:
Robin Ward 2016-11-22 14:02:47 -05:00
parent 86deec3528
commit 217007ff54
4 changed files with 69 additions and 0 deletions

View File

@ -61,6 +61,11 @@ function findOutlets(collection, callback) {
});
}
export function clearCache() {
_connectorCache = null;
_rawCache = null;
}
function buildConnectorCache() {
_connectorCache = {};
_rawCache = {};

View File

@ -0,0 +1,28 @@
import { acceptance } from "helpers/qunit-helpers";
import { clearCache } from 'discourse/helpers/plugin-outlet';
const HELLO = 'javascripts/multi-test/connectors/user-profile-primary/hello';
const GOODBYE = 'javascripts/multi-test/connectors/user-profile-primary/goodbye';
acceptance("Plugin Outlet - Multi Template", {
setup() {
Ember.TEMPLATES[HELLO] = Ember.HTMLBars.compile(`<span class='hello-span'>Hello</span>`);
Ember.TEMPLATES[GOODBYE] = Ember.HTMLBars.compile(`<span class='bye-span'>Goodbye</span>`);
},
teardown() {
delete Ember.TEMPLATES[HELLO];
delete Ember.TEMPLATES[GOODBYE];
clearCache();
}
});
test("Renders a template into the outlet", assert => {
visit("/users/eviltrout");
andThen(() => {
assert.ok(find('.user-profile-primary-outlet.hello').length === 1, 'it has class names');
assert.ok(find('.user-profile-primary-outlet.goodbye').length === 1, 'it has class names');
assert.equal(find('.hello-span').text(), 'Hello', 'it renders into the outlet');
assert.equal(find('.bye-span').text(), 'Goodbye', 'it renders into the outlet');
});
});

View File

@ -0,0 +1,32 @@
import { acceptance } from "helpers/qunit-helpers";
import { clearCache } from 'discourse/helpers/plugin-outlet';
const CONNECTOR = 'javascripts/single-test/connectors/user-profile-primary/hello';
acceptance("Plugin Outlet - Single Template", {
setup() {
Ember.TEMPLATES[CONNECTOR] = Ember.HTMLBars.compile(
`
<span class='hello-username'>{{model.username}}</span>
<button class='hello-check-email' {{action "checkEmail" model}}></button>
<span class='hello-email'>{{model.email}}</span>
`
);
},
teardown() {
delete Ember.TEMPLATES[CONNECTOR];
clearCache();
}
});
test("Renders a template into the outlet", assert => {
visit("/users/eviltrout");
andThen(() => {
assert.ok(find('.user-profile-primary-outlet.hello').length === 1, 'it has class names');
assert.equal(find('.hello-username').text(), 'eviltrout', 'it renders into the outlet');
});
click('.hello-check-email');
andThen(() => {
assert.equal(find('.hello-email').text(), 'eviltrout@example.com', 'actions delegate properly');
});
});

View File

@ -63,6 +63,10 @@ export default function() {
}] });
});
this.get(`/users/eviltrout/emails.json`, () => {
return response({ email: 'eviltrout@example.com' });
});
this.get('/users/eviltrout.json', () => {
const json = fixturesByUrl['/users/eviltrout.json'];
json.user.can_edit = loggedIn();