Skip to content

Commit 08b86b9

Browse files
committed
Setup tests
1 parent aa90a3f commit 08b86b9

File tree

3 files changed

+51
-1
lines changed

3 files changed

+51
-1
lines changed

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,15 @@
5757
"classnames": "~2.2.5",
5858
"coveralls": "~3.0.0",
5959
"css-loader": "~0.28.7",
60+
"enzyme": "~3.2.0",
61+
"enzyme-adapter-react-16": "~1.1.1",
6062
"eslint": "~4.13.1",
6163
"eslint-config-trendmicro": "~1.1.0",
6264
"eslint-loader": "~1.9.0",
6365
"eslint-plugin-import": "~2.8.0",
6466
"eslint-plugin-jsx-a11y": "~6.0.2",
6567
"eslint-plugin-react": "~7.5.1",
68+
"jsdom": "~11.5.1",
6669
"lodash.debounce": "~4.0.8",
6770
"nib": "~1.1.2",
6871
"react": "^0.14.0 || >=15.0.0",

setupTests.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import Enzyme from 'enzyme';
2+
import Adapter from 'enzyme-adapter-react-16';
3+
import { JSDOM } from 'jsdom';
4+
5+
// React 16 Enzyme adapter
6+
Enzyme.configure({ adapter: new Adapter() });
7+
8+
// Ignore `.styl` files
9+
require.extensions['.styl'] = () => {
10+
return;
11+
};
12+
13+
// JSDOM
14+
const jsdom = new JSDOM('<!doctype html><html><body></body></html>');
15+
const { window } = jsdom;
16+
17+
const copyProps = (src, target) => {
18+
const props = Object.getOwnPropertyNames(src)
19+
.filter(prop => typeof target[prop] === 'undefined')
20+
.reduce((result, prop) => ({
21+
...result,
22+
[prop]: Object.getOwnPropertyDescriptor(src, prop),
23+
}), {});
24+
Object.defineProperties(target, props);
25+
};
26+
27+
global.window = window;
28+
global.document = window.document;
29+
global.navigator = {
30+
userAgent: 'node.js',
31+
};
32+
33+
copyProps(window, global);

test/index.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
1+
import React from 'react';
2+
import { mount } from 'enzyme';
13
import { test } from 'tap';
4+
import '../setupTests';
5+
import InfiniteTree from '../src';
6+
import Tree from '../examples/Tree';
27

3-
test('noop', (t) => {
8+
test('<InfiniteTree />', (t) => {
9+
const onUpdate = (node) => {
10+
t.equal(node.id, '<root>.0');
11+
};
12+
13+
const wrapper = mount((
14+
<Tree onUpdate={onUpdate} />
15+
));
16+
17+
t.equal(wrapper.find(InfiniteTree).length, 1, 'should render <InfiniteTree /> component');
418
t.end();
519
});

0 commit comments

Comments
 (0)