@cloudflare/util-testing 5.0.248 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/dist/index.d.ts +2 -2
- package/es/createFelaOptions.js +3 -3
- package/es/felaMount.js +12 -3
- package/es/felaShallow.js +41 -46
- package/es/index.js +2 -2
- package/lib/createFelaOptions.js +3 -2
- package/lib/felaMount.js +18 -2
- package/lib/felaShallow.js +50 -51
- package/lib/index.js +13 -1
- package/package.json +10 -11
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,42 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [5.1.0](http://stash.cfops.it:7999/fe/stratus/compare/@cloudflare/util-testing@5.0.251...@cloudflare/util-testing@5.1.0) (2021-10-01)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **stratus:** UI-4239 update snapshots for fela upgrade ([808ece8](http://stash.cfops.it:7999/fe/stratus/commits/808ece8))
|
|
12
|
+
* **util-testing:** UI-4239 upgrade fela packages, update test utils ([511a955](http://stash.cfops.it:7999/fe/stratus/commits/511a955))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## [5.0.251](http://stash.cfops.it:7999/fe/stratus/compare/@cloudflare/util-testing@5.0.250...@cloudflare/util-testing@5.0.251) (2021-09-29)
|
|
19
|
+
|
|
20
|
+
**Note:** Version bump only for package @cloudflare/util-testing
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## [5.0.250](http://stash.cfops.it:7999/fe/stratus/compare/@cloudflare/util-testing@5.0.249...@cloudflare/util-testing@5.0.250) (2021-09-29)
|
|
27
|
+
|
|
28
|
+
**Note:** Version bump only for package @cloudflare/util-testing
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## [5.0.249](http://stash.cfops.it:7999/fe/stratus/compare/@cloudflare/util-testing@5.0.248...@cloudflare/util-testing@5.0.249) (2021-09-28)
|
|
35
|
+
|
|
36
|
+
**Note:** Version bump only for package @cloudflare/util-testing
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
6
42
|
## [5.0.248](http://stash.cfops.it:7999/fe/stratus/compare/@cloudflare/util-testing@5.0.247...@cloudflare/util-testing@5.0.248) (2021-09-28)
|
|
7
43
|
|
|
8
44
|
**Note:** Version bump only for package @cloudflare/util-testing
|
package/dist/index.d.ts
CHANGED
|
@@ -4,8 +4,8 @@ import mockComponent from './mockComponent';
|
|
|
4
4
|
import { setDateMock, restoreDateMock } from './dateMock';
|
|
5
5
|
import felaShallow from './felaShallow';
|
|
6
6
|
import I18n from './I18n';
|
|
7
|
-
import felaMount from './felaMount';
|
|
7
|
+
import felaMount, { felaMountWithoutContext } from './felaMount';
|
|
8
8
|
import findWhereNameContains from './findWhereNameContains';
|
|
9
9
|
import { mockMathRandom, restoreMathRandom } from './mockMathRandom';
|
|
10
10
|
import { mockCan } from './mockProps';
|
|
11
|
-
export { createEnzymeRouterOptions, mockImport, mockComponent, mockMathRandom, restoreMathRandom, felaShallow, felaMount, findWhereNameContains, I18n, setDateMock, restoreDateMock, mockCan };
|
|
11
|
+
export { createEnzymeRouterOptions, mockImport, mockComponent, mockMathRandom, restoreMathRandom, felaShallow, felaMount, felaMountWithoutContext, findWhereNameContains, I18n, setDateMock, restoreDateMock, mockCan };
|
package/es/createFelaOptions.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { THEME_CHANNEL } from 'fela-bindings';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
|
|
4
|
-
const createFelaOptions = (renderer, theme) => {
|
|
4
|
+
const createFelaOptions = (renderer, theme = null) => {
|
|
5
5
|
return {
|
|
6
6
|
childContextTypes: {
|
|
7
7
|
[THEME_CHANNEL]: PropTypes.object,
|
|
@@ -13,7 +13,7 @@ const createFelaOptions = (renderer, theme) => {
|
|
|
13
13
|
},
|
|
14
14
|
context: {
|
|
15
15
|
renderer,
|
|
16
|
-
[THEME_CHANNEL]: theme
|
|
16
|
+
[THEME_CHANNEL]: theme
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
19
|
};
|
package/es/felaMount.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mount as enzymeMount } from 'enzyme';
|
|
2
|
-
import { createRenderer } from '@cloudflare/style-provider';
|
|
2
|
+
import { createRenderer, felaTestContext } from '@cloudflare/style-provider';
|
|
3
3
|
import { renderToString } from 'fela-tools';
|
|
4
4
|
import toJson from 'enzyme-to-json';
|
|
5
5
|
import cssbeautify from 'cssbeautify';
|
|
@@ -7,11 +7,18 @@ import merge from 'deepmerge';
|
|
|
7
7
|
import createFelaOptions from './createFelaOptions';
|
|
8
8
|
import { variables as themeConstants } from '@cloudflare/style-const'; // eslint-disable-line behance/no-deprecated
|
|
9
9
|
|
|
10
|
-
const
|
|
10
|
+
const isFelaComponent = node => {
|
|
11
|
+
var _node$type;
|
|
12
|
+
|
|
13
|
+
return !!(node === null || node === void 0 ? void 0 : (_node$type = node.type) === null || _node$type === void 0 ? void 0 : _node$type._isFelaComponent);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const mount = (node, options = {}, theme = themeConstants, useTestContext = true) => {
|
|
11
17
|
const renderer = createRenderer({
|
|
12
18
|
dev: true
|
|
13
19
|
});
|
|
14
|
-
const
|
|
20
|
+
const renderNode = useTestContext || isFelaComponent(node) ? felaTestContext(node, renderer, theme) : node;
|
|
21
|
+
const wrapper = enzymeMount(renderNode, merge(options, createFelaOptions(renderer, theme)));
|
|
15
22
|
|
|
16
23
|
const snapshot = (wrapper, includeStyles = true) => {
|
|
17
24
|
const options = {
|
|
@@ -28,6 +35,7 @@ const mount = (node, options = {}, theme = themeConstants) => {
|
|
|
28
35
|
|
|
29
36
|
if (renderedString) {
|
|
30
37
|
result.styles = `\n${cssbeautify(renderedString, options)}\n`;
|
|
38
|
+
renderer.clear();
|
|
31
39
|
}
|
|
32
40
|
}
|
|
33
41
|
|
|
@@ -40,4 +48,5 @@ const mount = (node, options = {}, theme = themeConstants) => {
|
|
|
40
48
|
};
|
|
41
49
|
};
|
|
42
50
|
|
|
51
|
+
export const felaMountWithoutContext = (node, options = {}, theme = themeConstants) => mount(node, options, theme, false);
|
|
43
52
|
export default mount;
|
package/es/felaShallow.js
CHANGED
|
@@ -1,111 +1,106 @@
|
|
|
1
1
|
import { shallow as enzymeShallow } from 'enzyme';
|
|
2
|
-
import { variables as themeConstants } from '@cloudflare/style-const'; // eslint-disable-line behance/no-deprecated
|
|
3
|
-
|
|
4
|
-
import { createRenderer } from '@cloudflare/style-provider';
|
|
5
2
|
import { renderToString } from 'fela-tools';
|
|
6
3
|
import cssbeautify from 'cssbeautify';
|
|
7
4
|
import toJson from 'enzyme-to-json';
|
|
8
|
-
import { ThemeProvider } from '@cloudflare/style-container';
|
|
9
|
-
import createFelaOptions from './createFelaOptions';
|
|
10
5
|
import merge from 'deepmerge';
|
|
6
|
+
import { variables as themeConstants } from '@cloudflare/style-const'; // eslint-disable-line behance/no-deprecated
|
|
11
7
|
|
|
12
|
-
|
|
8
|
+
import { createRenderer, felaTestContext } from '@cloudflare/style-provider';
|
|
9
|
+
import { ThemeProvider, FelaTheme } from '@cloudflare/style-container';
|
|
10
|
+
import createFelaOptions from './createFelaOptions';
|
|
13
11
|
|
|
14
12
|
const isThemeProvider = reactElement => reactElement && reactElement.type && reactElement.type === ThemeProvider;
|
|
15
13
|
|
|
16
14
|
const isFelaComponent = reactElement => reactElement && reactElement.type && reactElement.type._isFelaComponent;
|
|
17
15
|
|
|
18
|
-
const
|
|
16
|
+
const isFelaTheme = reactElement => (reactElement === null || reactElement === void 0 ? void 0 : reactElement.type) === FelaTheme;
|
|
19
17
|
|
|
20
18
|
const shallow = (node, options = {}, rootTheme = themeConstants) => {
|
|
21
19
|
const rootRenderer = createRenderer({
|
|
22
20
|
dev: true
|
|
23
21
|
});
|
|
24
22
|
options = merge(options, createFelaOptions(rootRenderer, rootTheme));
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
|
|
24
|
+
const createShallowWrapper = (rootNode = node, useTestContext = false) => {
|
|
25
|
+
const renderNode = useTestContext ? felaTestContext(rootNode, rootRenderer, rootTheme) : rootNode;
|
|
26
|
+
return enzymeShallow(renderNode, options);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const useTestContext = isFelaComponent(node);
|
|
30
|
+
const wrapper = createShallowWrapper(node, useTestContext); //wrapper = the of EnzymeWrapper associated with shallow rendering node
|
|
27
31
|
//renderer = fela renderer function
|
|
28
32
|
//theme = fela theme
|
|
29
33
|
//This function will dive into the enzyme tree, until it gets to a non-fela component
|
|
30
34
|
|
|
31
|
-
const dive = (
|
|
32
|
-
let parentFelaComponent = false;
|
|
33
|
-
|
|
34
|
-
if (isThemeProvider(node) || isFelaComponent(node) || isWithTheme(node)) {
|
|
35
|
-
parentFelaComponent = true;
|
|
36
|
-
}
|
|
37
|
-
|
|
35
|
+
const dive = (wrapper, renderer, theme = rootTheme) => {
|
|
38
36
|
let reactElement = wrapper.get(0);
|
|
39
37
|
|
|
40
|
-
|
|
38
|
+
try {
|
|
41
39
|
if (isThemeProvider(reactElement)) {
|
|
42
40
|
theme = reactElement.props.theme;
|
|
43
41
|
}
|
|
44
42
|
|
|
45
43
|
const mergedOptions = merge(options, createFelaOptions(renderer, theme));
|
|
46
44
|
const enzymeDived = wrapper.dive(mergedOptions);
|
|
47
|
-
return dive(
|
|
45
|
+
return dive(enzymeDived, renderer, theme);
|
|
46
|
+
} catch (err) {
|
|
47
|
+
return wrapper;
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
return wrapper;
|
|
51
49
|
};
|
|
52
50
|
|
|
53
51
|
const componentSnapshot = (wrapper, includeStyles) => {
|
|
54
|
-
const
|
|
55
|
-
indent: ' ',
|
|
56
|
-
openbrace: 'end-of-line',
|
|
57
|
-
autosemicolon: false
|
|
58
|
-
};
|
|
59
|
-
let renderer = rootRenderer;
|
|
60
|
-
let wrapperToSnapshot = wrapper;
|
|
61
|
-
|
|
62
|
-
if (includeStyles) {
|
|
63
|
-
//use a new renderer to capture the styles just by rendering this enzyme wrapper
|
|
64
|
-
renderer = createRenderer({
|
|
65
|
-
dev: true
|
|
66
|
-
});
|
|
67
|
-
wrapperToSnapshot = felaDive(wrapper, renderer);
|
|
68
|
-
}
|
|
69
|
-
|
|
52
|
+
const wrapperToSnapshot = includeStyles ? felaDive(wrapper, rootRenderer) : wrapper;
|
|
70
53
|
const result = {
|
|
71
54
|
component: toJson(wrapperToSnapshot)
|
|
72
55
|
};
|
|
73
56
|
|
|
74
57
|
if (includeStyles) {
|
|
75
|
-
const renderedString = renderToString(
|
|
58
|
+
const renderedString = renderToString(rootRenderer);
|
|
76
59
|
|
|
77
60
|
if (renderedString) {
|
|
61
|
+
const options = {
|
|
62
|
+
indent: ' ',
|
|
63
|
+
openbrace: 'end-of-line',
|
|
64
|
+
autosemicolon: false
|
|
65
|
+
};
|
|
78
66
|
result.styles = `\n${cssbeautify(renderedString, options)}\n`;
|
|
67
|
+
/* Clears the rules cache on rootRenderer for reuse. */
|
|
68
|
+
|
|
69
|
+
rootRenderer.clear();
|
|
79
70
|
}
|
|
80
71
|
}
|
|
81
72
|
|
|
82
73
|
return result;
|
|
83
74
|
};
|
|
84
75
|
|
|
85
|
-
const felaDive = (wrapper, renderer = rootRenderer) => {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const root = typeof wrapper.root === 'function' ? wrapper.root() : wrapper.root;
|
|
89
|
-
const isRoot = root === wrapper;
|
|
90
|
-
return dive(isRoot ? node : wrapper.get(0), wrapper, renderer, rootTheme);
|
|
76
|
+
const felaDive = (wrapper, renderer = rootRenderer, useTestContext = false) => {
|
|
77
|
+
const shallowWrapper = useTestContext ? createShallowWrapper(wrapper.getElement(), useTestContext) : wrapper;
|
|
78
|
+
return dive(shallowWrapper, renderer, rootTheme);
|
|
91
79
|
}; //if the enzyme wrapper is around a single node, returns an object with keys: component, style
|
|
92
80
|
//otherwise returns an array where each element in the array is an object with keys: component, style
|
|
93
81
|
//where the snapshot for that element is stored.
|
|
94
82
|
//if the includeStyles prop is false, then styles are ommitted from the captured snapshot. This will make it act like a normal
|
|
95
83
|
//enzyme shallow snapshot capture (i.e. we will not dive into fela components and render them)
|
|
84
|
+
// useTestContextWrapper -- forces the snapshot to use a new wrapper with felaTestContext
|
|
96
85
|
|
|
97
86
|
|
|
98
|
-
const snapshot = (enzymeWrapper, includeStyles = true) => {
|
|
87
|
+
const snapshot = (enzymeWrapper, includeStyles = true, useTestContextWrapper = false) => {
|
|
99
88
|
if (!enzymeWrapper) {
|
|
100
89
|
return componentSnapshot(wrapper, includeStyles);
|
|
101
90
|
}
|
|
102
91
|
|
|
103
92
|
if (enzymeWrapper.length === 1) {
|
|
104
|
-
|
|
93
|
+
const wrapperNode = enzymeWrapper.getElement();
|
|
94
|
+
const useTestContext = useTestContextWrapper || isFelaComponent(wrapperNode) || isFelaTheme(wrapperNode);
|
|
95
|
+
const shallowWrapper = useTestContext ? createShallowWrapper(wrapperNode, useTestContext) : enzymeWrapper;
|
|
96
|
+
return componentSnapshot(shallowWrapper, includeStyles);
|
|
105
97
|
}
|
|
106
98
|
|
|
107
99
|
return enzymeWrapper.map(wrapper => {
|
|
108
|
-
|
|
100
|
+
const wrapperNode = wrapper.getElement();
|
|
101
|
+
const useTestContext = useTestContextWrapper || isFelaComponent(wrapperNode) || isFelaTheme(wrapperNode);
|
|
102
|
+
const shallowWrapper = useTestContext ? createShallowWrapper(wrapperNode, useTestContext) : enzymeWrapper;
|
|
103
|
+
return componentSnapshot(shallowWrapper, includeStyles);
|
|
109
104
|
});
|
|
110
105
|
};
|
|
111
106
|
|
package/es/index.js
CHANGED
|
@@ -4,8 +4,8 @@ import mockComponent from './mockComponent';
|
|
|
4
4
|
import { setDateMock, restoreDateMock } from './dateMock';
|
|
5
5
|
import felaShallow from './felaShallow';
|
|
6
6
|
import I18n from './I18n';
|
|
7
|
-
import felaMount from './felaMount';
|
|
7
|
+
import felaMount, { felaMountWithoutContext } from './felaMount';
|
|
8
8
|
import findWhereNameContains from './findWhereNameContains';
|
|
9
9
|
import { mockMathRandom, restoreMathRandom } from './mockMathRandom';
|
|
10
10
|
import { mockCan } from './mockProps';
|
|
11
|
-
export { createEnzymeRouterOptions, mockImport, mockComponent, mockMathRandom, restoreMathRandom, felaShallow, felaMount, findWhereNameContains, I18n, setDateMock, restoreDateMock, mockCan };
|
|
11
|
+
export { createEnzymeRouterOptions, mockImport, mockComponent, mockMathRandom, restoreMathRandom, felaShallow, felaMount, felaMountWithoutContext, findWhereNameContains, I18n, setDateMock, restoreDateMock, mockCan };
|
package/lib/createFelaOptions.js
CHANGED
|
@@ -13,15 +13,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
13
13
|
|
|
14
14
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
15
|
|
|
16
|
-
var createFelaOptions = function createFelaOptions(renderer
|
|
16
|
+
var createFelaOptions = function createFelaOptions(renderer) {
|
|
17
17
|
var _childContextTypes, _contextTypes;
|
|
18
18
|
|
|
19
|
+
var theme = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
19
20
|
return {
|
|
20
21
|
childContextTypes: (_childContextTypes = {}, _defineProperty(_childContextTypes, _felaBindings.THEME_CHANNEL, _propTypes.default.object), _defineProperty(_childContextTypes, "renderer", _propTypes.default.object), _childContextTypes),
|
|
21
22
|
contextTypes: (_contextTypes = {}, _defineProperty(_contextTypes, _felaBindings.THEME_CHANNEL, _propTypes.default.object), _defineProperty(_contextTypes, "renderer", _propTypes.default.object), _contextTypes),
|
|
22
23
|
context: _defineProperty({
|
|
23
24
|
renderer: renderer
|
|
24
|
-
}, _felaBindings.THEME_CHANNEL, theme
|
|
25
|
+
}, _felaBindings.THEME_CHANNEL, theme)
|
|
25
26
|
};
|
|
26
27
|
};
|
|
27
28
|
|
package/lib/felaMount.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = void 0;
|
|
6
|
+
exports.default = exports.felaMountWithoutContext = void 0;
|
|
7
7
|
|
|
8
8
|
var _enzyme = require("enzyme");
|
|
9
9
|
|
|
@@ -24,13 +24,21 @@ var _styleConst = require("@cloudflare/style-const");
|
|
|
24
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
25
|
|
|
26
26
|
// eslint-disable-line behance/no-deprecated
|
|
27
|
+
var isFelaComponent = function isFelaComponent(node) {
|
|
28
|
+
var _node$type;
|
|
29
|
+
|
|
30
|
+
return !!(node === null || node === void 0 ? void 0 : (_node$type = node.type) === null || _node$type === void 0 ? void 0 : _node$type._isFelaComponent);
|
|
31
|
+
};
|
|
32
|
+
|
|
27
33
|
var mount = function mount(node) {
|
|
28
34
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
29
35
|
var theme = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _styleConst.variables;
|
|
36
|
+
var useTestContext = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
30
37
|
var renderer = (0, _styleProvider.createRenderer)({
|
|
31
38
|
dev: true
|
|
32
39
|
});
|
|
33
|
-
var
|
|
40
|
+
var renderNode = useTestContext || isFelaComponent(node) ? (0, _styleProvider.felaTestContext)(node, renderer, theme) : node;
|
|
41
|
+
var wrapper = (0, _enzyme.mount)(renderNode, (0, _deepmerge.default)(options, (0, _createFelaOptions.default)(renderer, theme)));
|
|
34
42
|
|
|
35
43
|
var snapshot = function snapshot(wrapper) {
|
|
36
44
|
var includeStyles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
@@ -48,6 +56,7 @@ var mount = function mount(node) {
|
|
|
48
56
|
|
|
49
57
|
if (renderedString) {
|
|
50
58
|
result.styles = "\n".concat((0, _cssbeautify.default)(renderedString, options), "\n");
|
|
59
|
+
renderer.clear();
|
|
51
60
|
}
|
|
52
61
|
}
|
|
53
62
|
|
|
@@ -60,5 +69,12 @@ var mount = function mount(node) {
|
|
|
60
69
|
};
|
|
61
70
|
};
|
|
62
71
|
|
|
72
|
+
var felaMountWithoutContext = function felaMountWithoutContext(node) {
|
|
73
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
74
|
+
var theme = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _styleConst.variables;
|
|
75
|
+
return mount(node, options, theme, false);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
exports.felaMountWithoutContext = felaMountWithoutContext;
|
|
63
79
|
var _default = mount;
|
|
64
80
|
exports.default = _default;
|
package/lib/felaShallow.js
CHANGED
|
@@ -7,29 +7,25 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _enzyme = require("enzyme");
|
|
9
9
|
|
|
10
|
-
var _styleConst = require("@cloudflare/style-const");
|
|
11
|
-
|
|
12
|
-
var _styleProvider = require("@cloudflare/style-provider");
|
|
13
|
-
|
|
14
10
|
var _felaTools = require("fela-tools");
|
|
15
11
|
|
|
16
12
|
var _cssbeautify = _interopRequireDefault(require("cssbeautify"));
|
|
17
13
|
|
|
18
14
|
var _enzymeToJson = _interopRequireDefault(require("enzyme-to-json"));
|
|
19
15
|
|
|
16
|
+
var _deepmerge = _interopRequireDefault(require("deepmerge"));
|
|
17
|
+
|
|
18
|
+
var _styleConst = require("@cloudflare/style-const");
|
|
19
|
+
|
|
20
|
+
var _styleProvider = require("@cloudflare/style-provider");
|
|
21
|
+
|
|
20
22
|
var _styleContainer = require("@cloudflare/style-container");
|
|
21
23
|
|
|
22
24
|
var _createFelaOptions = _interopRequireDefault(require("./createFelaOptions"));
|
|
23
25
|
|
|
24
|
-
var _deepmerge = _interopRequireDefault(require("deepmerge"));
|
|
25
|
-
|
|
26
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
27
|
|
|
28
28
|
// eslint-disable-line behance/no-deprecated
|
|
29
|
-
var isWithTheme = function isWithTheme(reactElement) {
|
|
30
|
-
return reactElement && reactElement.type && reactElement.type.name === 'WithTheme';
|
|
31
|
-
};
|
|
32
|
-
|
|
33
29
|
var isThemeProvider = function isThemeProvider(reactElement) {
|
|
34
30
|
return reactElement && reactElement.type && reactElement.type === _styleContainer.ThemeProvider;
|
|
35
31
|
};
|
|
@@ -38,8 +34,8 @@ var isFelaComponent = function isFelaComponent(reactElement) {
|
|
|
38
34
|
return reactElement && reactElement.type && reactElement.type._isFelaComponent;
|
|
39
35
|
};
|
|
40
36
|
|
|
41
|
-
var
|
|
42
|
-
return reactElement
|
|
37
|
+
var isFelaTheme = function isFelaTheme(reactElement) {
|
|
38
|
+
return (reactElement === null || reactElement === void 0 ? void 0 : reactElement.type) === _styleContainer.FelaTheme;
|
|
43
39
|
};
|
|
44
40
|
|
|
45
41
|
var shallow = function shallow(node) {
|
|
@@ -49,61 +45,56 @@ var shallow = function shallow(node) {
|
|
|
49
45
|
dev: true
|
|
50
46
|
});
|
|
51
47
|
options = (0, _deepmerge.default)(options, (0, _createFelaOptions.default)(rootRenderer, rootTheme));
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
|
|
49
|
+
var createShallowWrapper = function createShallowWrapper() {
|
|
50
|
+
var rootNode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : node;
|
|
51
|
+
var useTestContext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
52
|
+
var renderNode = useTestContext ? (0, _styleProvider.felaTestContext)(rootNode, rootRenderer, rootTheme) : rootNode;
|
|
53
|
+
return (0, _enzyme.shallow)(renderNode, options);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
var useTestContext = isFelaComponent(node);
|
|
57
|
+
var wrapper = createShallowWrapper(node, useTestContext); //wrapper = the of EnzymeWrapper associated with shallow rendering node
|
|
54
58
|
//renderer = fela renderer function
|
|
55
59
|
//theme = fela theme
|
|
56
60
|
//This function will dive into the enzyme tree, until it gets to a non-fela component
|
|
57
61
|
|
|
58
|
-
var dive = function dive(
|
|
59
|
-
var theme = arguments.length >
|
|
60
|
-
var parentFelaComponent = false;
|
|
61
|
-
|
|
62
|
-
if (isThemeProvider(node) || isFelaComponent(node) || isWithTheme(node)) {
|
|
63
|
-
parentFelaComponent = true;
|
|
64
|
-
}
|
|
65
|
-
|
|
62
|
+
var dive = function dive(wrapper, renderer) {
|
|
63
|
+
var theme = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : rootTheme;
|
|
66
64
|
var reactElement = wrapper.get(0);
|
|
67
65
|
|
|
68
|
-
|
|
66
|
+
try {
|
|
69
67
|
if (isThemeProvider(reactElement)) {
|
|
70
68
|
theme = reactElement.props.theme;
|
|
71
69
|
}
|
|
72
70
|
|
|
73
71
|
var mergedOptions = (0, _deepmerge.default)(options, (0, _createFelaOptions.default)(renderer, theme));
|
|
74
72
|
var enzymeDived = wrapper.dive(mergedOptions);
|
|
75
|
-
return dive(
|
|
73
|
+
return dive(enzymeDived, renderer, theme);
|
|
74
|
+
} catch (err) {
|
|
75
|
+
return wrapper;
|
|
76
76
|
}
|
|
77
|
-
|
|
78
|
-
return wrapper;
|
|
79
77
|
};
|
|
80
78
|
|
|
81
79
|
var componentSnapshot = function componentSnapshot(wrapper, includeStyles) {
|
|
82
|
-
var
|
|
83
|
-
indent: ' ',
|
|
84
|
-
openbrace: 'end-of-line',
|
|
85
|
-
autosemicolon: false
|
|
86
|
-
};
|
|
87
|
-
var renderer = rootRenderer;
|
|
88
|
-
var wrapperToSnapshot = wrapper;
|
|
89
|
-
|
|
90
|
-
if (includeStyles) {
|
|
91
|
-
//use a new renderer to capture the styles just by rendering this enzyme wrapper
|
|
92
|
-
renderer = (0, _styleProvider.createRenderer)({
|
|
93
|
-
dev: true
|
|
94
|
-
});
|
|
95
|
-
wrapperToSnapshot = felaDive(wrapper, renderer);
|
|
96
|
-
}
|
|
97
|
-
|
|
80
|
+
var wrapperToSnapshot = includeStyles ? felaDive(wrapper, rootRenderer) : wrapper;
|
|
98
81
|
var result = {
|
|
99
82
|
component: (0, _enzymeToJson.default)(wrapperToSnapshot)
|
|
100
83
|
};
|
|
101
84
|
|
|
102
85
|
if (includeStyles) {
|
|
103
|
-
var renderedString = (0, _felaTools.renderToString)(
|
|
86
|
+
var renderedString = (0, _felaTools.renderToString)(rootRenderer);
|
|
104
87
|
|
|
105
88
|
if (renderedString) {
|
|
106
|
-
|
|
89
|
+
var _options = {
|
|
90
|
+
indent: ' ',
|
|
91
|
+
openbrace: 'end-of-line',
|
|
92
|
+
autosemicolon: false
|
|
93
|
+
};
|
|
94
|
+
result.styles = "\n".concat((0, _cssbeautify.default)(renderedString, _options), "\n");
|
|
95
|
+
/* Clears the rules cache on rootRenderer for reuse. */
|
|
96
|
+
|
|
97
|
+
rootRenderer.clear();
|
|
107
98
|
}
|
|
108
99
|
}
|
|
109
100
|
|
|
@@ -112,31 +103,39 @@ var shallow = function shallow(node) {
|
|
|
112
103
|
|
|
113
104
|
var felaDive = function felaDive(wrapper) {
|
|
114
105
|
var renderer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : rootRenderer;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
var isRoot = root === wrapper;
|
|
119
|
-
return dive(isRoot ? node : wrapper.get(0), wrapper, renderer, rootTheme);
|
|
106
|
+
var useTestContext = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
107
|
+
var shallowWrapper = useTestContext ? createShallowWrapper(wrapper.getElement(), useTestContext) : wrapper;
|
|
108
|
+
return dive(shallowWrapper, renderer, rootTheme);
|
|
120
109
|
}; //if the enzyme wrapper is around a single node, returns an object with keys: component, style
|
|
121
110
|
//otherwise returns an array where each element in the array is an object with keys: component, style
|
|
122
111
|
//where the snapshot for that element is stored.
|
|
123
112
|
//if the includeStyles prop is false, then styles are ommitted from the captured snapshot. This will make it act like a normal
|
|
124
113
|
//enzyme shallow snapshot capture (i.e. we will not dive into fela components and render them)
|
|
114
|
+
// useTestContextWrapper -- forces the snapshot to use a new wrapper with felaTestContext
|
|
125
115
|
|
|
126
116
|
|
|
127
117
|
var snapshot = function snapshot(enzymeWrapper) {
|
|
128
118
|
var includeStyles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
119
|
+
var useTestContextWrapper = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
129
120
|
|
|
130
121
|
if (!enzymeWrapper) {
|
|
131
122
|
return componentSnapshot(wrapper, includeStyles);
|
|
132
123
|
}
|
|
133
124
|
|
|
134
125
|
if (enzymeWrapper.length === 1) {
|
|
135
|
-
|
|
126
|
+
var wrapperNode = enzymeWrapper.getElement();
|
|
127
|
+
|
|
128
|
+
var _useTestContext = useTestContextWrapper || isFelaComponent(wrapperNode) || isFelaTheme(wrapperNode);
|
|
129
|
+
|
|
130
|
+
var shallowWrapper = _useTestContext ? createShallowWrapper(wrapperNode, _useTestContext) : enzymeWrapper;
|
|
131
|
+
return componentSnapshot(shallowWrapper, includeStyles);
|
|
136
132
|
}
|
|
137
133
|
|
|
138
134
|
return enzymeWrapper.map(function (wrapper) {
|
|
139
|
-
|
|
135
|
+
var wrapperNode = wrapper.getElement();
|
|
136
|
+
var useTestContext = useTestContextWrapper || isFelaComponent(wrapperNode) || isFelaTheme(wrapperNode);
|
|
137
|
+
var shallowWrapper = useTestContext ? createShallowWrapper(wrapperNode, useTestContext) : enzymeWrapper;
|
|
138
|
+
return componentSnapshot(shallowWrapper, includeStyles);
|
|
140
139
|
});
|
|
141
140
|
};
|
|
142
141
|
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -51,6 +53,12 @@ Object.defineProperty(exports, "felaMount", {
|
|
|
51
53
|
return _felaMount.default;
|
|
52
54
|
}
|
|
53
55
|
});
|
|
56
|
+
Object.defineProperty(exports, "felaMountWithoutContext", {
|
|
57
|
+
enumerable: true,
|
|
58
|
+
get: function get() {
|
|
59
|
+
return _felaMount.felaMountWithoutContext;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
54
62
|
Object.defineProperty(exports, "findWhereNameContains", {
|
|
55
63
|
enumerable: true,
|
|
56
64
|
get: function get() {
|
|
@@ -88,7 +96,7 @@ var _felaShallow = _interopRequireDefault(require("./felaShallow"));
|
|
|
88
96
|
|
|
89
97
|
var _I18n = _interopRequireDefault(require("./I18n"));
|
|
90
98
|
|
|
91
|
-
var _felaMount =
|
|
99
|
+
var _felaMount = _interopRequireWildcard(require("./felaMount"));
|
|
92
100
|
|
|
93
101
|
var _findWhereNameContains = _interopRequireDefault(require("./findWhereNameContains"));
|
|
94
102
|
|
|
@@ -96,4 +104,8 @@ var _mockMathRandom = require("./mockMathRandom");
|
|
|
96
104
|
|
|
97
105
|
var _mockProps = require("./mockProps");
|
|
98
106
|
|
|
107
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
|
108
|
+
|
|
109
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
110
|
+
|
|
99
111
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudflare/util-testing",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "5.0
|
|
4
|
+
"version": "5.1.0",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
7
7
|
"author": "James Culveyhouse <jculveyhouse@cloudflare.com>",
|
|
@@ -12,22 +12,21 @@
|
|
|
12
12
|
"access": "public"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@cloudflare/intl-react": "^1.
|
|
16
|
-
"@cloudflare/style-const": "^5.0.
|
|
17
|
-
"@cloudflare/style-container": "^7.
|
|
18
|
-
"@cloudflare/style-provider": "^1.
|
|
15
|
+
"@cloudflare/intl-react": "^1.9.0",
|
|
16
|
+
"@cloudflare/style-const": "^5.0.8",
|
|
17
|
+
"@cloudflare/style-container": "^7.5.0",
|
|
18
|
+
"@cloudflare/style-provider": "^1.3.0",
|
|
19
19
|
"cssbeautify": "^0.3.1",
|
|
20
20
|
"deepmerge": "1.5.2",
|
|
21
21
|
"enzyme": "^3.10.0",
|
|
22
22
|
"enzyme-to-json": "^3.3.3",
|
|
23
|
-
"fela": "^6.
|
|
24
|
-
"fela-
|
|
25
|
-
"fela-
|
|
26
|
-
"fela-tools": "^5.2.0",
|
|
23
|
+
"fela": "^11.6.1",
|
|
24
|
+
"fela-bindings": "^11.6.1",
|
|
25
|
+
"fela-tools": "^11.6.1",
|
|
27
26
|
"hash-sum": "^1.0.2",
|
|
28
27
|
"prop-types": "^15.6.0",
|
|
29
28
|
"react-display-name": "^0.2.3",
|
|
30
|
-
"react-fela": "^
|
|
29
|
+
"react-fela": "^11.6.1",
|
|
31
30
|
"react-router-test-context": "^0.1.0"
|
|
32
31
|
},
|
|
33
32
|
"peerDependencies": {
|
|
@@ -43,5 +42,5 @@
|
|
|
43
42
|
"test-coverage": "stratus test --coverage",
|
|
44
43
|
"test-watch": "stratus test --watch"
|
|
45
44
|
},
|
|
46
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "0fcf9cc9ac8315ccc6505d97225615ce55967346"
|
|
47
46
|
}
|