Skip to content

Commit a0809c6

Browse files
authored
Merge pull request #63 from simeg/clean-up-test-code
Clean up test code
2 parents 1728cb2 + 295a909 commit a0809c6

File tree

3 files changed

+55
-46
lines changed

3 files changed

+55
-46
lines changed

examples/simple.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ const Test = React.createClass({
6464
},
6565

6666
onVisibleChange(visible) {
67-
console.log('tooltip', visible);
67+
console.log('tooltip', visible); // eslint-disable-line no-console
6868
},
6969

7070
onDestroyCheck() {

index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
21
module.exports = require('./src/');

tests/index.js

Lines changed: 54 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,77 +2,87 @@ import '../assets/bootstrap.less';
22
import expect from 'expect.js';
33
import React from 'react';
44
import ReactDOM from 'react-dom';
5-
import TestUtils from 'react-addons-test-utils';
5+
import { Simulate } from 'react-addons-test-utils';
66
import $ from 'jquery';
77
import Tooltip from '../index';
88
import async from 'async';
99
window.$ = $;
10-
const Simulate = TestUtils.Simulate;
1110

12-
function timeout(ms) {
11+
const timeout = (ms) => {
1312
return (done) => {
1413
setTimeout(done, ms);
1514
};
16-
}
15+
};
1716

18-
describe('rc-tooltip', function run() {
19-
this.timeout(40000);
20-
const div = document.createElement('div');
21-
div.style.margin = '100px';
22-
document.body.insertBefore(div, document.body.firstChild);
17+
const expectComponentPopupToBeOk = (component) => {
18+
const popupDomNode = component.getPopupDomNode();
19+
expect(popupDomNode).to.be.ok();
20+
};
21+
22+
const expectPopupToHaveContent = (component, content) => {
23+
const popupDomNode = component.getPopupDomNode();
24+
expect($(popupDomNode).find('.x-content').html()).to.be(content);
25+
expect(popupDomNode).to.be.ok();
26+
};
27+
28+
const expectPopupToBeHidden = (component) => {
29+
const popupDomNode = component.getPopupDomNode();
30+
expect($(popupDomNode).css('display')).to.be('none');
31+
};
32+
33+
const verifyContent = (component, content, done) => {
34+
const componentDomNode = ReactDOM.findDOMNode(component);
35+
async.series([timeout(20), (next) => {
36+
expectPopupToHaveContent(component, content);
37+
expectComponentPopupToBeOk(component);
38+
Simulate.click(componentDomNode);
39+
next();
40+
}, timeout(20), (next) => {
41+
expectPopupToBeHidden(component);
42+
next();
43+
}], done);
44+
};
45+
46+
describe('rc-tooltip', () => {
47+
let div;
48+
before(() => {
49+
timeout(40000);
50+
div = document.createElement('div');
51+
div.style.margin = '100px';
52+
document.body.insertBefore(div, document.body.firstChild);
53+
});
2354

2455
afterEach(() => {
2556
ReactDOM.unmountComponentAtNode(div);
2657
});
2758

28-
describe('trigger', () => {
29-
it('works', (done) => {
59+
describe('shows and hides itself on click', () => {
60+
it('using an element overlay', (done) => {
3061
const tooltip = ReactDOM.render(
3162
<Tooltip
3263
trigger={['click']}
3364
placement="left"
34-
overlay={<strong className="x-content">tooltip2</strong>}
65+
overlay={<strong className="x-content">Tooltip content</strong>}
3566
>
36-
<div className="target">click</div>
67+
<div className="target">Click this</div>
3768
</Tooltip>, div);
38-
const domNode = ReactDOM.findDOMNode(tooltip);
39-
Simulate.click(domNode);
40-
async.series([timeout(20), (next) => {
41-
const popupDomNode = tooltip.getPopupDomNode();
42-
expect($(popupDomNode).find('.x-content').html()).to.be('tooltip2');
43-
expect(popupDomNode).to.be.ok();
44-
Simulate.click(domNode);
45-
next();
46-
}, timeout(20), (next) => {
47-
const popupDomNode = tooltip.getPopupDomNode();
48-
expect($(popupDomNode).css('display')).to.be('none');
49-
next();
50-
}], done);
69+
const componentDomNode = ReactDOM.findDOMNode(tooltip);
70+
Simulate.click(componentDomNode);
71+
verifyContent(tooltip, 'Tooltip content', done);
5172
});
52-
});
53-
describe('trigger-functon', () => {
54-
it('works with a function overlay', (done) => {
73+
74+
it('using a function overlay', (done) => {
5575
const tooltip = ReactDOM.render(
5676
<Tooltip
5777
trigger={['click']}
5878
placement="left"
59-
overlay={() => (<strong className="x-content">tooltip</strong>)}
79+
overlay={() => (<strong className="x-content">Tooltip content</strong>)}
6080
>
61-
<div className="target">click</div>
81+
<div className="target">Click this</div>
6282
</Tooltip>, div);
63-
const domNode = ReactDOM.findDOMNode(tooltip);
64-
Simulate.click(domNode);
65-
async.series([timeout(20), (next) => {
66-
const popupDomNode = tooltip.getPopupDomNode();
67-
expect($(popupDomNode).find('.x-content').html()).to.be('tooltip');
68-
expect(popupDomNode).to.be.ok();
69-
Simulate.click(domNode);
70-
next();
71-
}, timeout(20), (next) => {
72-
const popupDomNode = tooltip.getPopupDomNode();
73-
expect($(popupDomNode).css('display')).to.be('none');
74-
next();
75-
}], done);
83+
const componentDomNode = ReactDOM.findDOMNode(tooltip);
84+
Simulate.click(componentDomNode);
85+
verifyContent(tooltip, 'Tooltip content', done);
7686
});
7787
});
7888
});

0 commit comments

Comments
 (0)