|
1 | 1 | import React from 'react';
|
2 |
| -import ReactDOM from 'react-dom'; |
3 |
| -import {Motion} from 'react-motion'; |
4 |
| -import TestUtils, {createRenderer} from 'react-addons-test-utils'; |
5 |
| -import Item from '../src/item'; |
6 |
| -import expect from 'expect'; |
7 |
| -import expectJSX from 'expect-jsx'; |
8 | 2 | import assert from 'power-assert';
|
| 3 | +import { spy } from 'sinon'; |
| 4 | +import { mount, shallow } from 'enzyme'; |
| 5 | +import MenuItem from '../src/item'; |
9 | 6 |
|
10 |
| -expect.extend(expectJSX); |
| 7 | +describe('Item Component test', function () { |
11 | 8 |
|
12 |
| -describe('Item Component test', () => { |
13 |
| - let renderer = createRenderer(); |
14 |
| - console.log(renderer); |
15 |
| - it ('Should Item rendered Motion component with initial state value', (done) => { |
| 9 | + this.timeout(10000); |
16 | 10 |
|
17 |
| - renderer.render(<Item direction='vertical' x={100} y={100} />) |
18 |
| - const actualElement = renderer.getRenderOutput(); |
19 |
| - let expectedElement = ( |
20 |
| - <Motion style={{scaleX: {config: [1500, 100], val: 0}, scaleY: {config: [1500, 100], val: 0}, x: 100, y: {config: [1500, 50], val: 100}}} /> |
| 11 | + it('should mount item component without error', () => { |
| 12 | + mount( |
| 13 | + <MenuItem x={0} y={0} name="sample"> |
| 14 | + <div>sample</div> |
| 15 | + </MenuItem>, |
21 | 16 | );
|
22 |
| - expect(actualElement).toEqualJSX(expectedElement); |
23 |
| - done(); |
24 | 17 | });
|
25 | 18 |
|
26 |
| - it ('Should Item rendered Motion component with expected value, when set vertical and call start()', (done) => { |
27 |
| - renderer.render(<Item direction='vertical' x={100} y={200} distance={50} />); |
28 |
| - renderer._instance._instance.start() |
29 |
| - setTimeout(() => { |
30 |
| - const actualElement = renderer.getRenderOutput(); |
31 |
| - let expectedElement = ( |
32 |
| - <Motion style={{scaleX: {config: [1500, 150], val: 0.7}, scaleY: {config: [1500, 150], val: 1.6}, x: 100, y: {config: [1500, 100], val: 250}}} /> |
33 |
| - ); |
34 |
| - expect(actualElement).toEqualJSX(expectedElement); |
35 |
| - }, 60); |
| 19 | + it('should call onOpenAnimationEnd callback, when opend', (done) => { |
| 20 | + const onOpenAnimationEnd = spy(); |
| 21 | + const wrapper = shallow( |
| 22 | + <MenuItem x={0} y={0} name="sample" onOpenAnimationEnd={onOpenAnimationEnd}> |
| 23 | + <div>sample</div> |
| 24 | + </MenuItem>, |
| 25 | + ); |
| 26 | + wrapper.instance().start(); |
36 | 27 | setTimeout(() => {
|
37 |
| - const actualElement = renderer.getRenderOutput(); |
38 |
| - let expectedElement = ( |
39 |
| - <Motion style={{scaleX: {config: [1500, 18], val: 1}, scaleY: {config: [1500, 18], val: 1}, x: 100, y: {config: [1500, 100], val: 250}}} /> |
40 |
| - ); |
41 |
| - expect(actualElement).toEqualJSX(expectedElement); |
| 28 | + assert.equal(onOpenAnimationEnd.callCount, 1); |
| 29 | + assert.equal(onOpenAnimationEnd.getCall(0).args[0], 'sample'); |
42 | 30 | done();
|
43 |
| - }, 100); |
| 31 | + }, 200); |
44 | 32 | });
|
45 | 33 |
|
46 |
| - it ('Should Item rendered Motion component with expected value, when set vertical and call start()', (done) => { |
47 |
| - renderer.render(<Item direction='horizontal' x={100} y={200} distance={50} />); |
48 |
| - renderer._instance._instance.start() |
49 |
| - setTimeout(() => { |
50 |
| - const actualElement = renderer.getRenderOutput(); |
51 |
| - let expectedElement = ( |
52 |
| - <Motion style={{scaleX: {config: [1500, 150], val: 1.6}, scaleY: {config: [1500, 150], val: 0.7}, y: 200, x: {config: [1500, 100], val: 150}}} /> |
53 |
| - ); |
54 |
| - expect(actualElement).toEqualJSX(expectedElement); |
55 |
| - }, 60); |
| 34 | + it('should call onOpenAnimationEnd callback, when opend', (done) => { |
| 35 | + const wrapper = mount( |
| 36 | + <MenuItem x={10} y={20} name="sample"> |
| 37 | + <div>sample</div> |
| 38 | + </MenuItem>, |
| 39 | + ); |
| 40 | + wrapper.instance().start(); |
56 | 41 | setTimeout(() => {
|
57 |
| - const actualElement = renderer.getRenderOutput(); |
58 |
| - let expectedElement = ( |
59 |
| - <Motion style={{scaleX: {config: [1500, 18], val: 1}, scaleY: {config: [1500, 18], val: 1}, y: 200, x: {config: [1500, 100], val: 150}}} /> |
60 |
| - ); |
61 |
| - expect(actualElement).toEqualJSX(expectedElement); |
62 |
| - done(); |
63 |
| - }, 100); |
64 |
| - }); |
65 |
| - |
66 |
| - it ('Should call onOpenAnimationEnd callback, when call start()', (done) => { |
67 |
| - const onOpenAnimationEnd = () => { |
68 |
| - console.log('open animation end'); |
| 42 | + assert.equal(wrapper.getDOMNode().style.transform, 'translate3d(10px, 20px, 0px) scaleX(1) scaleY(1)'); |
69 | 43 | done();
|
70 |
| - } |
71 |
| - renderer.render(<Item direction='vertical' x={100} y={200} distance={50} onOpenAnimationEnd={onOpenAnimationEnd}/>); |
72 |
| - renderer._instance._instance.start(); |
| 44 | + }, 3000); |
73 | 45 | });
|
74 | 46 |
|
75 |
| - it ('Should call onCloseAnimationEnd callback, when call reverse()', (done) => { |
76 |
| - const onOpenAnimationEnd = () => { |
77 |
| - console.log('open animation end'); |
78 |
| - renderer._instance._instance.reverse(); |
79 |
| - }; |
80 |
| - const onCloseAnimationEnd = () => { |
81 |
| - console.log('close animation end'); |
| 47 | + it('should call onCloseAnimationEnd callback, when closed', (done) => { |
| 48 | + const onCloseAnimationEnd = spy(); |
| 49 | + const wrapper = shallow( |
| 50 | + <MenuItem x={0} y={0} name="sample" onCloseAnimationEnd={onCloseAnimationEnd}> |
| 51 | + <div>sample</div> |
| 52 | + </MenuItem>, |
| 53 | + ); |
| 54 | + wrapper.instance().start(); |
| 55 | + wrapper.instance().reverse(); |
| 56 | + setTimeout(() => { |
| 57 | + assert.equal(onCloseAnimationEnd.callCount, 1); |
| 58 | + assert.equal(onCloseAnimationEnd.getCall(0).args[0], 'sample'); |
82 | 59 | done();
|
83 |
| - }; |
84 |
| - renderer.render(<Item direction='vertical' x={100} y={200} distance={50} |
85 |
| - onOpenAnimationEnd={onOpenAnimationEnd} |
86 |
| - onCloseAnimationEnd={onCloseAnimationEnd} />); |
87 |
| - renderer._instance._instance.start(); |
88 |
| - }); |
89 |
| - |
90 |
| - afterEach(done => { |
91 |
| - renderer = null; |
92 |
| - renderer = createRenderer(); |
93 |
| - ReactDOM.unmountComponentAtNode(document.body); |
94 |
| - document.body.innerHTML = ""; |
95 |
| - setTimeout(done); |
| 60 | + }, 200); |
96 | 61 | });
|
97 | 62 | });
|
98 |
| - |
99 |
| - |
0 commit comments