').appendTo(document.body);
- });
-
- afterEach(() => {
- try {
- ReactDOM.unmountComponentAtNode(container[0]);
- } catch (e) {
- // do nothing...
- }
- if (container) container.remove();
- container = null;
- });
-
- it('resize', () => {
- const align = {
- points: ['bc', 'tc'],
- };
-
- class Test extends React.Component {
- state = {
- height: 80,
- };
-
- getTarget = () => this.$target;
-
- targetRef = (ele) => {
- this.$target = ele;
- };
-
- render() {
- const { height } = this.state;
-
- return (
-
, container[0]);
- const $src = $('#ele_src');
- expect($src.offset().top).to.be(20);
-
- instance.setState({
- height: 60,
- });
- expect($src.offset().top).to.be(40);
- });
-});
diff --git a/tests/element.test.js b/tests/element.test.js
new file mode 100644
index 0000000..813e1e8
--- /dev/null
+++ b/tests/element.test.js
@@ -0,0 +1,69 @@
+/* eslint-disable class-methods-use-this */
+import React from 'react';
+import { mount } from 'enzyme';
+import Align from '../src';
+
+describe('element align', () => {
+ it('resize', () => {
+ jest.useFakeTimers();
+
+ const align = {
+ points: ['bc', 'tc'],
+ };
+
+ const onAlign = jest.fn();
+
+ class Test extends React.Component {
+ getTarget = () => this.$target;
+
+ targetRef = ele => {
+ this.$target = ele;
+ };
+
+ render() {
+ return (
+
);
+ expect(onAlign).toHaveBeenCalled();
+
+ // Window resize
+ onAlign.mockReset();
+ window.dispatchEvent(new Event('resize'));
+ jest.runAllTimers();
+ expect(onAlign).toHaveBeenCalled();
+
+ // Not listen resize
+ onAlign.mockReset();
+ wrapper.setProps({ monitorWindowResize: false });
+ window.dispatchEvent(new Event('resize'));
+ jest.runAllTimers();
+ expect(onAlign).not.toHaveBeenCalled();
+
+ // Remove should not crash
+ wrapper.setProps({ monitorWindowResize: true });
+ wrapper.unmount();
+
+ jest.useRealTimers();
+ });
+});
+/* eslint-enable */
diff --git a/tests/index.js b/tests/index.js
deleted file mode 100644
index 09268cf..0000000
--- a/tests/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import 'core-js/es6/map';
-import 'core-js/es6/set';
-import $ from 'jquery';
-import Align from '../src';
-
-$('')
- .appendTo(document.getElementsByTagName('head'));
-
-describe('rc-align', () => {
- it('exists', () => {
- expect(Align).to.be.ok();
- });
-});
-
-require('./element.spec');
-require('./point.spec');
-require('./util.spec');
diff --git a/tests/point.spec.js b/tests/point.spec.js
deleted file mode 100644
index 54f72cf..0000000
--- a/tests/point.spec.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/* eslint react/no-render-return-value:0 */
-
-import React from 'react';
-import ReactDOM from 'react-dom';
-import $ from 'jquery';
-import expect from 'expect.js';
-import Align from '../src';
-
-describe('point align', () => {
- let container;
-
- function createAlign(props, callback) {
- class Test extends React.Component {
- state = {};
-
- render() {
- return (
-
').appendTo(document.body);
- });
-
- afterEach(() => {
- try {
- ReactDOM.unmountComponentAtNode(container[0]);
- } catch (e) {
- // do nothing...
- }
- if (container) container.remove();
- container = null;
- });
-
- it('not pass point', (done) => {
- createAlign(
- {
- align: { points: ['cc'] },
- target: null,
- },
- () => {
- const $align = $('#align')[0];
- expect($align).to.be.ok();
- expect($align.style.left).to.not.be.ok();
- expect($align.style.top).to.not.be.ok();
- done();
- },
- );
- });
-
- it('pass point', (done) => {
- const wrapper = createAlign(
- {
- align: { points: ['tc'] },
- target: null,
- },
- );
-
- wrapper.setState({
- target: { pageX: 1128, pageY: 903 },
- }, () => {
- const $align = $('#align');
- expect($align[0]).to.be.ok();
- expect($align.offset().left).to.be(1118);
- expect($align.offset().top).to.be(903);
-
- wrapper.setState({
- target: { pageX: 321, pageY: 613 },
- }, () => {
- expect($align.offset().left).to.be(311);
- expect($align.offset().top).to.be(613);
-
- done();
- });
- });
- });
-});
diff --git a/tests/point.test.js b/tests/point.test.js
new file mode 100644
index 0000000..3bf020a
--- /dev/null
+++ b/tests/point.test.js
@@ -0,0 +1,45 @@
+/* eslint-disable class-methods-use-this */
+import React from 'react';
+import { mount } from 'enzyme';
+import Align from '../src';
+
+describe('point align', () => {
+ function createAlign(props) {
+ return mount(
+
+
+ ,
+ );
+ }
+
+ it('not pass point', () => {
+ const onAlign = jest.fn();
+
+ createAlign({
+ align: { points: ['cc'] },
+ target: null,
+ onAlign,
+ });
+
+ expect(onAlign).not.toHaveBeenCalled();
+ });
+
+ it('pass point', () => {
+ jest.useFakeTimers();
+ const onAlign = jest.fn();
+ const wrapper = createAlign({
+ align: { points: ['tc'] },
+ target: null,
+ onAlign,
+ });
+
+ expect(onAlign).not.toHaveBeenCalled();
+
+ wrapper.setProps({ target: { pageX: 1128, pageY: 903 } });
+ jest.runAllTimers();
+ expect(onAlign).toHaveBeenCalled();
+
+ jest.useRealTimers();
+ });
+});
+/* eslint-enable */
diff --git a/tests/util.spec.js b/tests/util.test.js
similarity index 54%
rename from tests/util.spec.js
rename to tests/util.test.js
index 09ab476..269a0f9 100644
--- a/tests/util.spec.js
+++ b/tests/util.test.js
@@ -1,6 +1,3 @@
-/* eslint react/no-render-return-value:0 */
-
-import expect from 'expect.js';
import { isSamePoint } from '../src/util';
describe('util', () => {
@@ -10,14 +7,14 @@ describe('util', () => {
isSamePoint(
{ pageX: 1, pageY: 2, clientX: 3, clientY: 4 },
{ pageX: 1, pageY: 2, clientX: 1, clientY: 5 },
- )
- ).to.be.ok();
+ ),
+ ).toBeTruthy();
expect(
isSamePoint(
{ pageX: 1, pageY: 2, clientX: 3, clientY: 4 },
{ pageX: 5, pageY: 6, clientX: 3, clientY: 4 },
- )
- ).not.to.be.ok();
+ ),
+ ).toBeFalsy();
});
it('by client', () => {
@@ -25,14 +22,19 @@ describe('util', () => {
isSamePoint(
{ pageX: 0, pageY: 2, clientX: 3, clientY: 4 },
{ pageY: 2, clientX: 3, clientY: 4 },
- )
- ).to.be.ok();
+ ),
+ ).toBeTruthy();
expect(
- isSamePoint(
- { pageX: 0, pageY: 2, clientX: 3, clientY: 4 },
- { clientX: 5, clientY: 4 },
- )
- ).not.to.be.ok();
+ isSamePoint({ pageX: 0, pageY: 2, clientX: 3, clientY: 4 }, { clientX: 5, clientY: 4 }),
+ ).toBeFalsy();
+ });
+
+ it('null should be false', () => {
+ expect(isSamePoint({ pageX: 0, pageY: 2, clientX: 3, clientY: 4 }, null)).toBeFalsy();
+ expect(isSamePoint(null, { pageX: 0, pageY: 2, clientX: 3, clientY: 4 })).toBeFalsy();
+ });
+ it('2 empty should be false', () => {
+ expect(isSamePoint({}, {})).toBeFalsy();
});
});
});