discourse/test/javascripts/helpers/qunit-helpers.js.es6

144 lines
3.6 KiB
Plaintext
Raw Normal View History

/* global asyncTest, fixtures */
import sessionFixtures from 'fixtures/session-fixtures';
import siteFixtures from 'fixtures/site-fixtures';
import HeaderComponent from 'discourse/components/site-header';
import { forceMobile, resetMobile } from 'discourse/lib/mobile';
2016-11-23 04:36:18 +08:00
import { resetPluginApi } from 'discourse/lib/plugin-api';
import { clearCache as clearOutletCache, resetExtraClasses } from 'discourse/lib/plugin-connectors';
2016-11-24 01:57:50 +08:00
import { clearHTMLCache } from 'discourse/helpers/custom-html';
import { flushMap } from 'discourse/models/store';
function currentUser() {
return Discourse.User.create(sessionFixtures['/session/current.json'].current_user);
}
function logIn() {
Discourse.User.resetCurrent(currentUser());
}
const Plugin = $.fn.modal;
const Modal = Plugin.Constructor;
function AcceptanceModal(option, _relatedTarget) {
return this.each(function () {
var $this = $(this);
var data = $this.data('bs.modal');
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option === 'object' && option);
if (!data) $this.data('bs.modal', (data = new Modal(this, options)));
data.$body = $('#ember-testing');
if (typeof option === 'string') data[option](_relatedTarget);
else if (options.show) data.show(_relatedTarget);
});
}
window.bootbox.$body = $('#ember-testing');
$.fn.modal = AcceptanceModal;
function acceptance(name, options) {
module("Acceptance: " + name, {
setup() {
resetMobile();
// For now don't do scrolling stuff in Test Mode
HeaderComponent.reopen({examineDockHeader: Ember.K});
resetExtraClasses();
const siteJson = siteFixtures['site.json'].site;
if (options) {
if (options.setup) {
options.setup.call(this);
}
if (options.mobileView) {
forceMobile();
}
if (options.loggedIn) {
logIn();
}
if (options.settings) {
Discourse.SiteSettings = jQuery.extend(true, Discourse.SiteSettings, options.settings);
}
if (options.site) {
Discourse.Site.resetCurrent(Discourse.Site.create(jQuery.extend(true, {}, siteJson, options.site)));
}
}
2016-11-24 01:57:50 +08:00
clearOutletCache();
clearHTMLCache();
2016-11-23 23:41:21 +08:00
resetPluginApi();
2014-07-31 06:56:01 +08:00
Discourse.reset();
2013-06-21 01:58:54 +08:00
},
teardown() {
if (options && options.teardown) {
options.teardown.call(this);
}
flushMap();
2015-05-01 04:04:58 +08:00
Discourse.User.resetCurrent();
Discourse.Site.resetCurrent(Discourse.Site.create(jQuery.extend(true, {}, fixtures['site.json'].site)));
resetExtraClasses();
2016-11-24 01:57:50 +08:00
clearOutletCache();
clearHTMLCache();
2016-11-23 04:36:18 +08:00
resetPluginApi();
2013-06-21 01:58:54 +08:00
Discourse.reset();
}
});
}
2015-02-07 02:25:48 +08:00
function controllerFor(controller, model) {
controller = Discourse.__container__.lookup('controller:' + controller);
if (model) { controller.set('model', model ); }
return controller;
2013-07-16 07:47:13 +08:00
}
2015-02-07 02:25:48 +08:00
function asyncTestDiscourse(text, func) {
2013-07-16 07:47:13 +08:00
asyncTest(text, function () {
var self = this;
2013-07-16 07:47:13 +08:00
Ember.run(function () {
func.call(self);
2013-07-16 07:47:13 +08:00
});
});
}
2015-02-07 02:25:48 +08:00
function fixture(selector) {
if (selector) {
return $("#qunit-fixture").find(selector);
}
return $("#qunit-fixture");
}
2015-02-07 02:25:48 +08:00
function present(obj, text) {
ok(!Ember.isEmpty(obj), text);
}
function blank(obj, text) {
ok(Ember.isEmpty(obj), text);
}
function waitFor(callback, timeout) {
timeout = timeout || 500;
stop();
Ember.run.later(() => {
callback();
start();
}, timeout);
}
export { acceptance,
controllerFor,
asyncTestDiscourse,
fixture,
logIn,
currentUser,
blank,
present,
waitFor };