@shopgate/pwa-common 7.32.0-beta.2 → 7.32.0-beta.20

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.
Files changed (64) hide show
  1. package/components/Button/index.js +6 -0
  2. package/components/Image/Image.d.ts +78 -0
  3. package/components/Image/Image.d.ts.map +1 -0
  4. package/components/Image/Image.js +123 -91
  5. package/components/Image/ImageInner.d.ts +45 -0
  6. package/components/Image/ImageInner.d.ts.map +1 -0
  7. package/components/Image/ImageInner.js +23 -29
  8. package/components/Image/index.d.ts +3 -0
  9. package/components/Image/index.d.ts.map +1 -0
  10. package/components/Swiper/index.js +17 -2
  11. package/constants/Configuration.js +7 -0
  12. package/helpers/mocks/mockRenderOptions.js +21 -0
  13. package/package.json +3 -3
  14. package/providers/toast/index.js +54 -40
  15. package/subscriptions/error.js +50 -27
  16. package/subscriptions/helpers/pipeline.js +68 -0
  17. package/subscriptions/router.js +2 -2
  18. package/action-creators/app/spec.js +0 -96
  19. package/action-creators/client/spec.js +0 -44
  20. package/action-creators/menu/spec.js +0 -37
  21. package/action-creators/modal/spec.js +0 -26
  22. package/action-creators/page/spec.js +0 -38
  23. package/action-creators/url/spec.js +0 -45
  24. package/action-creators/user/spec.js +0 -186
  25. package/components/Backdrop/spec.js +0 -24
  26. package/components/Button/spec.js +0 -42
  27. package/components/Checkbox/spec.js +0 -111
  28. package/components/CountdownTimer/spec.js +0 -141
  29. package/components/Drawer/spec.js +0 -79
  30. package/components/Ellipsis/spec.js +0 -15
  31. package/components/EmbeddedMedia/spec.js +0 -61
  32. package/components/Grid/components/Item/spec.js +0 -24
  33. package/components/Grid/spec.js +0 -24
  34. package/components/HtmlSanitizer/spec.js +0 -229
  35. package/components/I18n/components/FormatDate/spec.js +0 -54
  36. package/components/I18n/components/FormatNumber/spec.js +0 -51
  37. package/components/I18n/components/FormatPrice/spec.js +0 -54
  38. package/components/I18n/components/FormatTime/spec.js +0 -51
  39. package/components/I18n/components/I18nProvider/spec.js +0 -40
  40. package/components/I18n/components/Placeholder/spec.js +0 -37
  41. package/components/I18n/components/Translate/spec.js +0 -33
  42. package/components/InfiniteContainer/spec.js +0 -204
  43. package/components/Input/spec.js +0 -123
  44. package/components/Link/spec.js +0 -60
  45. package/components/List/spec.js +0 -26
  46. package/components/ModalContainer/spec.js +0 -115
  47. package/components/Select/spec.js +0 -122
  48. package/components/SelectBox/spec.js +0 -68
  49. package/components/Swiper/components/SwiperItem/spec.js +0 -26
  50. package/components/Widgets/components/Widget/spec.js +0 -75
  51. package/components/Widgets/components/WidgetGrid/spec.js +0 -53
  52. package/components/Widgets/spec.js +0 -234
  53. package/helpers/data/spec.js +0 -194
  54. package/helpers/date/spec.js +0 -92
  55. package/helpers/style/spec.js +0 -108
  56. package/helpers/validation/spec.js +0 -10
  57. package/styles/reset/form.js +0 -58
  58. package/styles/reset/index.js +0 -8
  59. package/styles/reset/media.js +0 -26
  60. package/styles/reset/root.js +0 -37
  61. package/styles/reset/table.js +0 -14
  62. package/styles/reset/typography.js +0 -30
  63. package/tsconfig.build.json +0 -16
  64. package/tsconfig.json +0 -3
@@ -1,186 +0,0 @@
1
- import { requestLogin, successLogin, errorLogin, requestLogout, successLogout, errorLogout, requestUser, receiveUser, errorUser, toggleLoggedIn } from "./index";
2
- import { REQUEST_LOGIN, SUCCESS_LOGIN, ERROR_LOGIN, REQUEST_LOGOUT, SUCCESS_LOGOUT, ERROR_LOGOUT, REQUEST_USER, RECEIVE_USER, ERROR_USER, TOGGLE_LOGGED_IN } from "../../constants/ActionTypes";
3
- import { DEFAULT_LOGIN_STRATEGY } from "../../constants/user";
4
- const messages = [{
5
- type: 'EUNKNOWN',
6
- message: 'Something went wrong',
7
- code: 1337
8
- }];
9
- describe('Action Creators: user', () => {
10
- describe('requestLogin()', () => {
11
- it('should work as expected', () => {
12
- const user = 'super@user.com';
13
- const password = 'super#password';
14
- const expected = {
15
- type: REQUEST_LOGIN,
16
- user,
17
- password,
18
- strategy: DEFAULT_LOGIN_STRATEGY
19
- };
20
- expect(requestLogin(user, password)).toEqual(expected);
21
- });
22
- });
23
- describe('successLogin()', () => {
24
- it('should work as expected with no parameters', () => {
25
- const expected = {
26
- type: SUCCESS_LOGIN,
27
- redirect: undefined,
28
- strategy: DEFAULT_LOGIN_STRATEGY
29
- };
30
- expect(successLogin()).toEqual(expected);
31
- });
32
- it('should work as expected with parameters', () => {
33
- const redirect = '/some/url';
34
- const strategy = 'custom';
35
- const expected = {
36
- type: SUCCESS_LOGIN,
37
- redirect,
38
- strategy
39
- };
40
- expect(successLogin(redirect, strategy)).toEqual(expected);
41
- });
42
- });
43
- describe('errorLogin()', () => {
44
- it('should work as expected', () => {
45
- const expected = {
46
- type: ERROR_LOGIN,
47
- code: 'EUNKNOWN',
48
- messages
49
- };
50
- expect(errorLogin(messages, 'EUNKNOWN')).toEqual(expected);
51
- });
52
- it('should work as expected when the messages parameter is empty', () => {
53
- const expected = {
54
- type: ERROR_LOGIN,
55
- code: 'EUNKNOWN',
56
- messages: []
57
- };
58
- expect(errorLogin(undefined, 'EUNKNOWN')).toEqual(expected);
59
- });
60
- it('should work as expected when the code paramter is empty', () => {
61
- const expected = {
62
- type: ERROR_LOGIN,
63
- code: '',
64
- messages
65
- };
66
- expect(errorLogin(messages)).toEqual(expected);
67
- });
68
- });
69
- describe('requestLogout()', () => {
70
- it('should work as expected', () => {
71
- const expected = {
72
- type: REQUEST_LOGOUT
73
- };
74
- expect(requestLogout()).toEqual(expected);
75
- });
76
- });
77
- describe('successLogout()', () => {
78
- it('should work as expected when called without parameter', () => {
79
- const expected = {
80
- type: SUCCESS_LOGOUT,
81
- notify: true,
82
- autoLogout: false
83
- };
84
- expect(successLogout()).toEqual(expected);
85
- });
86
- it('should work as expected when called with true', () => {
87
- const expected = {
88
- type: SUCCESS_LOGOUT,
89
- notify: true,
90
- autoLogout: false
91
- };
92
- expect(successLogout(true)).toEqual(expected);
93
- });
94
- it('should work as expected when called with false', () => {
95
- const expected = {
96
- type: SUCCESS_LOGOUT,
97
- notify: false,
98
- autoLogout: false
99
- };
100
- expect(successLogout(false)).toEqual(expected);
101
- });
102
- it('should work as expected when called with autoLogout parameter', () => {
103
- const expected = {
104
- type: SUCCESS_LOGOUT,
105
- notify: true,
106
- autoLogout: true
107
- };
108
- expect(successLogout(undefined, true)).toEqual(expected);
109
- });
110
- });
111
- describe('errorLogout()', () => {
112
- it('should work as expected', () => {
113
- const expected = {
114
- type: ERROR_LOGOUT,
115
- messages,
116
- autoLogout: false
117
- };
118
- expect(errorLogout(messages)).toEqual(expected);
119
- });
120
- it('should work as expected when the messages parameter is empty', () => {
121
- const expected = {
122
- type: ERROR_LOGOUT,
123
- messages: [],
124
- autoLogout: false
125
- };
126
- expect(errorLogout()).toEqual(expected);
127
- });
128
- it('should work as expected when called with autoLogout parameter', () => {
129
- const expected = {
130
- type: ERROR_LOGOUT,
131
- messages,
132
- autoLogout: true
133
- };
134
- expect(errorLogout(messages, true)).toEqual(expected);
135
- });
136
- });
137
- describe('requestUser()', () => {
138
- it('should work as expected', () => {
139
- const expected = {
140
- type: REQUEST_USER
141
- };
142
- expect(requestUser()).toEqual(expected);
143
- });
144
- });
145
- describe('receiveUser()', () => {
146
- it('should work as expected', () => {
147
- const user = {
148
- firstName: 'John',
149
- lastName: 'Doe',
150
- mail: 'john@doe.com'
151
- };
152
- const expected = {
153
- type: RECEIVE_USER,
154
- user
155
- };
156
- expect(receiveUser(user)).toEqual(expected);
157
- });
158
- });
159
- describe('errorUser()', () => {
160
- it('should work as expected', () => {
161
- const err = new Error();
162
- // eslint-disable-next-line extra-rules/no-single-line-objects
163
- const expected = {
164
- type: ERROR_USER,
165
- error: err
166
- };
167
- expect(errorUser(err)).toEqual(expected);
168
- });
169
- });
170
- describe('toggleLoggedIn()', () => {
171
- it('should toggle to true', () => {
172
- const expected = {
173
- type: TOGGLE_LOGGED_IN,
174
- value: true
175
- };
176
- expect(toggleLoggedIn(true)).toEqual(expected);
177
- });
178
- it('should toggle to false', () => {
179
- const expected = {
180
- type: TOGGLE_LOGGED_IN,
181
- value: false
182
- };
183
- expect(toggleLoggedIn(false)).toEqual(expected);
184
- });
185
- });
186
- });
@@ -1,24 +0,0 @@
1
- import React from 'react';
2
- import { shallow, mount } from 'enzyme';
3
- import Backdrop from "./index";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- describe('<Backdrop />', () => {
6
- let mockOpen;
7
- beforeEach(() => {
8
- mockOpen = jest.fn();
9
- });
10
- it('should render', () => {
11
- const wrapper = shallow(/*#__PURE__*/_jsx(Backdrop, {
12
- isVisible: true
13
- }));
14
- expect(wrapper).toMatchSnapshot();
15
- });
16
- it('should execute callback when Backdrop is clicked', () => {
17
- const wrapper = mount(/*#__PURE__*/_jsx(Backdrop, {
18
- isVisible: true,
19
- onClick: mockOpen
20
- }));
21
- wrapper.find('div').simulate('click');
22
- expect(mockOpen).toBeCalled();
23
- });
24
- });
@@ -1,42 +0,0 @@
1
- import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import Button from "./index";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- describe('<Button />', () => {
6
- it('should render the button', () => {
7
- const wrapper = shallow(/*#__PURE__*/_jsx(Button, {
8
- children: "My content"
9
- }));
10
- expect(wrapper).toMatchSnapshot();
11
- expect(wrapper.find('button').length).toBe(1);
12
- });
13
- it('should render the button in disabled state', () => {
14
- const wrapper = shallow(/*#__PURE__*/_jsx(Button, {
15
- disabled: true,
16
- children: "My content"
17
- }));
18
- expect(wrapper).toMatchSnapshot();
19
- expect(wrapper.find('button[disabled]').length).toBe(1);
20
- });
21
- it('should trigger the click event', () => {
22
- const callback = jest.fn();
23
- const wrapper = shallow(/*#__PURE__*/_jsx(Button, {
24
- onClick: callback,
25
- children: "My content"
26
- }));
27
- wrapper.simulate('click');
28
- expect(wrapper).toMatchSnapshot();
29
- expect(callback).toHaveBeenCalled();
30
- });
31
- it('should not trigger the click event when disabled', () => {
32
- const callback = jest.fn();
33
- const wrapper = shallow(/*#__PURE__*/_jsx(Button, {
34
- disabled: true,
35
- onClick: callback,
36
- children: "My content"
37
- }));
38
- wrapper.simulate('click');
39
- expect(wrapper).toMatchSnapshot();
40
- expect(callback).not.toHaveBeenCalled();
41
- });
42
- });
@@ -1,111 +0,0 @@
1
- import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import Checkbox from "./index";
4
-
5
- /**
6
- * Checked Icon
7
- * @returns {JSX}
8
- */
9
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
- const Checked = () => /*#__PURE__*/_jsx("div", {});
11
-
12
- /**
13
- * Unchecked Icon
14
- * @returns {JSX}
15
- */
16
- const Unchecked = () => /*#__PURE__*/_jsx("div", {});
17
- describe('<Checkbox />', () => {
18
- it('should render the checkbox with the label before the icon', () => {
19
- const wrapper = shallow(/*#__PURE__*/_jsx(Checkbox, {
20
- label: /*#__PURE__*/_jsx("span", {
21
- children: "Test Label Deluxe"
22
- }),
23
- labelPosition: "left",
24
- checkedIcon: /*#__PURE__*/_jsx(Checked, {}),
25
- uncheckedIcon: /*#__PURE__*/_jsx(Unchecked, {}),
26
- checked: false
27
- }));
28
- const expected = /*#__PURE__*/_jsxs("div", {
29
- children: [/*#__PURE__*/_jsx("span", {
30
- children: "Test Label Deluxe"
31
- }), /*#__PURE__*/_jsx(Unchecked, {})]
32
- });
33
- expect(wrapper).toMatchSnapshot();
34
- expect(wrapper.matchesElement(expected)).toBeTruthy();
35
- });
36
- it('should render the checkbox with the label after the icon', () => {
37
- const wrapper = shallow(/*#__PURE__*/_jsx(Checkbox, {
38
- label: /*#__PURE__*/_jsx("span", {
39
- children: "Test Label Deluxe"
40
- }),
41
- labelPosition: "right",
42
- checkedIcon: /*#__PURE__*/_jsx(Checked, {}),
43
- uncheckedIcon: /*#__PURE__*/_jsx(Unchecked, {}),
44
- checked: false
45
- }));
46
- const expected = /*#__PURE__*/_jsxs("div", {
47
- children: [/*#__PURE__*/_jsx(Unchecked, {}), /*#__PURE__*/_jsx("span", {
48
- children: "Test Label Deluxe"
49
- })]
50
- });
51
- expect(wrapper).toMatchSnapshot();
52
- expect(wrapper.matchesElement(expected)).toBeTruthy();
53
- });
54
- it('should render the unchecked icon if "checked" is false', () => {
55
- const wrapper = shallow(/*#__PURE__*/_jsx(Checkbox, {
56
- checked: false,
57
- label: "Test Label Deluxe",
58
- checkedIcon: /*#__PURE__*/_jsx(Checked, {}),
59
- uncheckedIcon: /*#__PURE__*/_jsx(Unchecked, {})
60
- }));
61
- expect(wrapper).toMatchSnapshot();
62
- expect(wrapper.find(Checked).length).toBe(0);
63
- expect(wrapper.find(Unchecked).length).toBe(1);
64
- });
65
- it('should render the unchecked icon if "checked" is false', () => {
66
- const wrapper = shallow(/*#__PURE__*/_jsx(Checkbox, {
67
- checked: true,
68
- label: "Test Label Deluxe",
69
- checkedIcon: /*#__PURE__*/_jsx(Checked, {}),
70
- uncheckedIcon: /*#__PURE__*/_jsx(Unchecked, {})
71
- }));
72
- expect(wrapper).toMatchSnapshot();
73
- expect(wrapper.find(Checked).length).toBe(1);
74
- expect(wrapper.find(Unchecked).length).toBe(0);
75
- });
76
- it('should call the callback with the inverted value', () => {
77
- const spy = jest.fn();
78
- const wrapper = shallow(/*#__PURE__*/_jsx(Checkbox, {
79
- label: "Test Label Deluxe",
80
- checkedIcon: /*#__PURE__*/_jsx(Checked, {}),
81
- uncheckedIcon: /*#__PURE__*/_jsx(Unchecked, {}),
82
- checked: false,
83
- onCheck: spy
84
- }));
85
- wrapper.simulate('click');
86
- expect(spy).toHaveBeenCalledWith(true);
87
- });
88
- it('should render an <input> element if a name prop is provided', () => {
89
- const wrapper = shallow(/*#__PURE__*/_jsx(Checkbox, {
90
- label: "Test Label Deluxe",
91
- checkedIcon: /*#__PURE__*/_jsx(Checked, {}),
92
- uncheckedIcon: /*#__PURE__*/_jsx(Unchecked, {}),
93
- defaultChecked: false,
94
- name: "myCheckbox"
95
- }));
96
- const input = wrapper.find('input');
97
- expect(input.length).toBe(1);
98
- expect(input.prop('name')).toEqual('myCheckbox');
99
- expect(input.prop('value')).toEqual(0);
100
- });
101
- it('should work as an uncontrolled input', () => {
102
- const wrapper = shallow(/*#__PURE__*/_jsx(Checkbox, {
103
- label: "Test Label Deluxe",
104
- checkedIcon: /*#__PURE__*/_jsx(Checked, {}),
105
- uncheckedIcon: /*#__PURE__*/_jsx(Unchecked, {}),
106
- defaultChecked: false
107
- }));
108
- wrapper.simulate('click');
109
- expect(wrapper.state('checked')).toBe(true);
110
- });
111
- });
@@ -1,141 +0,0 @@
1
- import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import { act } from 'react-dom/test-utils';
4
- import CountdownTimer, { getFormattedTimeString } from "./index";
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- describe('<CountdownTimer>', () => {
7
- jest.useFakeTimers();
8
-
9
- /**
10
- * Creates a new countdown timer element.
11
- * @param {number} remainingDays The remaining days.
12
- * @param {number} remainingHours The remaining hours.
13
- * @param {number} remainingMinutes The remaining minutes.
14
- * @param {number} remainingSeconds The remaining seconds.
15
- * @param {Function} callback The expiration callback.
16
- * @return {JSX}
17
- */
18
- const createTimerElement = (remainingDays, remainingHours, remainingMinutes, remainingSeconds, callback) => {
19
- const timeout = Math.floor(Date.now() / 1000) + remainingDays * 86400 + remainingHours * 3600 + remainingMinutes * 60 + remainingSeconds;
20
- const wrapper = shallow(/*#__PURE__*/_jsx(CountdownTimer, {
21
- timeout: timeout,
22
- onExpire: callback
23
- }));
24
- let currentTimeOffset = timeout - Math.floor(Date.now() / 1000);
25
- wrapper.instance().getRemainingTime = () => {
26
- currentTimeOffset -= 1;
27
- return currentTimeOffset;
28
- };
29
- return wrapper;
30
- };
31
-
32
- /**
33
- * Performs a time format check for a specific remaining time.
34
- * @param {number} remainingDays The remaining days.
35
- * @param {number} remainingHours The remaining hours.
36
- * @param {number} remainingMinutes The remaining minutes.
37
- * @param {number} remainingSeconds The remaining seconds.
38
- */
39
- const performFormatCheck = (remainingDays, remainingHours, remainingMinutes, remainingSeconds) => {
40
- jest.clearAllTimers();
41
- const intervalSpy = jest.spyOn(global, 'setInterval');
42
- const wrapper = createTimerElement(remainingDays, remainingHours, remainingMinutes, remainingSeconds, null);
43
- const expectedTimeFormat = getFormattedTimeString(remainingDays, remainingHours, remainingMinutes, remainingSeconds - 1);
44
- expect(intervalSpy).toHaveBeenCalledTimes(1);
45
- act(() => {
46
- jest.advanceTimersByTime(1000);
47
- });
48
- wrapper.update();
49
- const {
50
- params,
51
- string
52
- } = wrapper.props();
53
- expect({
54
- params,
55
- string
56
- }).toEqual(expectedTimeFormat);
57
- intervalSpy.mockRestore();
58
- };
59
- it('should render the correct time for < 24h', () => performFormatCheck(0, 0, 0, 5));
60
- it('should render the correct time for 24h - 48h', () => performFormatCheck(1, 12, 6, 5));
61
- it('should render the correct time for > 2d', () => performFormatCheck(30, 1, 2, 3));
62
- it('should not render negative durations', () => {
63
- jest.clearAllTimers();
64
- const wrapper = createTimerElement(-1, -2, -3, -5, null);
65
- const expectedTimeFormat = getFormattedTimeString(0, 0, 0, 0);
66
- act(() => {
67
- jest.advanceTimersByTime(1000);
68
- });
69
- const {
70
- params,
71
- string
72
- } = wrapper.props();
73
- expect({
74
- params,
75
- string
76
- }).toEqual(expectedTimeFormat);
77
- });
78
- it('should stop at 00:00:00 when the timer expires', () => {
79
- const wrapper = createTimerElement(0, 0, 0, 1, null);
80
- const expectedTimeFormat = getFormattedTimeString(0, 0, 0, 0);
81
- act(() => {
82
- jest.advanceTimersByTime(1000);
83
- });
84
- wrapper.update();
85
- let {
86
- params,
87
- string
88
- } = wrapper.props();
89
- expect({
90
- params,
91
- string
92
- }).toEqual(expectedTimeFormat);
93
- act(() => {
94
- jest.advanceTimersByTime(1000);
95
- });
96
- ({
97
- params,
98
- string
99
- } = wrapper.props());
100
- expect({
101
- params,
102
- string
103
- }).toEqual(expectedTimeFormat);
104
- });
105
- it('should invoke the callback when the timer expires', () => {
106
- let timesCallbackInvoked = 0;
107
- /**
108
- * The callback method will just increment a counter when invoked.
109
- */
110
- const callback = () => {
111
- timesCallbackInvoked += 1;
112
- };
113
- createTimerElement(0, 0, 0, 2, callback);
114
- act(() => {
115
- jest.advanceTimersByTime(1000);
116
- });
117
- expect(timesCallbackInvoked).toBe(0);
118
- act(() => {
119
- jest.advanceTimersByTime(1000);
120
- });
121
- expect(timesCallbackInvoked).toBe(1);
122
- act(() => {
123
- jest.advanceTimersByTime(1000);
124
- });
125
- expect(timesCallbackInvoked).toBe(1);
126
- });
127
- it('should not invoke the callback when the timeout is already expired.', () => {
128
- let timesCallbackInvoked = 0;
129
- /**
130
- * The callback method will just increment a counter when invoked.
131
- */
132
- const callback = () => {
133
- timesCallbackInvoked += 1;
134
- };
135
- createTimerElement(0, 0, 0, 0, callback);
136
- act(() => {
137
- jest.advanceTimersByTime(1000);
138
- });
139
- expect(timesCallbackInvoked).toBe(0);
140
- });
141
- });
@@ -1,79 +0,0 @@
1
- import React from 'react';
2
- import { mount, shallow } from 'enzyme';
3
- import Drawer from "./index";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- jest.mock('@shopgate/engage/a11y/components');
6
- describe('<Drawer />', () => {
7
- const onOpen = jest.fn();
8
- const onClose = jest.fn();
9
- const onDidOpen = jest.fn();
10
- const onDidClose = jest.fn();
11
- beforeEach(() => {
12
- jest.clearAllMocks();
13
- });
14
- it('should render', () => {
15
- const wrapper = shallow(/*#__PURE__*/_jsx(Drawer, {}));
16
- expect(wrapper).toMatchSnapshot();
17
- });
18
- it('should execute callback when drawer is opened', () => {
19
- const wrapper = mount(/*#__PURE__*/_jsx(Drawer, {
20
- onOpen: onOpen
21
- }));
22
- wrapper.setProps({
23
- isOpen: true
24
- });
25
- expect(onOpen).toBeCalled();
26
- });
27
- it('should execute callback when drawer is closed', () => {
28
- const wrapper = mount(/*#__PURE__*/_jsx(Drawer, {
29
- isOpen: true,
30
- onClose: onClose
31
- }));
32
- wrapper.setProps({
33
- isOpen: false
34
- });
35
- expect(onClose).toBeCalled();
36
- });
37
- it('should add custom classes', () => {
38
- const wrapper = mount(/*#__PURE__*/_jsx(Drawer, {
39
- className: "custom-class-name",
40
- isOpen: true
41
- }));
42
- expect(wrapper).toMatchSnapshot();
43
- expect(wrapper.hasClass('custom-class-name')).toEqual(true);
44
- });
45
- it('should execute callback when drawer open animation did end', () => {
46
- const wrapper = mount(/*#__PURE__*/_jsx(Drawer, {
47
- className: "custom-class-name",
48
- isOpen: false,
49
- onOpen: onOpen,
50
- onDidOpen: onDidOpen
51
- }));
52
- expect(wrapper).toMatchSnapshot();
53
- wrapper.setProps({
54
- isOpen: true
55
- });
56
- wrapper.update();
57
- expect(onOpen).toBeCalled();
58
- expect(onDidOpen).not.toBeCalled();
59
- wrapper.find('[role="dialog"]').simulate('animationEnd');
60
- expect(onDidOpen).toBeCalled();
61
- });
62
- it('should execute callback when drawer close animation did end', () => {
63
- const wrapper = mount(/*#__PURE__*/_jsx(Drawer, {
64
- className: "custom-class-name",
65
- isOpen: true,
66
- onClose: onClose,
67
- onDidClose: onDidClose
68
- }));
69
- expect(wrapper).toMatchSnapshot();
70
- wrapper.setProps({
71
- isOpen: false
72
- });
73
- wrapper.update();
74
- expect(onClose).toBeCalled();
75
- expect(onDidClose).not.toBeCalled();
76
- wrapper.find('[role="dialog"]').simulate('animationEnd');
77
- expect(onDidClose).toBeCalled();
78
- });
79
- });
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import Ellipsis from "./index";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- const clamp = 3;
6
- const text = 'Some very long text that should be cut off by this ellipsis component.';
7
- describe('<Ellipsis />', () => {
8
- it('should render', () => {
9
- const wrapper = shallow(/*#__PURE__*/_jsx(Ellipsis, {
10
- rows: clamp,
11
- children: text
12
- }));
13
- expect(wrapper).toMatchSnapshot();
14
- });
15
- });
@@ -1,61 +0,0 @@
1
- import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import { embeddedMedia } from '@shopgate/pwa-common/collections';
4
- import EmbeddedMedia from "./index";
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- jest.mock('@shopgate/pwa-common/collections', () => ({
7
- embeddedMedia: {
8
- getHasPendingProviders: jest.fn(),
9
- providers: new Set([{
10
- isPending: false,
11
- remoteScriptUrl: 'http://foo.bar'
12
- }, {
13
- isPending: true,
14
- remoteScriptUrl: 'http://bar.foo',
15
- onScriptLoaded: jest.fn()
16
- }])
17
- }
18
- }));
19
- describe('<EmbeddedMedia />', () => {
20
- beforeEach(() => {
21
- jest.clearAllMocks();
22
- });
23
- it('should return children', () => {
24
- embeddedMedia.getHasPendingProviders.mockReturnValueOnce(false);
25
- const wrapper = shallow(/*#__PURE__*/_jsx(EmbeddedMedia, {
26
- children: /*#__PURE__*/_jsx("div", {
27
- children: "Children"
28
- })
29
- }));
30
- expect(wrapper.html()).toEqual('<div>Children</div>');
31
- });
32
- it.skip('should render Helmet with a script', () => {
33
- embeddedMedia.getHasPendingProviders.mockReturnValueOnce(true);
34
- const wrapper = shallow(/*#__PURE__*/_jsx(EmbeddedMedia, {
35
- children: /*#__PURE__*/_jsx("div", {
36
- children: "Content with embedded media (youtube, vimeo, etc)"
37
- })
38
- }));
39
- const helmetProps = wrapper.find('HelmetWrapper').props();
40
- expect(helmetProps).toEqual({
41
- defer: true,
42
- encodeSpecialCharacters: true,
43
- onChangeClientState() {},
44
- script: []
45
- });
46
- const scriptTags = [{
47
- onload: jest.fn(),
48
- getAttribute: jest.fn().mockReturnValue('http://bar.foo')
49
- }];
50
-
51
- // Invoke helmet cb
52
- helmetProps.onChangeClientState(null, {
53
- scriptTags
54
- });
55
-
56
- // Invoke onload on script
57
- scriptTags[0].onload();
58
- const [, secondProvider] = embeddedMedia.providers;
59
- expect(secondProvider.onScriptLoaded).toHaveBeenCalledTimes(1);
60
- });
61
- });
@@ -1,24 +0,0 @@
1
- import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import GridItem from "./index";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- describe('<GridItem />', () => {
6
- it('should render without any further props', () => {
7
- const wrapper = shallow(/*#__PURE__*/_jsx(GridItem, {}));
8
- expect(wrapper).toMatchSnapshot();
9
- });
10
- it('should be able to render a custom tag', () => {
11
- const wrapper = shallow(/*#__PURE__*/_jsx(GridItem, {
12
- component: "section"
13
- }));
14
- expect(wrapper).toMatchSnapshot();
15
- expect(wrapper.type()).toEqual('section');
16
- });
17
- it('should add custom classes on demand', () => {
18
- const wrapper = shallow(/*#__PURE__*/_jsx(GridItem, {
19
- className: "custom-class-name"
20
- }));
21
- expect(wrapper).toMatchSnapshot();
22
- expect(wrapper.hasClass('custom-class-name')).toEqual(true);
23
- });
24
- });