Skip to content
This repository was archived by the owner on Jul 30, 2020. It is now read-only.

Commit 7076f52

Browse files
author
Brandon Carroll
committed
tag beta.0
1 parent 37151a5 commit 7076f52

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+108
-102
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
node_modules
22
coverage
33
dist
4+
preset
45
.idea
56
.DS_Store
67

jest-preset.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
const jestPreset = require('react-native/jest-preset');
2+
3+
module.exports = Object.assign(jestPreset, {
4+
transformIgnorePatterns: ['node_modules/(?!(react-native.*|@?react-navigation.*)/)'],
5+
setupFiles: [...jestPreset.setupFiles, require.resolve('./dist/preset/setup.js')],
6+
});

jest.config.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
const jestPreset = require('./jest-preset');
2+
13
const ignores = ['/node_modules/', '/__tests__/helpers/', '__mocks__'];
24

3-
module.exports = {
4-
preset: 'jest-native',
5-
collectCoverageFrom: ['src/**/*.+(js|jsx|ts|tsx)'],
5+
module.exports = Object.assign(jestPreset, {
6+
collectCoverageFrom: ['src/lib/**/*.+(js|jsx|ts|tsx)'],
67
testPathIgnorePatterns: [...ignores],
78
coverageThreshold: {
89
global: {
@@ -12,4 +13,4 @@ module.exports = {
1213
statements: 100,
1314
},
1415
},
15-
};
16+
});

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",
77
"files": [
8-
"dist/**"
8+
"dist/**",
9+
"jest-preset.js"
910
],
1011
"engines": {
1112
"node": ">=8"
@@ -17,7 +18,7 @@
1718
"readme:toc": "doctoc README.md --maxlevel 3 --title '## Table of Contents'",
1819
"test": "jest",
1920
"pretty-quick": "pretty-quick --staged",
20-
"prepublish": "rm -rf dist; babel src --out-dir dist --ignore 'src/__tests__/*' && cp src/index.d.ts dist/index.d.ts",
21+
"prepublishOnly": "rm -rf dist; babel src --out-dir dist --ignore 'src/**/__tests__/*'",
2122
"semantic-release": "semantic-release",
2223
"test:coverage": "jest --coverage",
2324
"test:watch": "jest --watch --coverage"

src/index.js

Lines changed: 1 addition & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1 @@
1-
import React from 'react';
2-
import TR from 'react-test-renderer';
3-
4-
import act from './act-compat';
5-
import * as queries from './queries';
6-
import { prettyPrint } from './pretty-print';
7-
import * as queryHelpers from './query-helpers';
8-
import { resultContainer, TestHook } from './hooks';
9-
import { getQueriesForElement } from './get-queries-for-element';
10-
import { fireEvent as rntlFireEvent, NativeEvent } from './events';
11-
12-
function render(ui, { options = {}, wrapper: WrapperComponent } = {}) {
13-
const wrapUiIfNeeded = innerElement =>
14-
WrapperComponent ? <WrapperComponent>{innerElement}</WrapperComponent> : innerElement;
15-
16-
let container = {};
17-
18-
act(() => {
19-
container = TR.create(wrapUiIfNeeded(ui), options);
20-
});
21-
22-
const baseElement = queryHelpers.proxyUnsafeProperties(container.root);
23-
24-
return {
25-
container,
26-
baseElement,
27-
debug: () => console.log(prettyPrint(container.toJSON())),
28-
unmount: () => container.unmount(),
29-
rerender: rerenderUi => {
30-
act(() => {
31-
container.update(wrapUiIfNeeded(rerenderUi));
32-
});
33-
},
34-
...getQueriesForElement(container),
35-
};
36-
}
37-
38-
function renderHook(callback, { initialProps, ...options } = {}) {
39-
const { result, updateResult, addResolver } = resultContainer();
40-
const hookProps = { current: initialProps };
41-
42-
const toRender = () => (
43-
<TestHook callback={callback} hookProps={hookProps.current}>
44-
{updateResult}
45-
</TestHook>
46-
);
47-
48-
const { unmount, rerender: rerenderComponent } = render(toRender(), options);
49-
50-
return {
51-
result,
52-
waitForNextUpdate: () => new Promise(resolve => addResolver(resolve)),
53-
rerender: (newProps = hookProps.current) => {
54-
hookProps.current = newProps;
55-
rerenderComponent(toRender());
56-
},
57-
unmount,
58-
};
59-
}
60-
61-
function fireEvent(...args) {
62-
let returnValue;
63-
act(() => {
64-
returnValue = rntlFireEvent(...args);
65-
});
66-
return returnValue;
67-
}
68-
69-
Object.keys(rntlFireEvent).forEach(key => {
70-
fireEvent[key] = (...args) => {
71-
let returnValue;
72-
act(() => {
73-
returnValue = rntlFireEvent[key](...args);
74-
});
75-
return returnValue;
76-
};
77-
});
78-
79-
export * from './events';
80-
export * from './get-node-text';
81-
export * from './get-queries-for-element';
82-
export * from './pretty-print';
83-
export * from './queries';
84-
export * from './query-helpers';
85-
export * from './wait';
86-
export * from './wait-for-element';
87-
export * from './wait-for-element-to-be-removed';
88-
export { getDefaultNormalizer } from './matches';
89-
90-
// Export a couple things from jest-native
91-
export { default as CoreComponents } from 'jest-native/preset/core-components';
92-
export { default as UNSAFE_mockComponent } from 'jest-native/preset/mock-component';
93-
94-
export { act, fireEvent, queries, queryHelpers, render, renderHook, NativeEvent };
1+
export * from './lib';
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/lib/index.js

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import React from 'react';
2+
import TR from 'react-test-renderer';
3+
4+
import act from './act-compat';
5+
import * as queries from './queries';
6+
import { prettyPrint } from './pretty-print';
7+
import * as queryHelpers from './query-helpers';
8+
import { resultContainer, TestHook } from './hooks';
9+
import { getQueriesForElement } from './get-queries-for-element';
10+
import { fireEvent as rntlFireEvent, NativeEvent } from './events';
11+
12+
function render(ui, { options = {}, wrapper: WrapperComponent } = {}) {
13+
const wrapUiIfNeeded = innerElement =>
14+
WrapperComponent ? <WrapperComponent>{innerElement}</WrapperComponent> : innerElement;
15+
16+
let container = {};
17+
18+
act(() => {
19+
container = TR.create(wrapUiIfNeeded(ui), options);
20+
});
21+
22+
const baseElement = queryHelpers.proxyUnsafeProperties(container.root);
23+
24+
return {
25+
container,
26+
baseElement,
27+
debug: () => console.log(prettyPrint(container.toJSON())),
28+
unmount: () => container.unmount(),
29+
rerender: rerenderUi => {
30+
act(() => {
31+
container.update(wrapUiIfNeeded(rerenderUi));
32+
});
33+
},
34+
...getQueriesForElement(container),
35+
};
36+
}
37+
38+
function renderHook(callback, { initialProps, ...options } = {}) {
39+
const { result, updateResult, addResolver } = resultContainer();
40+
const hookProps = { current: initialProps };
41+
42+
const toRender = () => (
43+
<TestHook callback={callback} hookProps={hookProps.current}>
44+
{updateResult}
45+
</TestHook>
46+
);
47+
48+
const { unmount, rerender: rerenderComponent } = render(toRender(), options);
49+
50+
return {
51+
result,
52+
waitForNextUpdate: () => new Promise(resolve => addResolver(resolve)),
53+
rerender: (newProps = hookProps.current) => {
54+
hookProps.current = newProps;
55+
rerenderComponent(toRender());
56+
},
57+
unmount,
58+
};
59+
}
60+
61+
function fireEvent(...args) {
62+
let returnValue;
63+
act(() => {
64+
returnValue = rntlFireEvent(...args);
65+
});
66+
return returnValue;
67+
}
68+
69+
Object.keys(rntlFireEvent).forEach(key => {
70+
fireEvent[key] = (...args) => {
71+
let returnValue;
72+
act(() => {
73+
returnValue = rntlFireEvent[key](...args);
74+
});
75+
return returnValue;
76+
};
77+
});
78+
79+
export * from './events';
80+
export * from './get-node-text';
81+
export * from './get-queries-for-element';
82+
export * from './pretty-print';
83+
export * from './queries';
84+
export * from './query-helpers';
85+
export * from './wait';
86+
export * from './wait-for-element';
87+
export * from './wait-for-element-to-be-removed';
88+
export { getDefaultNormalizer } from './matches';
89+
90+
export { act, fireEvent, queries, queryHelpers, render, renderHook, NativeEvent };
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/query-helpers.js renamed to src/lib/query-helpers.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import CoreComponents from 'jest-native/preset/core-components';
1+
import { getCoreComponents } from '../preset/core-components';
22

33
import { prettyPrint } from './pretty-print';
44
import { waitForElement } from './wait-for-element';
@@ -25,7 +25,7 @@ function getMultipleElementsFoundError(message, container) {
2525
);
2626
}
2727

28-
function defaultFilter(node, mockedTypes = CoreComponents) {
28+
function defaultFilter(node, mockedTypes = getCoreComponents()) {
2929
return mockedTypes.includes(node.type);
3030
}
3131

File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)