Release
This commit is contained in:
131
client/core/chitalka/chitalka.test.js
Normal file
131
client/core/chitalka/chitalka.test.js
Normal file
@@ -0,0 +1,131 @@
|
||||
modules.define(
|
||||
'test',
|
||||
[
|
||||
'chitalka',
|
||||
'y-dom',
|
||||
'jquery',
|
||||
'inherit'
|
||||
],
|
||||
function (
|
||||
provide,
|
||||
Chitalka,
|
||||
dom,
|
||||
$,
|
||||
inherit
|
||||
) {
|
||||
describe('Chitalka', function () {
|
||||
var chitalka;
|
||||
var expect = chai.expect;
|
||||
|
||||
// Подменяем для тестов функцию доступности читалки для работы
|
||||
var ChitalkaStub = inherit(Chitalka, {
|
||||
_isAvailable: function () {
|
||||
return true;
|
||||
},
|
||||
|
||||
_initUI: function () {
|
||||
},
|
||||
|
||||
_setUpSpeed: function () {
|
||||
}
|
||||
});
|
||||
|
||||
var emulateKeyDown = function (keycode) {
|
||||
if (typeof keycode === 'string' || typeof keycode === 'number') {
|
||||
keycode = {keyCode: keycode};
|
||||
}
|
||||
var e = $.Event('keydown', keycode);
|
||||
$(document).trigger(e);
|
||||
};
|
||||
|
||||
describe('js', function () {
|
||||
afterEach(function () {
|
||||
chitalka.destruct();
|
||||
});
|
||||
|
||||
describe('chitalka methods not implemented', function () {
|
||||
beforeEach(function () {
|
||||
chitalka = new ChitalkaStub();
|
||||
});
|
||||
|
||||
it('last page', function () {
|
||||
expect(chitalka.lastPage).to.throw('UNIMPLEMENTED METHOD: lastPage');
|
||||
});
|
||||
|
||||
it('first page', function () {
|
||||
expect(chitalka.firstPage).to.throw('UNIMPLEMENTED METHOD: firstPage');
|
||||
});
|
||||
|
||||
it('previous page', function () {
|
||||
expect(chitalka.previousPage).to.throw('UNIMPLEMENTED METHOD: previousPage');
|
||||
});
|
||||
|
||||
it('next page', function () {
|
||||
expect(chitalka.nextPage).to.throw('UNIMPLEMENTED METHOD: nextPage');
|
||||
});
|
||||
|
||||
it('zoom in', function () {
|
||||
expect(chitalka.zoomIn).to.throw('UNIMPLEMENTED METHOD: zoomIn');
|
||||
});
|
||||
|
||||
it('zoom out', function () {
|
||||
expect(chitalka.zoomOut).to.throw('UNIMPLEMENTED METHOD: zoomOut');
|
||||
});
|
||||
|
||||
it('zoom reset', function () {
|
||||
expect(chitalka.zoomReset).to.throw('UNIMPLEMENTED METHOD: zoomReset');
|
||||
});
|
||||
});
|
||||
|
||||
describe('chitalka reacts on keyboard events', function () {
|
||||
beforeEach(function () {
|
||||
chitalka = new ChitalkaStub(null, {keyboard: true});
|
||||
});
|
||||
|
||||
it('should call firstPage on home press', function () {
|
||||
var spy = sinon.stub(chitalka, 'firstPage');
|
||||
emulateKeyDown(36);
|
||||
sinon.assert.called(spy);
|
||||
});
|
||||
it('should call previousPage on left arrow press', function () {
|
||||
var spy = sinon.stub(chitalka, 'previousPage');
|
||||
emulateKeyDown(37);
|
||||
sinon.assert.called(spy);
|
||||
});
|
||||
it('should call nextPage on right arrow press', function () {
|
||||
var spy = sinon.stub(chitalka, 'nextPage');
|
||||
emulateKeyDown(39);
|
||||
sinon.assert.called(spy);
|
||||
});
|
||||
it('should call lastPage on End press', function () {
|
||||
var spy = sinon.stub(chitalka, 'lastPage');
|
||||
emulateKeyDown(35);
|
||||
sinon.assert.called(spy);
|
||||
});
|
||||
it('should call zoomIn on "+" press', function () {
|
||||
var spy = sinon.stub(chitalka, 'zoomIn');
|
||||
emulateKeyDown(61);
|
||||
emulateKeyDown(187);
|
||||
sinon.assert.callCount(spy, 2);
|
||||
});
|
||||
it('should call zoomOut on "-" press', function () {
|
||||
var spy = sinon.stub(chitalka, 'zoomOut');
|
||||
emulateKeyDown(173);
|
||||
emulateKeyDown(189);
|
||||
sinon.assert.callCount(spy, 2);
|
||||
});
|
||||
it('should call zoomReset on "0" press', function () {
|
||||
var spy = sinon.stub(chitalka, 'zoomReset');
|
||||
emulateKeyDown({
|
||||
keyCode: 48,
|
||||
metaKey: true
|
||||
});
|
||||
sinon.assert.called(spy);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
provide();
|
||||
}
|
||||
);
|
||||
Reference in New Issue
Block a user