mirror of
https://github.com/discourse/discourse.git
synced 2025-05-23 11:01:11 +08:00
API so that you don't have to use a global variable for pretender
This commit is contained in:
@ -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();
|
||||||
|
|
||||||
|
|
||||||
|
@ -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,26 +61,24 @@ 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);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (options.mobileView) {
|
if (options.mobileView) {
|
||||||
forceMobile();
|
forceMobile();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.loggedIn) {
|
if (options.loggedIn) {
|
||||||
logIn();
|
logIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.settings) {
|
if (options.settings) {
|
||||||
Discourse.SiteSettings = jQuery.extend(true, Discourse.SiteSettings, options.settings);
|
Discourse.SiteSettings = jQuery.extend(true, Discourse.SiteSettings, options.settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
||||||
@ -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 };
|
|
||||||
|
@ -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);
|
||||||
|
Reference in New Issue
Block a user