2014-07-31 13:51:10 -05:00
|
|
|
/*global document, sinon, QUnit, Logster */
|
2013-06-12 10:56:59 -05:00
|
|
|
|
|
|
|
//= require env
|
2015-08-10 16:11:27 -05:00
|
|
|
//= require probes
|
2015-04-29 13:57:08 -05:00
|
|
|
//= require jquery.debug
|
2014-07-31 13:51:10 -05:00
|
|
|
//= require jquery.ui.widget
|
|
|
|
//= require handlebars
|
2015-08-11 16:34:02 -05:00
|
|
|
//= require ember.debug
|
2015-11-24 20:57:10 -06:00
|
|
|
//= require ember-template-compiler
|
2014-07-31 13:51:10 -05:00
|
|
|
//= require message-bus
|
|
|
|
//= require ember-qunit
|
|
|
|
//= require fake_xml_http_request
|
|
|
|
//= require route-recognizer
|
|
|
|
//= require pretender
|
2016-11-15 11:41:12 -06:00
|
|
|
//= require discourse-loader
|
2016-07-04 13:15:51 -05:00
|
|
|
//= require preload-store
|
2013-06-12 10:56:59 -05:00
|
|
|
|
2016-04-17 21:47:52 -05:00
|
|
|
//= require locales/i18n
|
|
|
|
//= require locales/en
|
2013-06-18 15:27:40 -05:00
|
|
|
|
2013-06-12 10:56:59 -05:00
|
|
|
// Stuff we need to load first
|
2016-07-03 12:33:05 -05:00
|
|
|
//= require vendor
|
|
|
|
//= require ember-shim
|
2016-06-14 13:31:51 -05:00
|
|
|
//= require pretty-text-bundle
|
2017-06-08 17:02:30 -05:00
|
|
|
//= require markdown-it-bundle
|
2016-11-14 20:30:03 -06:00
|
|
|
//= require application
|
|
|
|
//= require plugin
|
2016-07-03 12:33:05 -05:00
|
|
|
//= require htmlparser.js
|
2013-06-12 10:56:59 -05:00
|
|
|
//= require admin
|
|
|
|
|
2013-06-21 13:06:20 -05:00
|
|
|
//= require sinon-1.7.1
|
|
|
|
//= require sinon-qunit-1.0.0
|
2013-06-18 15:27:40 -05:00
|
|
|
|
2013-06-20 12:58:54 -05:00
|
|
|
//= require helpers/assertions
|
2017-11-21 04:53:09 -06:00
|
|
|
//= require helpers/select-kit-helper
|
2013-06-20 13:29:59 -05:00
|
|
|
|
2016-12-19 10:19:10 -06:00
|
|
|
//= require helpers/qunit-helpers
|
2013-06-20 12:58:54 -05:00
|
|
|
//= require_tree ./fixtures
|
2013-10-24 11:36:46 -05:00
|
|
|
//= require_tree ./lib
|
2013-06-12 10:56:59 -05:00
|
|
|
//= require_tree .
|
2015-08-27 15:59:36 -05:00
|
|
|
//= require plugin_tests
|
2013-06-12 10:56:59 -05:00
|
|
|
//= require_self
|
2015-03-13 01:45:55 -05:00
|
|
|
//
|
2017-04-24 21:23:15 -05:00
|
|
|
//= require jquery.magnific-popup.min.js
|
2013-06-12 10:56:59 -05:00
|
|
|
|
2016-02-24 16:43:40 -06:00
|
|
|
window.inTestEnv = true;
|
|
|
|
|
2013-11-25 01:01:03 -06:00
|
|
|
// Stop the message bus so we don't get ajax calls
|
2015-03-12 11:12:23 -05:00
|
|
|
window.MessageBus.stop();
|
2013-11-25 01:01:03 -06:00
|
|
|
|
2013-06-13 14:08:42 -05:00
|
|
|
// Trick JSHint into allow document.write
|
|
|
|
var d = document;
|
2017-05-31 14:31:24 -05:00
|
|
|
d.write('<script src="/javascripts/ace/ace.js"></script>');
|
2013-06-13 14:08:42 -05:00
|
|
|
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>');
|
2013-06-12 10:56:59 -05:00
|
|
|
|
2017-06-14 12:57:58 -05:00
|
|
|
Ember.Test.adapter = window.QUnitAdapter.create();
|
|
|
|
|
2013-06-12 10:56:59 -05:00
|
|
|
Discourse.rootElement = '#ember-testing';
|
|
|
|
Discourse.setupForTesting();
|
|
|
|
Discourse.injectTestHelpers();
|
2014-01-14 11:48:57 -06:00
|
|
|
Discourse.start();
|
2013-07-05 10:53:09 -05:00
|
|
|
|
2014-07-28 15:41:45 -05:00
|
|
|
// disable logster error reporting
|
|
|
|
if (window.Logster) {
|
|
|
|
Logster.enabled = false;
|
|
|
|
} else {
|
|
|
|
window.Logster = { enabled: false };
|
|
|
|
}
|
|
|
|
|
2014-07-31 13:51:10 -05:00
|
|
|
var origDebounce = Ember.run.debounce,
|
2017-09-13 10:54:49 -05:00
|
|
|
pretender = require('helpers/create-pretender', null, null, false),
|
2015-08-25 11:50:19 -05:00
|
|
|
fixtures = require('fixtures/site-fixtures', null, null, false).default,
|
2015-04-08 13:44:44 -05:00
|
|
|
flushMap = require('discourse/models/store', null, null, false).flushMap,
|
2015-08-07 14:08:27 -05:00
|
|
|
ScrollingDOMMethods = require('discourse/mixins/scrolling', null, null, false).ScrollingDOMMethods,
|
2015-08-10 16:11:27 -05:00
|
|
|
_DiscourseURL = require('discourse/lib/url', null, null, false).default,
|
2017-09-13 10:54:49 -05:00
|
|
|
applyPretender = require('helpers/qunit-helpers', null, null, false).applyPretender,
|
2014-07-31 13:51:10 -05:00
|
|
|
server;
|
|
|
|
|
2015-07-03 13:57:07 -05:00
|
|
|
function dup(obj) {
|
|
|
|
return jQuery.extend(true, {}, obj);
|
|
|
|
}
|
|
|
|
|
2017-11-01 14:08:18 -05:00
|
|
|
function resetSite(siteSettings, extras) {
|
2016-07-04 13:15:51 -05:00
|
|
|
var createStore = require('helpers/create-store').default;
|
2017-11-01 14:08:18 -05:00
|
|
|
var siteAttrs = $.extend({}, fixtures['site.json'].site, extras || {});
|
2016-07-04 13:15:51 -05:00
|
|
|
siteAttrs.store = createStore();
|
2017-11-01 14:08:18 -05:00
|
|
|
siteAttrs.siteSettings = siteSettings;
|
2016-07-04 13:15:51 -05:00
|
|
|
Discourse.Site.resetCurrent(Discourse.Site.create(siteAttrs));
|
|
|
|
}
|
|
|
|
|
2014-07-30 17:56:01 -05:00
|
|
|
QUnit.testStart(function(ctx) {
|
2017-09-13 10:54:49 -05:00
|
|
|
server = pretender.default();
|
|
|
|
|
|
|
|
var helper = {
|
|
|
|
parsePostData: pretender.parsePostData,
|
|
|
|
response: pretender.response,
|
|
|
|
success: pretender.success
|
|
|
|
};
|
|
|
|
|
|
|
|
applyPretender(server, helper);
|
2014-07-31 13:51:10 -05:00
|
|
|
|
2013-07-05 10:53:09 -05:00
|
|
|
// Allow our tests to change site settings and have them reset before the next test
|
2015-07-03 13:57:07 -05:00
|
|
|
Discourse.SiteSettings = dup(Discourse.SiteSettingsOriginal);
|
2015-09-06 22:20:59 -05:00
|
|
|
Discourse.BaseUri = "";
|
2015-04-16 03:15:06 -05:00
|
|
|
Discourse.BaseUrl = "localhost";
|
2015-08-07 14:08:27 -05:00
|
|
|
Discourse.Session.resetCurrent();
|
2014-07-31 12:24:07 -05:00
|
|
|
Discourse.User.resetCurrent();
|
2017-11-01 14:08:18 -05:00
|
|
|
resetSite(Discourse.SiteSettings);
|
2015-07-02 11:06:24 -05:00
|
|
|
|
2015-08-10 16:11:27 -05:00
|
|
|
_DiscourseURL.redirectedTo = null;
|
|
|
|
_DiscourseURL.redirectTo = function(url) {
|
|
|
|
_DiscourseURL.redirectedTo = url;
|
2015-07-02 11:06:24 -05:00
|
|
|
};
|
|
|
|
|
2016-07-04 13:15:51 -05:00
|
|
|
var ps = require('preload-store').default;
|
|
|
|
ps.reset();
|
2014-07-30 16:53:14 -05:00
|
|
|
|
2014-07-30 17:56:01 -05:00
|
|
|
window.sandbox = sinon.sandbox.create();
|
2015-09-09 15:20:08 -05:00
|
|
|
window.sandbox.stub(ScrollingDOMMethods, "screenNotFull");
|
2015-08-07 14:08:27 -05:00
|
|
|
window.sandbox.stub(ScrollingDOMMethods, "bindOnScroll");
|
|
|
|
window.sandbox.stub(ScrollingDOMMethods, "unbindOnScroll");
|
2014-07-30 17:56:01 -05:00
|
|
|
|
2015-09-28 13:01:16 -05:00
|
|
|
// Unless we ever need to test this, let's leave it off.
|
2017-06-13 14:59:48 -05:00
|
|
|
$.fn.autocomplete = function() { };
|
2015-09-28 13:01:16 -05:00
|
|
|
|
2014-07-30 17:56:01 -05:00
|
|
|
// Don't debounce in test unless we're testing debouncing
|
|
|
|
if (ctx.module.indexOf('debounce') === -1) {
|
|
|
|
Ember.run.debounce = Ember.run;
|
|
|
|
}
|
2013-07-24 21:06:02 -05:00
|
|
|
});
|
2013-07-05 10:53:09 -05:00
|
|
|
|
2014-07-30 16:53:14 -05:00
|
|
|
QUnit.testDone(function() {
|
2014-07-30 17:56:01 -05:00
|
|
|
Ember.run.debounce = origDebounce;
|
|
|
|
window.sandbox.restore();
|
2014-07-31 13:17:18 -05:00
|
|
|
|
|
|
|
// Destroy any modals
|
|
|
|
$('.modal-backdrop').remove();
|
2015-04-08 13:44:44 -05:00
|
|
|
flushMap();
|
2014-07-31 13:51:10 -05:00
|
|
|
|
|
|
|
server.shutdown();
|
2014-07-30 16:53:14 -05:00
|
|
|
});
|
2014-07-31 11:05:47 -05:00
|
|
|
|
|
|
|
// Load ES6 tests
|
2014-09-26 13:48:34 -05:00
|
|
|
var helpers = require("helpers/qunit-helpers");
|
|
|
|
|
|
|
|
// TODO: Replace with proper imports rather than globals
|
|
|
|
window.asyncTestDiscourse = helpers.asyncTestDiscourse;
|
|
|
|
window.controllerFor = helpers.controllerFor;
|
|
|
|
window.fixture = helpers.fixture;
|
|
|
|
|
2017-07-26 08:07:46 -05:00
|
|
|
function getUrlParameter(name) {
|
|
|
|
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
|
|
|
|
var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
|
|
|
|
var results = regex.exec(location.search);
|
|
|
|
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
|
|
|
|
};
|
|
|
|
|
|
|
|
var skipCore = (getUrlParameter('qunit_skip_core') == '1');
|
|
|
|
var pluginPath = getUrlParameter('qunit_single_plugin') ? "\/"+getUrlParameter('qunit_single_plugin')+"\/" : "\/plugins\/";
|
|
|
|
|
2016-04-28 15:37:20 -05:00
|
|
|
Object.keys(requirejs.entries).forEach(function(entry) {
|
2017-07-26 08:07:46 -05:00
|
|
|
var isTest = (/\-test/).test(entry);
|
|
|
|
var regex = new RegExp(pluginPath)
|
|
|
|
var isPlugin = regex.test(entry);
|
|
|
|
|
|
|
|
if (isTest && (!skipCore || isPlugin)) {
|
2014-07-31 11:05:47 -05:00
|
|
|
require(entry, null, null, true);
|
|
|
|
}
|
|
|
|
});
|
2017-07-26 08:07:46 -05:00
|
|
|
|
2016-07-04 13:15:51 -05:00
|
|
|
resetSite();
|