API so that you don't have to use a global variable for pretender

This commit is contained in:
Robin Ward
2017-09-13 11:54:49 -04:00
parent a6fc42753c
commit 4f9ba874a9
3 changed files with 49 additions and 35 deletions

View File

@ -20,7 +20,7 @@ export function parsePostData(query) {
return result; return result;
}; };
function response(code, obj) { export function response(code, obj) {
if (typeof code === "object") { if (typeof code === "object") {
obj = code; obj = code;
code = 200; code = 200;
@ -28,7 +28,10 @@ function response(code, obj) {
return [code, {"Content-Type": "application/json"}, obj]; return [code, {"Content-Type": "application/json"}, obj];
} }
const success = () => response({ success: true }); export function success() {
return response({ success: true });
}
const loggedIn = () => !!Discourse.User.current(); const loggedIn = () => !!Discourse.User.current();

View File

@ -11,11 +11,11 @@ import { flushMap } from 'discourse/models/store';
import { clearRewrites } from 'discourse/lib/url'; import { clearRewrites } from 'discourse/lib/url';
function currentUser() { export function currentUser() {
return Discourse.User.create(sessionFixtures['/session/current.json'].current_user); return Discourse.User.create(sessionFixtures['/session/current.json'].current_user);
} }
function logIn() { export function logIn() {
Discourse.User.resetCurrent(currentUser()); Discourse.User.resetCurrent(currentUser());
} }
@ -39,7 +39,19 @@ function AcceptanceModal(option, _relatedTarget) {
window.bootbox.$body = $('#ember-testing'); window.bootbox.$body = $('#ember-testing');
$.fn.modal = AcceptanceModal; $.fn.modal = AcceptanceModal;
function acceptance(name, options) { let _pretenderCallbacks = [];
export function applyPretender(server, helper) {
_pretenderCallbacks.forEach(cb => cb(server, helper));
}
export function acceptance(name, options) {
options = options || {};
if (options.pretend) {
_pretenderCallbacks.push(options.pretend);
}
QUnit.module("Acceptance: " + name, { QUnit.module("Acceptance: " + name, {
beforeEach() { beforeEach() {
resetMobile(); resetMobile();
@ -49,7 +61,6 @@ function acceptance(name, options) {
resetExtraClasses(); resetExtraClasses();
const siteJson = siteFixtures['site.json'].site; const siteJson = siteFixtures['site.json'].site;
if (options) {
if (options.beforeEach) { if (options.beforeEach) {
options.beforeEach.call(this); options.beforeEach.call(this);
} }
@ -69,7 +80,6 @@ function acceptance(name, options) {
if (options.site) { if (options.site) {
Discourse.Site.resetCurrent(Discourse.Site.create(jQuery.extend(true, {}, siteJson, options.site))); Discourse.Site.resetCurrent(Discourse.Site.create(jQuery.extend(true, {}, siteJson, options.site)));
} }
}
clearOutletCache(); clearOutletCache();
clearHTMLCache(); clearHTMLCache();
@ -95,13 +105,13 @@ function acceptance(name, options) {
}); });
} }
function controllerFor(controller, model) { export function controllerFor(controller, model) {
controller = Discourse.__container__.lookup('controller:' + controller); controller = Discourse.__container__.lookup('controller:' + controller);
if (model) { controller.set('model', model ); } if (model) { controller.set('model', model ); }
return controller; return controller;
} }
function asyncTestDiscourse(text, func) { export function asyncTestDiscourse(text, func) {
QUnit.test(text, function(assert) { QUnit.test(text, function(assert) {
const done = assert.async(); const done = assert.async();
Ember.run(() => { Ember.run(() => {
@ -111,7 +121,7 @@ function asyncTestDiscourse(text, func) {
}); });
} }
function fixture(selector) { export function fixture(selector) {
if (selector) { if (selector) {
return $("#qunit-fixture").find(selector); return $("#qunit-fixture").find(selector);
} }
@ -151,7 +161,7 @@ QUnit.assert.containsInstance = function(collection, klass, message) {
}); });
}; };
function waitFor(assert, callback, timeout) { export function waitFor(assert, callback, timeout) {
timeout = timeout || 500; timeout = timeout || 500;
const done = assert.async(); const done = assert.async();
@ -160,11 +170,3 @@ function waitFor(assert, callback, timeout) {
done(); done();
}, timeout); }, timeout);
} }
export { acceptance,
controllerFor,
asyncTestDiscourse,
fixture,
logIn,
currentUser,
waitFor };

View File

@ -68,11 +68,12 @@ if (window.Logster) {
} }
var origDebounce = Ember.run.debounce, var origDebounce = Ember.run.debounce,
createPretendServer = require('helpers/create-pretender', null, null, false).default, pretender = require('helpers/create-pretender', null, null, false),
fixtures = require('fixtures/site-fixtures', null, null, false).default, fixtures = require('fixtures/site-fixtures', null, null, false).default,
flushMap = require('discourse/models/store', null, null, false).flushMap, flushMap = require('discourse/models/store', null, null, false).flushMap,
ScrollingDOMMethods = require('discourse/mixins/scrolling', null, null, false).ScrollingDOMMethods, ScrollingDOMMethods = require('discourse/mixins/scrolling', null, null, false).ScrollingDOMMethods,
_DiscourseURL = require('discourse/lib/url', null, null, false).default, _DiscourseURL = require('discourse/lib/url', null, null, false).default,
applyPretender = require('helpers/qunit-helpers', null, null, false).applyPretender,
server; server;
function dup(obj) { function dup(obj) {
@ -87,7 +88,15 @@ function resetSite() {
} }
QUnit.testStart(function(ctx) { QUnit.testStart(function(ctx) {
server = createPretendServer(); server = pretender.default();
var helper = {
parsePostData: pretender.parsePostData,
response: pretender.response,
success: pretender.success
};
applyPretender(server, helper);
// Allow our tests to change site settings and have them reset before the next test // Allow our tests to change site settings and have them reset before the next test
Discourse.SiteSettings = dup(Discourse.SiteSettingsOriginal); Discourse.SiteSettings = dup(Discourse.SiteSettingsOriginal);