47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
import { expect } from "chai";
|
|
import KeyQueue from '../../src/background/key-queue';
|
|
import * as actions from '../../src/shared/actions';
|
|
|
|
describe("keyQueue class", () => {
|
|
const KEYMAP = [
|
|
{ keys: [{ code: KeyboardEvent.DOM_VK_G }, { code: KeyboardEvent.DOM_VK_G }],
|
|
action: [ actions.SCROLL_TOP ]},
|
|
{ keys: [{ code: KeyboardEvent.DOM_VK_J }],
|
|
action: [ actions.SCROLL_DOWN ]},
|
|
]
|
|
|
|
describe("#push", () => {
|
|
it("returns matched action", () => {
|
|
let queue = new KeyQueue(KEYMAP);
|
|
queue.push({ code: KeyboardEvent.DOM_VK_G });
|
|
let action = queue.push({ code: KeyboardEvent.DOM_VK_G });
|
|
|
|
expect(action).to.deep.equal([ actions.SCROLL_TOP ]);
|
|
});
|
|
|
|
it("returns null on no actions matched", () => {
|
|
let queue = new KeyQueue(KEYMAP);
|
|
queue.push({ code: KeyboardEvent.DOM_VK_G });
|
|
let action = queue.push({ code: KeyboardEvent.DOM_VK_X });
|
|
|
|
expect(action).to.be.null;
|
|
});
|
|
});
|
|
|
|
describe("#queuedKeys", () => {
|
|
it("queues keys on matched actions exist", () => {
|
|
let queue = new KeyQueue(KEYMAP);
|
|
queue.push({ code: KeyboardEvent.DOM_VK_G });
|
|
|
|
expect(queue.queuedKeys()).to.have.lengthOf(1);
|
|
});
|
|
|
|
it("flushs keys on no actions matched", () => {
|
|
let queue = new KeyQueue(KEYMAP);
|
|
queue.push({ code: KeyboardEvent.DOM_VK_G });
|
|
queue.push({ code: KeyboardEvent.DOM_VK_Z });
|
|
|
|
expect(queue.queuedKeys()).to.be.empty;
|
|
});
|
|
});
|
|
});
|