discourse/test/javascripts/helpers/qunit_helpers.js

65 lines
1.7 KiB
JavaScript
Raw Normal View History

/* global asyncTest, requirejs, require */
/* exported integration, testController, controllerFor, asyncTestDiscourse, fixture */
function integration(name, lifecycle) {
module("Integration: " + name, {
2013-06-20 13:58:54 -04:00
setup: function() {
sinon.stub(Discourse.ScrollingDOMMethods, "bindOnScroll");
sinon.stub(Discourse.ScrollingDOMMethods, "unbindOnScroll");
2013-06-20 13:58:54 -04:00
Ember.run(Discourse, Discourse.advanceReadiness);
if (lifecycle && lifecycle.setup) {
lifecycle.setup.call(this);
}
2013-06-20 13:58:54 -04:00
},
teardown: function() {
if (lifecycle && lifecycle.teardown) {
lifecycle.teardown.call(this);
}
2013-06-20 13:58:54 -04:00
Discourse.reset();
Discourse.ScrollingDOMMethods.bindOnScroll.restore();
Discourse.ScrollingDOMMethods.unbindOnScroll.restore();
2013-06-20 13:58:54 -04:00
}
});
}
2013-09-04 11:53:00 -04:00
function testController(klass, model) {
// HAX until we get ES6 everywhere:
if (typeof klass === "string") {
var moduleName = 'discourse/controllers/' + klass,
module = requirejs.entries[moduleName];
if (module) {
klass = require(moduleName, null, null, true).default;
}
}
2013-09-04 11:53:00 -04:00
return klass.create({model: model, container: Discourse.__container__});
}
function controllerFor(controller, model) {
controller = Discourse.__container__.lookup('controller:' + controller);
if (model) { controller.set('model', model ); }
return controller;
2013-07-15 19:47:13 -04:00
}
function viewClassFor(name) {
return Discourse.__container__.lookupFactory('view:' + name);
}
2013-07-15 19:47:13 -04:00
function asyncTestDiscourse(text, func) {
asyncTest(text, function () {
var self = this;
2013-07-15 19:47:13 -04:00
Ember.run(function () {
func.call(self);
2013-07-15 19:47:13 -04:00
});
});
}
function fixture(selector) {
if (selector) {
return $("#qunit-fixture").find(selector);
}
return $("#qunit-fixture");
}