/*jshint maxlen:250 */ /*global document, sinon, QUnit, Logster */ //= require env //= require ../../app/assets/javascripts/preload_store // probe framework first //= require ../../app/assets/javascripts/discourse/lib/probes // Externals we need to load first //= require jquery.debug //= require jquery.ui.widget //= require handlebars //= require ember.custom.debug //= require message-bus //= require ember-qunit //= require fake_xml_http_request //= require route-recognizer //= require pretender //= require ../../app/assets/javascripts/locales/i18n //= require ../../app/assets/javascripts/locales/en // Pagedown customizations //= require ../../app/assets/javascripts/pagedown_custom.js //= 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 //= require helpers/qunit-helpers //= require helpers/assertions //= require helpers/init-ember-qunit //= require_tree ./fixtures //= require_tree ./lib //= require_tree . //= require_self // //= require ../../public/javascripts/jquery.magnific-popup-min.js // sinon settings sinon.config = { injectIntoThis: true, injectInto: null, properties: ["spy", "stub", "mock", "clock", "sandbox"], useFakeTimers: false, useFakeServer: false }; window.assetPath = function(url) { if (url.indexOf('defer') === 0) { return "/assets/" + url; } }; // Stop the message bus so we don't get ajax calls window.MessageBus.stop(); // Trick JSHint into allow document.write var d = document; d.write('
'); d.write(''); Discourse.rootElement = '#ember-testing'; Discourse.setupForTesting(); Discourse.injectTestHelpers(); Discourse.start(); // disable logster error reporting if (window.Logster) { Logster.enabled = false; } else { window.Logster = { enabled: false }; } var origDebounce = Ember.run.debounce, createPretendServer = require('helpers/create-pretender', null, null, false).default, fixtures = require('fixtures/site_fixtures', null, null, false).default, flushMap = require('discourse/models/store', null, null, false).flushMap, server; QUnit.testStart(function(ctx) { server = createPretendServer(); // 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 = "localhost"; Discourse.User.resetCurrent(); Discourse.Site.resetCurrent(Discourse.Site.create(fixtures['site.json'].site)); PreloadStore.reset(); 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; } }); // Don't cloak in testing Ember.CloakedCollectionView = Ember.CollectionView; QUnit.testDone(function() { Ember.run.debounce = origDebounce; window.sandbox.restore(); // Destroy any modals $('.modal-backdrop').remove(); flushMap(); server.shutdown(); }); // Load ES6 tests 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; Ember.keys(requirejs.entries).forEach(function(entry) { if ((/\-test/).test(entry)) { require(entry, null, null, true); } });