diff --git a/tests/unit/splitter.spec.js b/tests/unit/splitter.spec.js new file mode 100644 index 0000000..0ee12ee --- /dev/null +++ b/tests/unit/splitter.spec.js @@ -0,0 +1,108 @@ +import { expect } from 'chai' +import sinon from 'sinon' +import splitter from '@/splitter' + +describe('splitter.js', () => { + afterEach(() => { + sinon.restore() + }) + + it('getCurrentMouseDrag', () => { + const container = document.createElement('div') + container.style.width = '100px' + container.style.height = '100px' + container.style.position = 'fixed' + container.style.top = '10px' + container.style.left = '20px' + + document.body.appendChild(container) + + const event = new MouseEvent("mousemove", { + clientX: 70, + clientY: 80 + }) + + const mouseDrag = splitter.getCurrentMouseDrag(event, container) + expect(mouseDrag.x).to.equal(50) + expect(mouseDrag.y).to.equal(70) + }) + + it("getCurrentDragPercentage - horisontal", () => { + sinon.stub(splitter, 'getCurrentMouseDrag').returns({ x: 50, y: 70 }) + + const event = {} + const isHorisontal = true + const container = document.createElement('div') + container.style.width = '200px' + container.style.height = '140px' + + document.body.appendChild(container) + + const dragPercentage = splitter.getCurrentDragPercentage(event, container, isHorisontal) + expect(dragPercentage).to.equal(50) + }) + + it("getCurrentDragPercentage - vertical", () => { + sinon.stub(splitter, 'getCurrentMouseDrag').returns({ x: 50, y: 70 }) + + const event = {} + const isHorisontal = false + const container = document.createElement('div') + container.style.width = '200px' + container.style.height = '140px' + + document.body.appendChild(container) + + const dragPercentage = splitter.getCurrentDragPercentage(event, container, isHorisontal) + expect(dragPercentage).to.equal(25) + }) + + it("calculateOffset", () => { + sinon.stub(splitter, 'getCurrentDragPercentage').returns(25) + + const event = {} + const container = {} + + const splitterInfo = { + container, + paneBeforeMax: 70, + paneAfterMax: 80, + isHorisontal: true + } + const offset = splitter.calculateOffset(event, splitterInfo) + + expect(offset).to.equal(25) + }) + + it("calculateOffset prevents dragging beyond paneBefore max", () => { + sinon.stub(splitter, 'getCurrentDragPercentage').returns(75) + + const event = {} + const container = {} + const splitterInfo = { + container, + paneBeforeMax: 70, + paneAfterMax: 80, + isHorisontal: true + } + const offset = splitter.calculateOffset(event, splitterInfo) + + expect(offset).to.equal(70) + }) + + it("calculateOffset prevents dragging beyond paneAfter max", () => { + sinon.stub(splitter, 'getCurrentDragPercentage').returns(10) + + const event = {} + const container = {} + const splitterInfo = { + container, + paneBeforeMax: 70, + paneAfterMax: 80, + isHorisontal: true + } + const offset = splitter.calculateOffset(event, splitterInfo) + + expect(offset).to.equal(20) + }) +})