71 lines
1.5 KiB
JavaScript
71 lines
1.5 KiB
JavaScript
fixture.setBase("test/fixtures");
|
|
|
|
// finds DOM elements in tests
|
|
function $ (str, context) {
|
|
return (context || fixture.el).querySelector(str);
|
|
}
|
|
|
|
function $$ (str, context) {
|
|
return (context || fixture.el).querySelectorAll(str);
|
|
}
|
|
|
|
// bundled fixture load/cleanup
|
|
$.fixture = function (fixtureName) {
|
|
beforeEach(function () {
|
|
// Awesomplete probably needs to cleanup this by itself
|
|
try { Awesomplete.all = []; } catch(e) {};
|
|
fixture.load(fixtureName + ".html");
|
|
});
|
|
|
|
afterEach(function () {
|
|
fixture.cleanup();
|
|
});
|
|
};
|
|
|
|
// spy to check if event was fired or not
|
|
$.spyOnEvent = function (target, type) {
|
|
var handler = jasmine.createSpy(type);
|
|
$.on(target, type, handler);
|
|
return handler;
|
|
};
|
|
|
|
$.on = function (target, type, callback) {
|
|
target.addEventListener(type, callback);
|
|
};
|
|
|
|
$.fire = function (target, type, properties) {
|
|
var evt = document.createEvent("HTMLEvents");
|
|
evt.initEvent(type, true, true );
|
|
for (var j in properties) {
|
|
evt[j] = properties[j];
|
|
}
|
|
target.dispatchEvent(evt);
|
|
return evt;
|
|
};
|
|
|
|
// simulates text input (very simple, only "input" event is fired)
|
|
$.type = function (input, text) {
|
|
input.focus();
|
|
input.value = text;
|
|
return $.fire(input, "input");
|
|
};
|
|
|
|
// simulates keydown events
|
|
$.keydown = function (target, keyCode) {
|
|
return $.fire(target, "keydown", { keyCode: keyCode });
|
|
};
|
|
$.k = {
|
|
TAB: 9,
|
|
ENTER: 13,
|
|
ESC: 27,
|
|
DOWN: 40,
|
|
UP: 38
|
|
};
|
|
|
|
// $.noop returns a new empty function each time it's being called
|
|
Object.defineProperty($, "noop", {
|
|
get: function () {
|
|
return function noop () {}
|
|
}
|
|
});
|