discourse/test/javascripts/test_helper.js

124 lines
3.3 KiB
JavaScript
Raw Normal View History

2013-06-13 15:15:53 -04:00
/*jshint maxlen:250 */
2014-07-30 13:27:14 -04:00
/*global document, sinon, console, QUnit, Logster */
//= require env
//= require ../../app/assets/javascripts/preload_store.js
// probe framework first
//= require ../../app/assets/javascripts/discourse/lib/probes.js
// Externals we need to load first
2014-05-15 06:32:13 -04:00
//= require development/jquery-2.1.1.js
2013-09-16 14:08:55 -04:00
//= require jquery.ui.widget.js
//= require handlebars.js
//= require development/ember.js
2013-11-25 01:50:48 -05:00
//= require message-bus.js
2014-07-30 17:53:14 -04:00
//= require ember-qunit.js
//= require ../../app/assets/javascripts/locales/i18n
//= require ../../app/assets/javascripts/discourse/helpers/i18n_helpers
//= require ../../app/assets/javascripts/locales/en
// Pagedown customizations
//= require ../../app/assets/javascripts/pagedown_custom.js
//= require ../../public/javascripts/highlight.pack.js
2013-12-22 18:41:10 -05:00
//= require vendor
//= require htmlparser.js
// Stuff we need to load first
//= require main_include
//= require admin
//= require_tree ../../app/assets/javascripts/defer
//= require sinon-1.7.1
//= require sinon-qunit-1.0.0
//= require jshint
2013-06-20 13:58:54 -04:00
//= require helpers/qunit_helpers
//= require helpers/assertions
2014-07-30 17:53:14 -04:00
//= require helpers/init-ember-qunit
2013-06-20 13:58:54 -04:00
//= require_tree ./fixtures
//= require_tree ./lib
//= require_tree .
//= require_self
//= require jshint_all
// sinon settings
sinon.config = {
injectIntoThis: true,
injectInto: null,
properties: ["spy", "stub", "mock", "clock", "sandbox"],
useFakeTimers: false,
useFakeServer: false
};
window.assetPath = function() { return null; };
var oldAjax = $.ajax;
$.ajax = function() {
try {
this.undef();
} catch(e) {
console.error("Discourse.Ajax called in test environment (" + arguments[0] + ")\n caller: " + e.stack.split("\n").slice(2).join("\n"));
}
return oldAjax.apply(this, arguments);
};
// Stop the message bus so we don't get ajax calls
Discourse.MessageBus.stop();
// Trick JSHint into allow document.write
var d = document;
d.write('<div id="ember-testing-container"><div id="ember-testing"></div></div>');
d.write('<style>#ember-testing-container { position: absolute; background: white; bottom: 0; right: 0; width: 640px; height: 384px; overflow: auto; z-index: 9999; border: 1px solid #ccc; } #ember-testing { zoom: 50%; }</style>');
Discourse.rootElement = '#ember-testing';
Discourse.setupForTesting();
Discourse.injectTestHelpers();
Discourse.runInitializers();
Discourse.start();
2014-04-29 15:17:40 -04:00
Discourse.Route.mapRoutes();
2013-07-05 11:53:09 -04:00
// disable logster error reporting
if (window.Logster) {
Logster.enabled = false;
} else {
window.Logster = { enabled: false };
}
2014-07-30 18:56:01 -04:00
var origDebounce = Ember.run.debounce;
QUnit.testStart(function(ctx) {
2013-07-05 11:53:09 -04:00
// Allow our tests to change site settings and have them reset before the next test
Discourse.SiteSettings = jQuery.extend(true, {}, Discourse.SiteSettingsOriginal);
Discourse.BaseUri = "/";
Discourse.BaseUrl = "";
2014-07-30 17:53:14 -04:00
2014-07-30 18:56:01 -04:00
window.sandbox = sinon.sandbox.create();
window.sandbox.stub(Discourse.ScrollingDOMMethods, "bindOnScroll");
window.sandbox.stub(Discourse.ScrollingDOMMethods, "unbindOnScroll");
// Don't debounce in test unless we're testing debouncing
if (ctx.module.indexOf('debounce') === -1) {
Ember.run.debounce = Ember.run;
}
});
2013-07-05 11:53:09 -04:00
2014-07-30 17:53:14 -04:00
QUnit.testDone(function() {
2014-07-30 18:56:01 -04:00
Ember.run.debounce = origDebounce;
window.sandbox.restore();
2014-07-30 17:53:14 -04:00
});
2014-07-31 12:05:47 -04:00
// Load ES6 tests
Ember.keys(requirejs.entries).forEach(function(entry) {
if ((/\-test/).test(entry)) {
require(entry, null, null, true);
}
});