@cloudflare/util-testing 5.0.251 → 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 CHANGED
@@ -3,6 +3,18 @@
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
+
6
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)
7
19
 
8
20
  **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 };
@@ -1,7 +1,7 @@
1
- import { createTheme, THEME_CHANNEL } from 'fela-bindings';
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 ? createTheme(theme) : null
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 mount = (node, options = {}, theme = themeConstants) => {
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 wrapper = enzymeMount(node, merge(options, createFelaOptions(renderer, theme)));
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
- const isWithTheme = reactElement => reactElement && reactElement.type && reactElement.type.name === 'WithTheme';
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 isNonDOMComponent = reactElement => reactElement && reactElement.type && typeof reactElement.type !== 'string';
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
- const wrapper = enzymeShallow(node, options); //node = the instance of ReactElement from which the enzymeWrapper wrapper was created
26
- //wrapper = the of EnzymeWrapper associated with shallow rendering node
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 = (node, wrapper, renderer, theme = rootTheme) => {
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
- if (parentFelaComponent && isNonDOMComponent(reactElement)) {
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(reactElement, enzymeDived, renderer, theme);
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 options = {
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(renderer);
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
- //determine whether wrapper is the root wrapper or not
87
- // in older versions of enzyme root is not a function but the root itself
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
- return componentSnapshot(enzymeWrapper, includeStyles);
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
- return componentSnapshot(wrapper, includeStyles);
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 };
@@ -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, theme) {
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 ? (0, _felaBindings.createTheme)(theme) : null)
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 wrapper = (0, _enzyme.mount)(node, (0, _deepmerge.default)(options, (0, _createFelaOptions.default)(renderer, theme)));
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;
@@ -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 isNonDOMComponent = function isNonDOMComponent(reactElement) {
42
- return reactElement && reactElement.type && typeof reactElement.type !== 'string';
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
- var wrapper = (0, _enzyme.shallow)(node, options); //node = the instance of ReactElement from which the enzymeWrapper wrapper was created
53
- //wrapper = the of EnzymeWrapper associated with shallow rendering node
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(node, wrapper, renderer) {
59
- var theme = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : rootTheme;
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
- if (parentFelaComponent && isNonDOMComponent(reactElement)) {
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(reactElement, enzymeDived, renderer, theme);
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 options = {
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)(renderer);
86
+ var renderedString = (0, _felaTools.renderToString)(rootRenderer);
104
87
 
105
88
  if (renderedString) {
106
- result.styles = "\n".concat((0, _cssbeautify.default)(renderedString, options), "\n");
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
- //determine whether wrapper is the root wrapper or not
116
- // in older versions of enzyme root is not a function but the root itself
117
- var root = typeof wrapper.root === 'function' ? wrapper.root() : wrapper.root;
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
- return componentSnapshot(enzymeWrapper, includeStyles);
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
- return componentSnapshot(wrapper, includeStyles);
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 = _interopRequireDefault(require("./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.251",
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.8.117",
15
+ "@cloudflare/intl-react": "^1.9.0",
16
16
  "@cloudflare/style-const": "^5.0.8",
17
- "@cloudflare/style-container": "^7.4.8",
18
- "@cloudflare/style-provider": "^1.2.384",
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.2.0",
24
- "fela-beautifier": "^5.0.16",
25
- "fela-bindings": "^3.0.0",
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": "^8.0.0",
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": "0211183145866daa2099703352499668e8573421"
45
+ "gitHead": "0fcf9cc9ac8315ccc6505d97225615ce55967346"
47
46
  }