mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 11:33:06 +08:00
a7507dad63
Tests for populating category and tags Added acceptance tests for populating the Username and Category through the Advanced Search UI (will work on the other fields later) Give the combo-box elements ids Add acceptance tests for the rest of the advanced search UI (except for Tags, tags are evil)
130 lines
3.1 KiB
JavaScript
130 lines
3.1 KiB
JavaScript
/* 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';
|
|
|
|
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});
|
|
|
|
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)));
|
|
}
|
|
}
|
|
|
|
Discourse.reset();
|
|
},
|
|
|
|
teardown() {
|
|
if (options && options.teardown) {
|
|
options.teardown.call(this);
|
|
}
|
|
Discourse.User.resetCurrent();
|
|
Discourse.Site.resetCurrent(Discourse.Site.create(jQuery.extend(true, {}, fixtures['site.json'].site)));
|
|
|
|
Discourse.reset();
|
|
}
|
|
});
|
|
}
|
|
|
|
function controllerFor(controller, model) {
|
|
controller = Discourse.__container__.lookup('controller:' + controller);
|
|
if (model) { controller.set('model', model ); }
|
|
return controller;
|
|
}
|
|
|
|
function asyncTestDiscourse(text, func) {
|
|
asyncTest(text, function () {
|
|
var self = this;
|
|
Ember.run(function () {
|
|
func.call(self);
|
|
});
|
|
});
|
|
}
|
|
|
|
function fixture(selector) {
|
|
if (selector) {
|
|
return $("#qunit-fixture").find(selector);
|
|
}
|
|
return $("#qunit-fixture");
|
|
}
|
|
|
|
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 };
|