diff options
author | Lea Verou <lea@verou.me> | 2015-12-27 23:24:10 +0200 |
---|---|---|
committer | Lea Verou <lea@verou.me> | 2015-12-27 23:24:10 +0200 |
commit | 9af4a6ef0b18901f893b116003271e4b718903f9 (patch) | |
tree | d727f656ad843bc67a3b0de83085d4862ad2dd0a /test/specHelper.js | |
parent | 2dae7fd9d23752abff4f230c060b4d625bb77031 (diff) | |
parent | f9d6cca542c66aef3c550e65cef3940393dab88e (diff) | |
download | awesomplete-9af4a6ef0b18901f893b116003271e4b718903f9.zip awesomplete-9af4a6ef0b18901f893b116003271e4b718903f9.tar.gz awesomplete-9af4a6ef0b18901f893b116003271e4b718903f9.tar.bz2 |
Merge pull request #16785 from vlazar/features/improve-test-coverage
Improve test coverage
Diffstat (limited to 'test/specHelper.js')
-rw-r--r-- | test/specHelper.js | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/test/specHelper.js b/test/specHelper.js new file mode 100644 index 0000000..58282e5 --- /dev/null +++ b/test/specHelper.js @@ -0,0 +1,68 @@ +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); +}; + +// simulates text input (very simple, only "input" event is fired) +$.type = function (input, text) { + input.focus(); + input.value = text; + $.fire(input, "input"); +}; + +// simulates keydown events +$.keydown = function (target, keyCode) { + $.fire(target, "keydown", { keyCode: keyCode }); +}; +$.k = { + 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 () {} + } +}); |