Skip to content

Commit

Permalink
test(all): add test
Browse files Browse the repository at this point in the history
  • Loading branch information
daybrush committed Jan 12, 2018
1 parent 0bd3350 commit 6b36c76
Show file tree
Hide file tree
Showing 4 changed files with 169 additions and 84 deletions.
4 changes: 2 additions & 2 deletions demo/assets/js/axes.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,11 +176,11 @@ $(function () {
var pos = e.pos;
var delta = e.delta;
var holding = e.holding;
console.log(e);

if (delta.panX || delta.panY) {
pan.textContent =
`panX: ${(+pos.panX.toFixed(0))}, panY: ${(+pos.panY.toFixed(0))}`;
if (e.inputEvent && e.inputEvent.type === "keydown") {
if (e.inputEvent && (e.inputEvent.type === "keydown" || e.inputEvent.type === "keyup")) {
pan.classList.add("keyboard");
} else {
pan.classList.remove("keyboard");
Expand Down
62 changes: 61 additions & 1 deletion test/unit/inputType/MoveKeyInput.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ describe("MoveKeyInput", () => {
// Then
expect(this.observer).to.be.not.exist;
expect(this.inst.element).to.be.exist;
expect(this._timer).to.be.not.exist;
});
it("should check status after destroy", () => {
// Given
Expand All @@ -36,7 +37,7 @@ describe("MoveKeyInput", () => {
// Then
expect(this.inst.element).to.be.not.exist;
expect(this.observer).to.be.not.exist;

expect(this._timer).to.be.not.exist;
this.inst = null;
});
});
Expand Down Expand Up @@ -255,6 +256,65 @@ describe("MoveKeyInput", () => {
expect(deltaY).to.be.equal(1);
});
});
// down
[1, 2, 3, 4].forEach((keyCode, idx) => {
it("should not trigger 'change' event to down wrong keyCode("+keyCode+")", done => {
// Given
let changeTriggered = false;
let deltaY = 0;
const changeHandler = sinon.spy();
const holdHandler = sinon.spy();
const releaseHandler = sinon.spy();
const downKeyCode = {
keyCode: keyCode
};


this.inst.on("hold", holdHandler);
this.inst.on("change", changeHandler);
this.inst.on("release", releaseHandler);

// When
TestHelper.key(this.el, "keydown", downKeyCode);

// Then
expect(changeHandler.calledOnce).to.be.false;
expect(holdHandler.calledOnce).to.be.false;
setTimeout(() => {
TestHelper.key(this.el, "keyup", downKeyCode);
expect(releaseHandler.calledOnce).to.be.false;
done();
}, 100);
});
it("triggering order test to down wrong keyCode("+keyCode+")", (done) => {
// Given
const deltaY = 1;
const eventLog = [];
const eventLogAnswer = ["hold", "change", "release"];

this.inst
.on("hold", () => {
eventLog.push("hold");
}).on("change", () => {
eventLog.push("change");
}).on("release", () => {
eventLog.push("release");
});

// When
TestHelper.key(this.el, "keydown", {keyCode: KEYMAP.DOWN_ARROW}, () => {
setTimeout(()=> {
TestHelper.key(this.el, "keyup", {keyCode: KEYMAP.keyCode}, () => {
setTimeout(()=> {
// Then
expect(eventLog).to.be.deep.equal(eventLogAnswer);
done();
}, 100);
});
}, 20);
});
});
});
});
});

5 changes: 5 additions & 0 deletions test/unit/inputType/TestHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,13 @@ export default class TestHelper {
wheelEvent = document.createEvent("WheelEvent");
wheelEvent.initEvent("wheel", params);
}
let isCall = false;

function callbackOnce() {
if (isCall) {
return;
}
isCall = true;
callback && callback();
target.removeEventListener("wheel", callbackOnce);// Is this posible??
}
Expand Down
182 changes: 101 additions & 81 deletions test/unit/inputType/WheelInput.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,95 +92,115 @@ describe("WheelInput", () => {
});
});

describe("wheel event test", function() {
beforeEach(() => {
this.el = sandbox();
this.input = new WheelInput(this.el);
this.inst = new Axes({
x: {
range: [10, 120]
}
});
this.inst.connect(["x"], this.input);
});

afterEach(() => {
if (this.ins) {
this.inst.destroy();
this.inst = null;
}
if (this.input) {
this.input.destroy();
this.input = null;
}
cleanup();
});

it("no event triggering when disconnected", (done) => {
// Given
const deltaY = 1;
let changeTriggered = false;

this.inst
.on("change", () => {
changeTriggered = true;
});
this.inst.disconnect();

// When
TestHelper.wheelVertical(this.el, deltaY, () => {
// Then
expect(changeTriggered).to.be.false;
done();
});
});
[1,2,4].forEach(function(scale) {
[true, false].forEach(function(useNormalized) {
describe(`wheel event test(useNormalized: ${useNormalized})`, function() {
beforeEach(() => {
this.el = sandbox();
this.input = new WheelInput(this.el, {useNormalized: useNormalized, scale: scale});
this.inst = new Axes({
x: {
range: [10, 120]
}
});
this.inst.connect(["x"], this.input);
});

afterEach(() => {
this.el = null;
if (this.inst) {
this.inst.destroy();
this.inst = null;
}
if (this.input) {
this.input.destroy();
this.input = null;
}
cleanup();
});
[-1,-3,-5,-9].forEach(d => {
it(`should check delta test (delta: ${d}, useNormalized: ${useNormalized})`, done => {
this.inst.on("change", ({pos, delta}) => {
if (delta.x === 0) {
return;
}
const sign = 1;
expect(delta.x).to.be.equals(scale * (useNormalized ? sign : (sign * Math.abs(d))));
});
this.inst.on("release", e => {
done();
});
TestHelper.wheelVertical(this.el, d, () => {

it("no event triggering when offset is 0", (done) => {
// Given
const deltaY = 0;
let changeTriggered = false;
});
});
});
it("no event triggering when disconnected", (done) => {
// Given
const deltaY = 1;
let changeTriggered = false;

this.inst
.on("change", () => {
changeTriggered = true;
});
this.inst.disconnect();

this.inst
.on("change", () => {
changeTriggered = true;
});
// When
TestHelper.wheelVertical(this.el, deltaY, () => {
// Then
expect(changeTriggered).to.be.false;
done();
});
});

// When
TestHelper.wheelVertical(this.el, deltaY, () => {
// Then
expect(changeTriggered).to.be.false;
done();
});
});
it("no event triggering when offset is 0", (done) => {
// Given
const deltaY = 0;
let changeTriggered = false;

it("triggering order test", (done) => {
// Given
const deltaY = 1;
const eventLog = [];
const eventLogAnswer = ["hold", "change", "change", "release"];

this.inst
.on("hold", () => {
eventLog.push("hold");
}).on("change", () => {
eventLog.push("change");
}).on("release", () => {
eventLog.push("release");
});
this.inst
.on("change", () => {
changeTriggered = true;
});

// When
TestHelper.wheelVertical(this.el, deltaY, () => {
setTimeout(()=> {
// When
TestHelper.wheelVertical(this.el, deltaY, () => {
// Then
expect(changeTriggered).to.be.false;
done();
});
});

it("triggering order test", (done) => {
// Given
const deltaY = 1;
const eventLog = [];
const eventLogAnswer = ["hold", "change", "change", "release"];

this.inst
.on("hold", () => {
eventLog.push("hold");
}).on("change", () => {
eventLog.push("change");
}).on("release", () => {
eventLog.push("release");
});

// When
TestHelper.wheelVertical(this.el, deltaY, () => {
setTimeout(()=> {
// Then
expect(eventLog).to.be.deep.equal(eventLogAnswer);
done();
}, 60);
TestHelper.wheelVertical(this.el, deltaY, () => {
setTimeout(()=> {
// Then
expect(eventLog).to.be.deep.equal(eventLogAnswer);
done();
}, 60);
});
}, 20);
});
}, 20);
});
});
});
});
});
});

0 comments on commit 6b36c76

Please sign in to comment.