import * as React from "react";
import * as ReactDOM from "react-dom";
import MoveableExample from "./MoveableExample";
import { wait } from "./TestHelper";
describe("test Moveable", () => {
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 Moveable isInside", async () => {
let moveable!: MoveableExample;
// 300 x 220
ReactDOM.render( {
if (e) {
moveable = e as any;
}
}} />, document.querySelector(".container"));
await wait(300);
const state = moveable.innerMoveable.moveable.state;
expect(state.width).to.be.equals(302);
expect(state.height).to.be.equals(222);
expect(moveable.innerMoveable.isInside(40, 40)).to.be.true;
expect(moveable.innerMoveable.isInside(300, 40)).to.be.true;
expect(moveable.innerMoveable.isInside(-40, 40)).to.be.false;
expect(moveable.innerMoveable.isInside(340, 40)).to.be.false;
expect(moveable.innerMoveable.isInside(340, 40)).to.be.false;
});
it("test Moveable isMoveableElement", async () => {
let moveable!: MoveableExample;
// Given
// 302 x 222
ReactDOM.render( {
if (e) {
moveable = e as any;
}
}} />, document.querySelector(".container"));
await wait(300);
const isMoveable1 =
moveable.innerMoveable.isMoveableElement(document.querySelector(".container")!);
const isMoveable2 =
moveable.innerMoveable.isMoveableElement(document.querySelector(".moveable-control-box")!);
expect(isMoveable1).to.be.false;
expect(isMoveable2).to.be.true;
});
it("test Moveable updateTarget", async () => {
let moveable!: MoveableExample;
// Given
// 302 x 222
ReactDOM.render( {
if (e) {
moveable = e as any;
}
}} />, document.querySelector(".container"));
await wait(300);
const left1 = moveable.innerMoveable.moveable.state.left;
const top1 = moveable.innerMoveable.moveable.state.top;
// When
document.querySelector("svg")!.style.left = "100px";
moveable.innerMoveable.updateTarget();
const left2 = moveable.innerMoveable.moveable.state.left;
const top2 = moveable.innerMoveable.moveable.state.top;
await wait(300);
// Then
expect(left2).to.be.equals(left1 + 100);
expect(top2).to.be.equals(top1);
});
it("test Moveable updateRect", async () => {
let moveable!: MoveableExample;
// Given
// 302 x 222
ReactDOM.render( {
if (e) {
moveable = e as any;
}
}} />, document.querySelector(".container"));
await wait(300);
const left1 = moveable.innerMoveable.moveable.state.left;
const top1 = moveable.innerMoveable.moveable.state.top;
// When
document.querySelector(".c2")!.style.left = "100px";
document.querySelector(".c2")!.style.top = "100px";
document.querySelector("svg")!.style.left = "100px";
moveable.innerMoveable.updateRect();
const left2 = moveable.innerMoveable.moveable.state.left;
const top2 = moveable.innerMoveable.moveable.state.top;
await wait(300);
// Then
expect(left2).to.be.equals(left1 + 200);
expect(top2).to.be.equals(top1 + 100);
});
it ("test Moveable changeTarget", async() => {
let moveable!: MoveableExample;
// Given
// 302 x 222
ReactDOM.render( {
if (e) {
moveable = e as any;
}
}} />, document.querySelector(".container"));
await wait(300);
const targetDragger = moveable.innerMoveable.moveable.targetDragger;
const controlDragger = moveable.innerMoveable.moveable.controlDragger;
// When
moveable.setState({
target: document.querySelector(".c2"),
});
await wait(300);
// Then
const nextTargetDragger = moveable.innerMoveable.moveable.targetDragger;
const nextControlDragger = moveable.innerMoveable.moveable.controlDragger;
expect(targetDragger).to.be.ok;
expect(nextTargetDragger).to.be.ok;
expect(nextTargetDragger).to.be.not.equals(targetDragger);
expect(controlDragger).to.be.not.ok;
expect(nextControlDragger).to.be.not.ok;
});
});