@jetshop/core 5.10.0 → 5.12.0
Sign up to get free protection for your applications and to get access to all the features.
- package/ChannelHandler/ChannelHandler.d.ts +9 -13
- package/ChannelHandler/ChannelHandler.js +16 -63
- package/ChannelHandler/ChannelHandler.js.map +1 -1
- package/ChannelHandler/channelUtils.d.ts +13 -0
- package/ChannelHandler/channelUtils.js +26 -15
- package/ChannelHandler/channelUtils.js.map +1 -1
- package/ChannelHandler/redirectUtils.d.ts +3 -0
- package/ChannelHandler/redirectUtils.js +48 -0
- package/ChannelHandler/redirectUtils.js.map +1 -0
- package/ChannelHandler/redirectUtils.test.js +8 -0
- package/analytics/AnalyticsProvider.d.ts +4 -0
- package/analytics/AnalyticsProvider.js +18 -2
- package/analytics/AnalyticsProvider.js.map +1 -1
- package/analytics/integrations/ga4.js +1 -1
- package/analytics/integrations/ga4.js.map +1 -1
- package/analytics/integrations/gtag/gtag.d.ts +0 -1
- package/analytics/integrations/gtag/gtag.js +39 -28
- package/analytics/integrations/gtag/gtag.js.map +1 -1
- package/analytics/integrations/gtm/index.d.ts +0 -1
- package/analytics/integrations/gtm/index.js +37 -24
- package/analytics/integrations/gtm/index.js.map +1 -1
- package/analytics/integrations/releware/index.js +1 -1
- package/analytics/integrations/releware/index.js.map +1 -1
- package/analytics/integrations/unslugify.d.ts +1 -0
- package/analytics/integrations/unslugify.js +18 -0
- package/analytics/integrations/unslugify.js.map +1 -0
- package/analytics/trackerRegistry.d.ts +8 -3
- package/analytics/trackerRegistry.js +31 -14
- package/analytics/trackerRegistry.js.map +1 -1
- package/analytics/utils/breadcrumbsWithoutProduct.d.ts +1 -0
- package/analytics/utils/breadcrumbsWithoutProduct.js +9 -0
- package/analytics/utils/breadcrumbsWithoutProduct.js.map +1 -0
- package/boot/PreviewHandler.js.map +1 -1
- package/boot/SharedTree.js +1 -1
- package/boot/SharedTree.js.map +1 -1
- package/boot/apollo.d.ts +5 -3
- package/boot/apollo.js +9 -13
- package/boot/apollo.js.map +1 -1
- package/boot/client/startClient.js +5 -10
- package/boot/client/startClient.js.map +1 -1
- package/boot/server/createRenderer.js +8 -7
- package/boot/server/createRenderer.js.map +1 -1
- package/boot/server/index.js +2 -2
- package/boot/server/index.js.map +1 -1
- package/boot/server/persistedQueries/__tests__/getPersistedQueriesForRequest.test.js +53 -39
- package/boot/server/persistedQueries/getPersistedQueriesForRequest.js +2 -2
- package/boot/server/persistedQueries/getPersistedQueriesForRequest.js.map +1 -1
- package/cart/AddToCartFormik.d.ts +2 -2
- package/cart/AddToCartFormik.js +11 -11
- package/cart/AddToCartFormik.js.map +1 -1
- package/components/Auth/CustomerUpdateForm.js +7 -7
- package/components/Auth/CustomerUpdateForm.js.map +1 -1
- package/components/ChannelContext/ChannelContext.d.ts +2 -0
- package/components/ChannelContext/ChannelContext.js.map +1 -1
- package/components/ChannelContext/ChannelProvider.d.ts +1 -3
- package/components/ChannelContext/ChannelProvider.js +16 -6
- package/components/ChannelContext/ChannelProvider.js.map +1 -1
- package/components/ChannelContext/ChannelProvider.test.js +112 -0
- package/components/ConfigProvider.d.ts +2 -0
- package/components/ConfigProvider.js.map +1 -1
- package/components/DynamicRoute/CategoryRoute.js +9 -2
- package/components/DynamicRoute/CategoryRoute.js.map +1 -1
- package/components/DynamicRoute/ContentRoute.js +9 -1
- package/components/DynamicRoute/ContentRoute.js.map +1 -1
- package/components/DynamicRoute/PreviewRoute.js +12 -2
- package/components/DynamicRoute/PreviewRoute.js.map +1 -1
- package/components/DynamicRoute/ProductRoute.js +12 -4
- package/components/DynamicRoute/ProductRoute.js.map +1 -1
- package/components/Head.js +4 -4
- package/components/Head.js.map +1 -1
- package/components/Mutation/AddToCart/addToCartUtils.d.ts +1 -1
- package/components/Mutation/AddToCart/addToCartUtils.js +7 -1
- package/components/Mutation/AddToCart/addToCartUtils.js.map +1 -1
- package/components/Mutation/RemoveFromCart.js +10 -1
- package/components/Mutation/RemoveFromCart.js.map +1 -1
- package/components/Mutation/cartMutationUtils.js +7 -6
- package/components/Mutation/cartMutationUtils.js.map +1 -1
- package/components/Mutation/useDecrementQuantity.js +8 -3
- package/components/Mutation/useDecrementQuantity.js.map +1 -1
- package/components/Mutation/useIncrementQuantity.js +8 -3
- package/components/Mutation/useIncrementQuantity.js.map +1 -1
- package/components/Mutation/useRemoveFromCart.js +10 -1
- package/components/Mutation/useRemoveFromCart.js.map +1 -1
- package/components/PreviewContext.js +3 -1
- package/components/PreviewContext.js.map +1 -1
- package/components/Query/CartProvider.js +31 -21
- package/components/Query/CartProvider.js.map +1 -1
- package/components/StructuredData/StructuredBreadcrumbData.d.ts +8 -3
- package/components/StructuredData/StructuredBreadcrumbData.js +42 -23
- package/components/StructuredData/StructuredBreadcrumbData.js.map +1 -1
- package/components/StructuredData/StructuredCategoryData.d.ts +16 -0
- package/components/StructuredData/StructuredCategoryData.js +18 -0
- package/components/StructuredData/StructuredCategoryData.js.map +1 -0
- package/components/StructuredData/StructuredPageData.d.ts +16 -0
- package/components/StructuredData/StructuredPageData.js +17 -0
- package/components/StructuredData/StructuredPageData.js.map +1 -0
- package/components/StructuredData/StructuredProductData.js +2 -2
- package/components/StructuredData/StructuredProductData.js.map +1 -1
- package/components/StructuredData/index.d.ts +2 -0
- package/components/StructuredData/index.js +2 -0
- package/components/StructuredData/index.js.map +1 -1
- package/data/fragments/ChannelsFragment.gql +4 -0
- package/data/fragments/ProductListsFragments.gql +94 -0
- package/data/fragments/RouteMetaFragment.gql +18 -0
- package/data/mutations/productListMutations.gql +18 -0
- package/data/queries/ProductLists.gql +8 -0
- package/dependencies.d.ts +10 -1
- package/helpers/isRelativeUrl.d.ts +1 -0
- package/helpers/isRelativeUrl.js +4 -0
- package/helpers/isRelativeUrl.js.map +1 -0
- package/hooks/PackageProducts/usePackageProductItem.d.ts +3 -4
- package/hooks/ProductList/ProductListContext.js +49 -14
- package/hooks/ProductList/ProductListContext.js.map +1 -1
- package/hooks/ProductList/ProductLists.gql +0 -0
- package/hooks/ProductList/action-creators.d.ts +20 -7
- package/hooks/ProductList/action-creators.js +125 -31
- package/hooks/ProductList/action-creators.js.map +1 -1
- package/hooks/ProductList/index.d.ts +34 -8
- package/hooks/ProductList/index.js +19 -0
- package/hooks/ProductList/index.js.map +1 -1
- package/hooks/ProductList/list-transforms.d.ts +2 -2
- package/hooks/ProductList/list-transforms.js +22 -22
- package/hooks/ProductList/list-transforms.js.map +1 -1
- package/hooks/ProductList/list-transforms.test.js +103 -100
- package/hooks/ProductList/product-list-reducer.d.ts +37 -14
- package/hooks/ProductList/product-list-reducer.js +106 -43
- package/hooks/ProductList/product-list-reducer.js.map +1 -1
- package/hooks/ProductList/product-list-reducer.test.js +144 -82
- package/hooks/ProductList/useProductList.d.ts +2 -2
- package/hooks/ProductList/useProductList.js +12 -5
- package/hooks/ProductList/useProductList.js.map +1 -1
- package/hooks/ProductList/useProductListItems.d.ts +1 -1
- package/hooks/ProductList/useProductListItems.js +8 -6
- package/hooks/ProductList/useProductListItems.js.map +1 -1
- package/hooks/useAddMultipleToCart.js +11 -5
- package/hooks/useAddMultipleToCart.js.map +1 -1
- package/hooks/useProductVariants/useProductVariants.d.ts +1 -2
- package/hooks/useProductVariants/useProductVariants.js +1 -1
- package/hooks/useProductVariants/useProductVariants.js.map +1 -1
- package/package.json +1 -1
- package/resolvers/index.d.ts +3 -0
- package/resolvers/index.js +3 -0
- package/resolvers/index.js.map +1 -1
- package/sentry/client.js +1 -1
- package/sentry/client.js.map +1 -1
- package/server/tracking/facebook.d.ts +1 -1
- package/server/tracking/facebook.js +4 -2
- package/server/tracking/facebook.js.map +1 -1
- package/server/tracking/types.d.ts +3 -1
- package/time.d.ts +1 -0
- package/time.js +6 -0
- package/time.js.map +1 -0
- package/types.d.ts +5 -2
@@ -1,12 +1,16 @@
|
|
1
1
|
import { act, renderHook } from '@testing-library/react-hooks';
|
2
2
|
import { useReducer } from 'react';
|
3
3
|
import { reducer, init } from './product-list-reducer';
|
4
|
+
import {
|
5
|
+
productListMapToArray,
|
6
|
+
PRODUCT_LISTS_KEY
|
7
|
+
} from '@jetshop/core/hooks/ProductList';
|
4
8
|
import { LocalStorageMock } from '@react-mock/localstorage';
|
5
9
|
import { render } from '@testing-library/react';
|
6
10
|
import React from 'react';
|
7
11
|
|
8
|
-
const
|
9
|
-
|
12
|
+
const MOCK_LIST_ITEMS = {
|
13
|
+
6952315: {
|
10
14
|
options: { quantity: 1 },
|
11
15
|
variants: {
|
12
16
|
'6952315-170-white': {
|
@@ -17,7 +21,7 @@ const MOCK_LIST = {
|
|
17
21
|
}
|
18
22
|
}
|
19
23
|
},
|
20
|
-
|
24
|
+
502935480: {
|
21
25
|
variants: null,
|
22
26
|
options: {
|
23
27
|
quantity: 1
|
@@ -47,22 +51,25 @@ describe('reducer init method', () => {
|
|
47
51
|
const obj = {
|
48
52
|
key: 'value'
|
49
53
|
};
|
54
|
+
const listId = 'test';
|
50
55
|
|
51
56
|
function Parent({ children }) {
|
52
|
-
const mockList =
|
57
|
+
const mockList = new Map([[listId, obj]]);
|
58
|
+
const localStorage = {};
|
59
|
+
localStorage[PRODUCT_LISTS_KEY] = JSON.stringify(
|
60
|
+
productListMapToArray(mockList)
|
61
|
+
);
|
53
62
|
return (
|
54
|
-
<LocalStorageMock items={{
|
55
|
-
{children}
|
56
|
-
</LocalStorageMock>
|
63
|
+
<LocalStorageMock items={localStorage}>{children}</LocalStorageMock>
|
57
64
|
);
|
58
65
|
}
|
59
66
|
function Child() {
|
60
|
-
const initialState = { loggedIn: false,
|
67
|
+
const initialState = { loggedIn: false, lists: new Map() };
|
61
68
|
const state = init(initialState);
|
62
69
|
|
63
70
|
return (
|
64
71
|
<div>
|
65
|
-
<span>{state.
|
72
|
+
<span>{state.lists.get(listId).key}</span>
|
66
73
|
<span>{state.loggedIn ? 'logged in' : 'not logged in'}</span>
|
67
74
|
</div>
|
68
75
|
);
|
@@ -80,21 +87,45 @@ describe('reducer init method', () => {
|
|
80
87
|
});
|
81
88
|
|
82
89
|
describe('reducer', () => {
|
90
|
+
const initialState = {
|
91
|
+
loggedIn: false,
|
92
|
+
lists: new Map([[null, { name: null, items: MOCK_LIST_ITEMS }]])
|
93
|
+
};
|
94
|
+
|
83
95
|
it('sets logged in and payload when LOGIN is called', () => {
|
84
96
|
const { result, dispatch } = setup();
|
85
|
-
|
97
|
+
|
98
|
+
// We should only test listId null, logged out users shouldn't have lists with IDs.
|
99
|
+
// We could remove the listId from the payload to make null implicit
|
100
|
+
const payload = {
|
101
|
+
listId: null,
|
102
|
+
list: {
|
103
|
+
name: null,
|
104
|
+
items: {
|
105
|
+
test: 'one'
|
106
|
+
}
|
107
|
+
}
|
108
|
+
};
|
86
109
|
|
87
110
|
act(() => dispatch({ type: 'LOGIN', payload }));
|
88
111
|
|
89
112
|
const [state] = result.current;
|
90
113
|
|
91
114
|
expect(state.loggedIn).toBe(true);
|
92
|
-
expect(state.
|
115
|
+
expect(state.lists.get(null).items).toMatchObject(payload.list.items);
|
93
116
|
});
|
94
117
|
it('sets loggedIn and resets list on LOGOUT', () => {
|
95
118
|
const initialState = {
|
96
119
|
loggedIn: true,
|
97
|
-
|
120
|
+
lists: new Map([
|
121
|
+
[
|
122
|
+
null,
|
123
|
+
{
|
124
|
+
name: null,
|
125
|
+
items: { 234523423: { options: { quantity: 1, description: '' } } }
|
126
|
+
}
|
127
|
+
]
|
128
|
+
])
|
98
129
|
};
|
99
130
|
|
100
131
|
const { result, dispatch } = setup(initialState);
|
@@ -109,21 +140,19 @@ describe('reducer', () => {
|
|
109
140
|
const [state] = result.current;
|
110
141
|
|
111
142
|
expect(state.loggedIn).toBe(false);
|
112
|
-
expect(state.
|
143
|
+
expect(state.lists).toMatchObject(
|
144
|
+
new Map([[null, { name: null, items: {} }]])
|
145
|
+
);
|
113
146
|
});
|
114
147
|
describe('UPDATE action', () => {
|
115
148
|
it('can replace a base product with one of its variants', () => {
|
116
|
-
const initialState = {
|
117
|
-
loggedIn: false,
|
118
|
-
list: MOCK_LIST
|
119
|
-
};
|
120
|
-
|
121
149
|
const { result, dispatch } = setup(initialState);
|
122
150
|
|
123
151
|
act(() =>
|
124
152
|
dispatch({
|
125
153
|
type: 'UPDATE',
|
126
154
|
payload: {
|
155
|
+
listId: null,
|
127
156
|
articleNumber: '502935480',
|
128
157
|
variantArticleNumber: '502935480-sparkles',
|
129
158
|
options: {
|
@@ -135,7 +164,7 @@ describe('reducer', () => {
|
|
135
164
|
|
136
165
|
const [state] = result.current;
|
137
166
|
|
138
|
-
const baseProduct = state.
|
167
|
+
const baseProduct = state.lists.get(null).items['502935480'];
|
139
168
|
|
140
169
|
expect(baseProduct.variants['502935480-sparkles'].options.quantity).toBe(
|
141
170
|
1
|
@@ -144,17 +173,13 @@ describe('reducer', () => {
|
|
144
173
|
expect(baseProduct.options).toBe(null);
|
145
174
|
});
|
146
175
|
it('can replace a variant with another variant', () => {
|
147
|
-
const initialState = {
|
148
|
-
loggedIn: false,
|
149
|
-
list: MOCK_LIST
|
150
|
-
};
|
151
|
-
|
152
176
|
const { result, dispatch } = setup(initialState);
|
153
177
|
|
154
178
|
act(() =>
|
155
179
|
dispatch({
|
156
180
|
type: 'UPDATE',
|
157
181
|
payload: {
|
182
|
+
listId: null,
|
158
183
|
articleNumber: '6952315',
|
159
184
|
variantArticleNumber: '6952315-170-pink',
|
160
185
|
options: {
|
@@ -166,28 +191,25 @@ describe('reducer', () => {
|
|
166
191
|
);
|
167
192
|
|
168
193
|
const [state] = result.current;
|
194
|
+
const list = state.lists.get(null);
|
169
195
|
|
170
196
|
expect(
|
171
|
-
|
197
|
+
list.items['6952315'].variants['6952315-170-pink'].options.quantity
|
172
198
|
).toBe(1);
|
173
199
|
expect(
|
174
|
-
|
200
|
+
list.items['6952315'].variants['6952315-170-white']
|
175
201
|
).not.toBeDefined();
|
176
202
|
});
|
177
203
|
});
|
178
204
|
describe('ADD action', () => {
|
179
205
|
it('can add a base product to the list', () => {
|
180
|
-
const initialState = {
|
181
|
-
loggedIn: false,
|
182
|
-
list: MOCK_LIST
|
183
|
-
};
|
184
|
-
|
185
206
|
const { result, dispatch } = setup(initialState);
|
186
207
|
|
187
208
|
act(() =>
|
188
209
|
dispatch({
|
189
210
|
type: 'ADD',
|
190
211
|
payload: {
|
212
|
+
listId: null,
|
191
213
|
articleNumber: 'boogie',
|
192
214
|
options: {
|
193
215
|
quantity: 1
|
@@ -198,20 +220,16 @@ describe('reducer', () => {
|
|
198
220
|
|
199
221
|
const [state] = result.current;
|
200
222
|
|
201
|
-
expect(state.
|
223
|
+
expect(state.lists.get(null).items['boogie'].options.quantity).toBe(1);
|
202
224
|
});
|
203
225
|
it('can add a variant to the list when there is no existing base product', () => {
|
204
|
-
const initialState = {
|
205
|
-
loggedIn: false,
|
206
|
-
list: MOCK_LIST
|
207
|
-
};
|
208
|
-
|
209
226
|
const { result, dispatch } = setup(initialState);
|
210
227
|
|
211
228
|
act(() =>
|
212
229
|
dispatch({
|
213
230
|
type: 'ADD',
|
214
231
|
payload: {
|
232
|
+
listId: null,
|
215
233
|
articleNumber: 'boogie',
|
216
234
|
variantArticleNumber: 'boogie-woogie',
|
217
235
|
options: {
|
@@ -222,24 +240,21 @@ describe('reducer', () => {
|
|
222
240
|
);
|
223
241
|
|
224
242
|
const [state] = result.current;
|
243
|
+
const list = state.lists.get(null);
|
225
244
|
|
226
|
-
expect(
|
245
|
+
expect(list.items['boogie'].options).toBe(null);
|
227
246
|
expect(
|
228
|
-
|
247
|
+
list.items['boogie'].variants['boogie-woogie'].options.quantity
|
229
248
|
).toBe(1);
|
230
249
|
});
|
231
250
|
it('can add a variant to the list when there is an existing base product', () => {
|
232
|
-
const initialState = {
|
233
|
-
loggedIn: false,
|
234
|
-
list: MOCK_LIST
|
235
|
-
};
|
236
|
-
|
237
251
|
const { result, dispatch } = setup(initialState);
|
238
252
|
|
239
253
|
act(() =>
|
240
254
|
dispatch({
|
241
255
|
type: 'ADD',
|
242
256
|
payload: {
|
257
|
+
listId: null,
|
243
258
|
articleNumber: '502935480',
|
244
259
|
variantArticleNumber: 'boogie-woogie',
|
245
260
|
options: {
|
@@ -250,24 +265,21 @@ describe('reducer', () => {
|
|
250
265
|
);
|
251
266
|
|
252
267
|
const [state] = result.current;
|
268
|
+
const list = state.lists.get(null);
|
253
269
|
|
254
|
-
expect(
|
270
|
+
expect(list.items['502935480'].options).not.toBe(null);
|
255
271
|
expect(
|
256
|
-
|
272
|
+
list.items['502935480'].variants['boogie-woogie'].options.quantity
|
257
273
|
).toBe(1);
|
258
274
|
});
|
259
275
|
it('can add a variant to the list when there is a base product with variants', () => {
|
260
|
-
const initialState = {
|
261
|
-
loggedIn: false,
|
262
|
-
list: MOCK_LIST
|
263
|
-
};
|
264
|
-
|
265
276
|
const { result, dispatch } = setup(initialState);
|
266
277
|
|
267
278
|
act(() =>
|
268
279
|
dispatch({
|
269
280
|
type: 'ADD',
|
270
281
|
payload: {
|
282
|
+
listId: null,
|
271
283
|
articleNumber: '6952315',
|
272
284
|
variantArticleNumber: 'boogie-woogie',
|
273
285
|
options: {
|
@@ -278,50 +290,44 @@ describe('reducer', () => {
|
|
278
290
|
);
|
279
291
|
|
280
292
|
const [state] = result.current;
|
293
|
+
const list = state.lists.get(null);
|
281
294
|
|
282
|
-
expect(
|
295
|
+
expect(list.items['6952315'].options).not.toBe(null);
|
283
296
|
expect(
|
284
|
-
|
297
|
+
list.items['6952315'].variants['boogie-woogie'].options.quantity
|
285
298
|
).toBe(1);
|
286
|
-
expect(
|
287
|
-
|
299
|
+
expect(list.items['6952315'].variants['6952315-170-white']).toMatchObject(
|
300
|
+
MOCK_LIST_ITEMS['6952315'].variants['6952315-170-white']
|
288
301
|
);
|
289
302
|
});
|
290
303
|
});
|
291
304
|
describe('REMOVE action', () => {
|
292
305
|
it('will entirely remove a base product with no variants', () => {
|
293
|
-
const initialState = {
|
294
|
-
loggedIn: false,
|
295
|
-
list: MOCK_LIST
|
296
|
-
};
|
297
|
-
|
298
306
|
const { result, dispatch } = setup(initialState);
|
299
307
|
|
300
308
|
act(() =>
|
301
309
|
dispatch({
|
302
310
|
type: 'REMOVE',
|
303
311
|
payload: {
|
312
|
+
listId: null,
|
304
313
|
articleNumber: '502935480'
|
305
314
|
}
|
306
315
|
})
|
307
316
|
);
|
308
317
|
|
309
318
|
const [state] = result.current;
|
319
|
+
const list = state.lists.get(null);
|
310
320
|
|
311
|
-
expect(
|
321
|
+
expect(list.items['502935480']).not.toBeDefined();
|
312
322
|
});
|
313
323
|
it('will entirely remove an item if the variant is removed and there is no base product', () => {
|
314
|
-
const initialState = {
|
315
|
-
loggedIn: false,
|
316
|
-
list: MOCK_LIST
|
317
|
-
};
|
318
|
-
|
319
324
|
const { result, dispatch } = setup(initialState);
|
320
325
|
|
321
326
|
act(() =>
|
322
327
|
dispatch({
|
323
328
|
type: 'REMOVE',
|
324
329
|
payload: {
|
330
|
+
listId: null,
|
325
331
|
articleNumber: 'without-base',
|
326
332
|
variantArticleNumber: 'with-variant'
|
327
333
|
}
|
@@ -329,15 +335,11 @@ describe('reducer', () => {
|
|
329
335
|
);
|
330
336
|
|
331
337
|
const [state] = result.current;
|
338
|
+
const list = state.lists.get(null);
|
332
339
|
|
333
|
-
expect(
|
340
|
+
expect(list['without-base']).not.toBeDefined();
|
334
341
|
});
|
335
342
|
it('will keep the variant if one exists', () => {
|
336
|
-
const initialState = {
|
337
|
-
loggedIn: false,
|
338
|
-
list: MOCK_LIST
|
339
|
-
};
|
340
|
-
|
341
343
|
const { result, dispatch } = setup(initialState);
|
342
344
|
const articleToRemove = '6952315';
|
343
345
|
|
@@ -345,22 +347,19 @@ describe('reducer', () => {
|
|
345
347
|
dispatch({
|
346
348
|
type: 'REMOVE',
|
347
349
|
payload: {
|
350
|
+
listId: null,
|
348
351
|
articleNumber: articleToRemove
|
349
352
|
}
|
350
353
|
})
|
351
354
|
);
|
352
355
|
|
353
356
|
const [state] = result.current;
|
357
|
+
const list = state.lists.get(null);
|
354
358
|
|
355
|
-
expect(
|
356
|
-
expect(
|
359
|
+
expect(list.items[articleToRemove].options).toBe(null);
|
360
|
+
expect(list.items[articleToRemove].variants).toBeDefined();
|
357
361
|
});
|
358
362
|
it('will remove the variant but keep the base product', () => {
|
359
|
-
const initialState = {
|
360
|
-
loggedIn: false,
|
361
|
-
list: MOCK_LIST
|
362
|
-
};
|
363
|
-
|
364
363
|
const { result, dispatch } = setup(initialState);
|
365
364
|
|
366
365
|
const parent = '6952315';
|
@@ -370,6 +369,7 @@ describe('reducer', () => {
|
|
370
369
|
dispatch({
|
371
370
|
type: 'REMOVE',
|
372
371
|
payload: {
|
372
|
+
listId: null,
|
373
373
|
articleNumber: parent,
|
374
374
|
variantArticleNumber: articleToRemove
|
375
375
|
}
|
@@ -377,9 +377,71 @@ describe('reducer', () => {
|
|
377
377
|
);
|
378
378
|
|
379
379
|
const [state] = result.current;
|
380
|
+
const list = state.lists.get(null);
|
381
|
+
|
382
|
+
expect(list.items[parent].variants[articleToRemove]).not.toBeDefined();
|
383
|
+
expect(list.items[parent].options).toBeDefined();
|
384
|
+
});
|
385
|
+
});
|
386
|
+
|
387
|
+
describe('DELETE_LIST action', () => {
|
388
|
+
it('can delete a product list', () => {
|
389
|
+
const listId = '12345';
|
390
|
+
const initialState = {
|
391
|
+
loggedIn: false,
|
392
|
+
lists: new Map([[listId, MOCK_LIST_ITEMS]])
|
393
|
+
};
|
394
|
+
|
395
|
+
const { result, dispatch } = setup(initialState);
|
396
|
+
const [state] = result.current;
|
397
|
+
|
398
|
+
expect(state.lists.get(listId)).toBeDefined;
|
399
|
+
|
400
|
+
act(() =>
|
401
|
+
dispatch({
|
402
|
+
type: 'DELETE_LIST',
|
403
|
+
payload: { listId }
|
404
|
+
})
|
405
|
+
);
|
406
|
+
|
407
|
+
expect(state.lists.get(listId)).toBeUndefined;
|
408
|
+
});
|
409
|
+
});
|
410
|
+
|
411
|
+
describe('CREATE_LIST action', () => {
|
412
|
+
it('can create a new product list', () => {
|
413
|
+
const listId = '12345';
|
414
|
+
const { result, dispatch } = setup();
|
415
|
+
const name = 'My Stuff';
|
416
|
+
|
417
|
+
act(() =>
|
418
|
+
dispatch({
|
419
|
+
type: 'CREATE_LIST',
|
420
|
+
payload: { listId, list: { name } }
|
421
|
+
})
|
422
|
+
);
|
423
|
+
|
424
|
+
const [state] = result.current;
|
425
|
+
expect(state.lists.has(listId)).toBe(true);
|
426
|
+
expect(state.lists.get(listId).name).toBe(name);
|
427
|
+
});
|
428
|
+
});
|
429
|
+
|
430
|
+
describe('CLEAR_ITEMS action', () => {
|
431
|
+
it('can clear items on a product list', () => {
|
432
|
+
const { result, dispatch } = setup(initialState);
|
433
|
+
const listId = null;
|
434
|
+
|
435
|
+
act(() =>
|
436
|
+
dispatch({
|
437
|
+
type: 'CLEAR_ITEMS',
|
438
|
+
payload: { listId }
|
439
|
+
})
|
440
|
+
);
|
380
441
|
|
381
|
-
|
382
|
-
|
442
|
+
const [state] = result.current;
|
443
|
+
const list = state.lists.get(listId);
|
444
|
+
expect(list.items).toMatchObject({});
|
383
445
|
});
|
384
446
|
});
|
385
447
|
});
|
@@ -395,7 +457,7 @@ function setup(initialState) {
|
|
395
457
|
function useProductListReducer({ initialState }) {
|
396
458
|
const [state, dispatch] = useReducer(
|
397
459
|
reducer,
|
398
|
-
initialState || { loggedIn: false,
|
460
|
+
initialState || { loggedIn: false, lists: new Map() }
|
399
461
|
);
|
400
462
|
|
401
463
|
return [state, dispatch];
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { UpdateListInput } from '.';
|
2
|
-
export declare function useProductList(): {
|
1
|
+
import { ProductListId, UpdateListInput } from '.';
|
2
|
+
export declare function useProductList(listId?: ProductListId): {
|
3
3
|
toggle: (articleNumber: string, { variantArticleNumber, quantity, description, productName }: UpdateListInput) => void;
|
4
4
|
add: (articleNumber: string, { variantArticleNumber, quantity, description, productName }: UpdateListInput) => void;
|
5
5
|
remove: (articleNumber: string, { variantArticleNumber }: UpdateListInput) => void;
|
@@ -5,8 +5,12 @@ import { flattenList } from './list-transforms';
|
|
5
5
|
import { ProductListContext } from './ProductListContext';
|
6
6
|
import { trackAddToWishListEvent } from '../../analytics/tracking';
|
7
7
|
import { useTracker } from '../../analytics/Analytics';
|
8
|
-
export function useProductList() {
|
9
|
-
const {
|
8
|
+
export function useProductList(listId = null) {
|
9
|
+
const {
|
10
|
+
// XXX
|
11
|
+
//state: { list = {} },
|
12
|
+
state, dispatch, queries, usingLocalList } = React.useContext(ProductListContext);
|
13
|
+
const list = state.lists.get(listId);
|
10
14
|
const [hydrated, setHydrated] = useState(!usingLocalList);
|
11
15
|
const updateAPI = !usingLocalList;
|
12
16
|
const removeMutation = useMutation(queries.remove);
|
@@ -27,6 +31,7 @@ export function useProductList() {
|
|
27
31
|
}
|
28
32
|
function remove(articleNumber, { variantArticleNumber }) {
|
29
33
|
dispatch(removeAction({
|
34
|
+
listId,
|
30
35
|
articleNumber,
|
31
36
|
variantArticleNumber,
|
32
37
|
removeMutation,
|
@@ -39,6 +44,7 @@ export function useProductList() {
|
|
39
44
|
productName
|
40
45
|
}));
|
41
46
|
dispatch(addAction({
|
47
|
+
listId,
|
42
48
|
updateAPI,
|
43
49
|
articleNumber,
|
44
50
|
variantArticleNumber,
|
@@ -48,6 +54,7 @@ export function useProductList() {
|
|
48
54
|
}
|
49
55
|
function update(articleNumber, { variantArticleNumber, quantity, description, variantToReplace }) {
|
50
56
|
dispatch(updateAction({
|
57
|
+
listId,
|
51
58
|
updateAPI,
|
52
59
|
articleNumber,
|
53
60
|
variantArticleNumber,
|
@@ -58,16 +65,16 @@ export function useProductList() {
|
|
58
65
|
}));
|
59
66
|
}
|
60
67
|
function clear() {
|
61
|
-
dispatch(clearAction({ removeMutation, updateAPI }));
|
68
|
+
dispatch(clearAction({ listId, removeMutation, updateAPI }));
|
62
69
|
}
|
63
70
|
function inList(articleNumber, { variantArticleNumber }) {
|
64
71
|
var _a;
|
65
72
|
if (!hydrated)
|
66
73
|
return false;
|
67
|
-
if (list && articleNumber in list) {
|
74
|
+
if (list && articleNumber in list.items) {
|
68
75
|
if (!variantArticleNumber)
|
69
76
|
return true;
|
70
|
-
const variantInList = !!((_a = list[articleNumber].variants) === null || _a === void 0 ? void 0 : _a[variantArticleNumber]);
|
77
|
+
const variantInList = !!((_a = list.items[articleNumber].variants) === null || _a === void 0 ? void 0 : _a[variantArticleNumber]);
|
71
78
|
return variantInList;
|
72
79
|
}
|
73
80
|
else {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useProductList.js","sourceRoot":"","sources":["useProductList.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
1
|
+
{"version":3,"file":"useProductList.js","sourceRoot":"","sources":["useProductList.ts"],"names":[],"mappings":"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"}
|
@@ -4,7 +4,7 @@ import { ProductListDetail } from '.';
|
|
4
4
|
*/
|
5
5
|
export declare function useProductListItems(
|
6
6
|
/** Passing null for id will retrieve the default product list */
|
7
|
-
|
7
|
+
listId?: string | null, options?: {
|
8
8
|
/** Limit how many items are returned */
|
9
9
|
limit?: number;
|
10
10
|
}): ProductListDetail;
|
@@ -8,10 +8,9 @@ import getErrorDetail from '../../helpers/getErrorDetail';
|
|
8
8
|
*/
|
9
9
|
export function useProductListItems(
|
10
10
|
/** Passing null for id will retrieve the default product list */
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
const { state: { list }, queries, dispatch, usingLocalList } = useContext(ProductListContext);
|
11
|
+
listId = null, options = {}) {
|
12
|
+
const { state: { lists }, queries, dispatch, usingLocalList } = useContext(ProductListContext);
|
13
|
+
const list = lists.get(listId);
|
15
14
|
const [hydrated, setHydrated] = useState(!usingLocalList);
|
16
15
|
const flattenedList = useMemo(() => flattenList(list), [list]);
|
17
16
|
// Make a `products` query containing every item in the list
|
@@ -20,7 +19,7 @@ id = null, options = {}) {
|
|
20
19
|
errorPolicy: 'all',
|
21
20
|
variables: {
|
22
21
|
articleNumbers: flattenedList
|
23
|
-
.map(listItem => listItem.articleNumber)
|
22
|
+
.map((listItem) => listItem.articleNumber)
|
24
23
|
.slice(0, options.limit)
|
25
24
|
}
|
26
25
|
});
|
@@ -29,7 +28,10 @@ id = null, options = {}) {
|
|
29
28
|
const { codes, data } = getErrorDetail(productQueryResult.error);
|
30
29
|
if (codes.includes('ProductNotFound')) {
|
31
30
|
for (const item of data) {
|
32
|
-
dispatch({
|
31
|
+
dispatch({
|
32
|
+
type: 'REMOVE',
|
33
|
+
payload: { listId, articleNumber: item.argument }
|
34
|
+
});
|
33
35
|
}
|
34
36
|
}
|
35
37
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useProductListItems.js","sourceRoot":"","sources":["useProductListItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EACL,WAAW,EACX,uCAAuC,EACxC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,mBAAmB;AACjC,iEAAiE;AACjE,
|
1
|
+
{"version":3,"file":"useProductListItems.js","sourceRoot":"","sources":["useProductListItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EACL,WAAW,EACX,uCAAuC,EACxC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,mBAAmB;AACjC,iEAAiE;AACjE,SAAwB,IAAI,EAC5B,UAGI,EAAE;IAEN,MAAM,EACJ,KAAK,EAAE,EAAE,KAAK,EAAE,EAChB,OAAO,EACP,QAAQ,EACR,cAAc,EACf,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAEnC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC;IAE1D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,4DAA4D;IAC5D,MAAM,kBAAkB,GAAkB,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;QACxE,IAAI,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;QAChC,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE;YACT,cAAc,EAAE,aAAa;iBAC1B,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;iBACzC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;SAC3B;KACF,CAAC,CAAC;IAEH,qEAAqE;IACrE,IAAI,kBAAkB,CAAC,KAAK,EAAE;QAC5B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAEjE,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YACrC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;gBACvB,QAAQ,CAAC;oBACP,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE;iBAClD,CAAC,CAAC;aACJ;SACF;KACF;IAED,0EAA0E;IAC1E,4EAA4E;IAC5E,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG;QACb,QAAQ,EAAE,uCAAuC,CAC/C,aAAa,EACb,kBAAkB,CACnB;QACD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;KACtD,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
@@ -4,6 +4,8 @@ import { useContext, useState } from 'react';
|
|
4
4
|
import throwErrorInDev from '../helpers/throwErrorInDev';
|
5
5
|
import { useTracker } from '../analytics/Analytics';
|
6
6
|
import { trackProductEvent } from '../analytics/tracking';
|
7
|
+
import { unSlugify } from '../analytics/integrations/unslugify';
|
8
|
+
import { breadcrumbsWithoutProduct } from '../analytics/utils/breadcrumbsWithoutProduct';
|
7
9
|
export function useAddMultipleToCart(items, hookQueries, hookCallbacks) {
|
8
10
|
const track = useTracker();
|
9
11
|
const client = useApolloClient();
|
@@ -30,11 +32,15 @@ export function useAddMultipleToCart(items, hookQueries, hookCallbacks) {
|
|
30
32
|
if (!queries || !queries.addMultipleToCartMutation || !queries.cartQuery) {
|
31
33
|
return Promise.reject(`You must pass cartQuery and addMultipleToCartMutation to useAddMultipletoCart or to the addMultiple fn`);
|
32
34
|
}
|
33
|
-
items.forEach(item => {
|
35
|
+
items.forEach((item) => {
|
36
|
+
var _a, _b, _c;
|
34
37
|
track(trackProductEvent({
|
35
38
|
action: 'add',
|
36
39
|
product: item,
|
37
|
-
quantity: item.quantity
|
40
|
+
quantity: item.quantity,
|
41
|
+
category: breadcrumbsWithoutProduct((_a = item.primaryRoute) === null || _a === void 0 ? void 0 : _a.breadcrumbs) ||
|
42
|
+
unSlugify((_c = (_b = item.canonicalCategory) === null || _b === void 0 ? void 0 : _b.primaryRoute) === null || _c === void 0 ? void 0 : _c.path) ||
|
43
|
+
''
|
38
44
|
}));
|
39
45
|
});
|
40
46
|
setStatus('loading');
|
@@ -52,13 +58,13 @@ export function useAddMultipleToCart(items, hookQueries, hookCallbacks) {
|
|
52
58
|
preOrderDate
|
53
59
|
}))
|
54
60
|
},
|
55
|
-
refetchQueries: resp => {
|
61
|
+
refetchQueries: (resp) => {
|
56
62
|
// When errors are present, the cart does not get automatically
|
57
63
|
// updated. We have to use refetchQueries in that case.
|
58
64
|
return (resp.errors && [{ query: queries.cartQuery, variables: { cartId } }]);
|
59
65
|
}
|
60
66
|
})
|
61
|
-
.then(resp => {
|
67
|
+
.then((resp) => {
|
62
68
|
setData(resp);
|
63
69
|
(callbacks === null || callbacks === void 0 ? void 0 : callbacks.onCompleted) && callbacks.onCompleted(resp);
|
64
70
|
// Update the cart context
|
@@ -72,7 +78,7 @@ export function useAddMultipleToCart(items, hookQueries, hookCallbacks) {
|
|
72
78
|
}
|
73
79
|
return resp;
|
74
80
|
})
|
75
|
-
.catch(err => {
|
81
|
+
.catch((err) => {
|
76
82
|
console.log('error!', err);
|
77
83
|
setStatus('error');
|
78
84
|
(callbacks === null || callbacks === void 0 ? void 0 : callbacks.onError) && callbacks.onError(err);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useAddMultipleToCart.js","sourceRoot":"","sources":["useAddMultipleToCart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAO7C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
1
|
+
{"version":3,"file":"useAddMultipleToCart.js","sourceRoot":"","sources":["useAddMultipleToCart.ts"],"names":[],"mappings":"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"}
|