import * as React from "react"; import * as ReactDOM from "react-dom"; import RotatableExample from "./RotatableExample"; import { wait, rotateStart, rotate, rotateEnd } from "../TestHelper"; import * as sinon from "sinon"; describe("test Moveable(rotatable)", () => { beforeEach(() => { document.documentElement.style.cssText = "position: relative;height: 100%; width: 100%;margin: 0; padding: 0;"; document.body.style.cssText = "position: relative;height: 100%; width: 100%;margin: 0;padding: 0;"; document.body.innerHTML = `
`; }); afterEach(() => { const container = document.querySelector(".container"); if (container) { ReactDOM.unmountComponentAtNode(container); } }); it("test Rotate", async () => { let moveable!: RotatableExample; // Given const onRotateStart = sinon.spy(e => { e.set(45); }); const onRotate = sinon.spy(); const onRotateEnd = sinon.spy(); ReactDOM.render( { if (e) { moveable = e as any; } }} onRotateStart={onRotateStart} onRotate={onRotate} onRotateEnd={onRotateEnd} />, document.querySelector(".container")); await wait(300); // When // no drag const startInfo = rotateStart(moveable.innerMoveable.moveable); rotateEnd(startInfo); // drag const startInfo2 = rotateStart(moveable.innerMoveable.moveable); rotate(startInfo2, 45); rotate(startInfo2, 90); rotateEnd(startInfo2); await wait(300); // Then expect(onRotateStart.callCount).to.be.equals(2); expect(onRotate.callCount).to.be.equals(2); expect(onRotateEnd.callCount).to.be.equals(2); expect(onRotateStart.args[0][0].target).to.be.equals(document.querySelector(".c2")); expect(onRotate.args[0][0].target).to.be.equals(document.querySelector(".c2")); expect(onRotateEnd.args[0][0].target).to.be.equals(document.querySelector(".c2")); expect(onRotate.args[0][0].beforeDist).to.be.closeTo(45, 1); expect(onRotate.args[1][0].beforeDist).to.be.closeTo(90, 1); expect(onRotate.args[0][0].beforeDelta).to.be.closeTo(45, 1); expect(onRotate.args[1][0].beforeDelta).to.be.closeTo(45, 1); expect(onRotate.args[0][0].beforeRotate).to.be.closeTo(90, 1); expect(onRotate.args[1][0].beforeRotate).to.be.closeTo(135, 1); }); // it("test Cancel rotate", async () => { // let moveable!: RotatableExample; // // Given // const onRotateStart = sinon.spy(e => { // return false; // }); // const onRotate = sinon.spy(); // const onRotateEnd = sinon.spy(); // ReactDOM.render( { // if (e) { // moveable = e as any; // } // }} // onRotateStart={onRotateStart} // onRotate={onRotate} // onRotateEnd={onRotateEnd} // />, document.querySelector(".container")); // await wait(300); // // When // // no drag // mousedown(document.querySelector(".c2")!, [0, 0]); // mouseup(document.querySelector(".c2")!, [0, 0]); // // drag // mousedown(document.querySelector(".c2")!, [0, 0]); // mousemove(document.querySelector(".c2")!, [50, 0]); // mousemove(document.querySelector(".c2")!, [100, 0]); // mouseup(document.querySelector(".c2")!, [100, 0]); // await wait(300); // }); });