@nuskin/contentstack-lib 2.1.0-pa-1117.5 → 2.1.0-pa-1117.7
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/.eslintrc.json +1 -1
- package/__tests__/api.spec.js +110 -20
- package/docs/CHANGELOG.md +1 -1
- package/package.json +2 -2
- package/src/api.js +13 -4
package/.eslintrc.json
CHANGED
package/__tests__/api.spec.js
CHANGED
|
@@ -157,9 +157,9 @@ describe("ContentstackApi", () => {
|
|
|
157
157
|
global.window = Object.create(window);
|
|
158
158
|
global.window.location = { hostname };
|
|
159
159
|
const {getStack} = require('../src/api');
|
|
160
|
-
getStack(
|
|
160
|
+
getStack();
|
|
161
161
|
expect(mockStack).toHaveBeenCalledWith({api_key: csCfg.apiKey, delivery_token: csCfg.deliveryToken, environment: csCfg.environment});
|
|
162
|
-
})
|
|
162
|
+
});
|
|
163
163
|
});
|
|
164
164
|
|
|
165
165
|
test('extractAddressFormFields maps address form field entries', () => {
|
|
@@ -204,6 +204,12 @@ describe("ContentstackApi", () => {
|
|
|
204
204
|
]);
|
|
205
205
|
});
|
|
206
206
|
|
|
207
|
+
test('extractAddressFormFields returns an empty list when no entries are provided', () => {
|
|
208
|
+
const {getStack} = require('../src/api');
|
|
209
|
+
const Stack = getStack('dev');
|
|
210
|
+
expect(Stack.extractAddressFormFields()).toStrictEqual([]);
|
|
211
|
+
});
|
|
212
|
+
|
|
207
213
|
test('getAddressForms maps address_elements', async () => {
|
|
208
214
|
mockPromiseResult.mockResolvedValueOnce([[
|
|
209
215
|
{
|
|
@@ -277,19 +283,49 @@ describe("ContentstackApi", () => {
|
|
|
277
283
|
]);
|
|
278
284
|
});
|
|
279
285
|
|
|
286
|
+
test('getAddressForms returns an empty list when no forms are found', async () => {
|
|
287
|
+
mockPromiseResult.mockResolvedValueOnce([undefined]);
|
|
288
|
+
const {getStack} = require('../src/api');
|
|
289
|
+
const Stack = getStack('dev');
|
|
290
|
+
await expect(Stack.getAddressForms(['Unknown'])).resolves.toStrictEqual([]);
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
test('getSingletonEntries maps language code in to id', async () => {
|
|
294
|
+
mockSinglePromiseResult.mockResolvedValueOnce(singleCheckoutAdrStrings);
|
|
295
|
+
const {getStack} = require('../src/api');
|
|
296
|
+
const Stack = getStack('dev');
|
|
297
|
+
await Stack.getSingletonEntries({contentTypeUIDs: ['checkout_adr_strings'], language: 'in'});
|
|
298
|
+
expect(mockSinglePromiseResult).toHaveBeenCalled();
|
|
299
|
+
});
|
|
300
|
+
|
|
280
301
|
test('getShippingAddressForms maps nested address form fields', async () => {
|
|
281
302
|
mockPromiseResult.mockResolvedValueOnce([[
|
|
282
303
|
{
|
|
283
304
|
title: 'United States',
|
|
284
|
-
countries: [
|
|
305
|
+
countries: [
|
|
306
|
+
{
|
|
307
|
+
countries: [
|
|
308
|
+
{
|
|
309
|
+
country_code: 'US',
|
|
310
|
+
country_name: 'United States'
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
country_code: 'CA',
|
|
314
|
+
country_name: 'Canada'
|
|
315
|
+
}
|
|
316
|
+
]
|
|
317
|
+
}
|
|
318
|
+
],
|
|
285
319
|
pre_address_fields: [addressFormFieldEntries[0]],
|
|
286
|
-
address_form:
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
320
|
+
address_form: [
|
|
321
|
+
{
|
|
322
|
+
title: 'default',
|
|
323
|
+
address_elements: addressFormFieldEntries,
|
|
324
|
+
postal_code_regex: '^[0-9]{5}(?:-[0-9]{4})?$',
|
|
325
|
+
verify_after_autocomplete: true,
|
|
326
|
+
wrap_address1_to_address2: false
|
|
327
|
+
}
|
|
328
|
+
],
|
|
293
329
|
post_address_fields: [addressFormFieldEntries[1]]
|
|
294
330
|
}
|
|
295
331
|
]]);
|
|
@@ -297,7 +333,16 @@ describe("ContentstackApi", () => {
|
|
|
297
333
|
const Stack = getStack('dev');
|
|
298
334
|
await expect(Stack.getShippingAddressForms(['United States'])).resolves.toStrictEqual([
|
|
299
335
|
{
|
|
300
|
-
countries: [
|
|
336
|
+
countries: [
|
|
337
|
+
{
|
|
338
|
+
code: 'US',
|
|
339
|
+
name: 'United States'
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
code: 'CA',
|
|
343
|
+
name: 'Canada'
|
|
344
|
+
}
|
|
345
|
+
],
|
|
301
346
|
pre_address_fields: [
|
|
302
347
|
{
|
|
303
348
|
field: 'address1',
|
|
@@ -345,15 +390,30 @@ describe("ContentstackApi", () => {
|
|
|
345
390
|
mockPromiseResult.mockResolvedValueOnce([[
|
|
346
391
|
{
|
|
347
392
|
title: 'United States',
|
|
348
|
-
countries: [
|
|
393
|
+
countries: [
|
|
394
|
+
{
|
|
395
|
+
countries: [
|
|
396
|
+
{
|
|
397
|
+
country_code: 'US',
|
|
398
|
+
country_name: 'United States'
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
country_code: 'CA',
|
|
402
|
+
country_name: 'Canada'
|
|
403
|
+
}
|
|
404
|
+
]
|
|
405
|
+
}
|
|
406
|
+
],
|
|
349
407
|
pre_address_fields: [addressFormFieldEntries[0]],
|
|
350
|
-
address_form:
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
408
|
+
address_form: [
|
|
409
|
+
{
|
|
410
|
+
title: 'default',
|
|
411
|
+
address_elements: addressFormFieldEntries,
|
|
412
|
+
postal_code_regex: '^[0-9]{5}(?:-[0-9]{4})?$',
|
|
413
|
+
verify_after_autocomplete: true,
|
|
414
|
+
wrap_address1_to_address2: false
|
|
415
|
+
}
|
|
416
|
+
],
|
|
357
417
|
post_address_fields: [addressFormFieldEntries[1]]
|
|
358
418
|
}
|
|
359
419
|
]]);
|
|
@@ -361,7 +421,16 @@ describe("ContentstackApi", () => {
|
|
|
361
421
|
const Stack = getStack('dev');
|
|
362
422
|
await expect(Stack.getShippingAddressForms(['United States'], true)).resolves.toStrictEqual([
|
|
363
423
|
{
|
|
364
|
-
countries: [
|
|
424
|
+
countries: [
|
|
425
|
+
{
|
|
426
|
+
code: 'US',
|
|
427
|
+
name: 'United States'
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
code: 'CA',
|
|
431
|
+
name: 'Canada'
|
|
432
|
+
}
|
|
433
|
+
],
|
|
365
434
|
preAddressFields: [
|
|
366
435
|
{
|
|
367
436
|
field: 'address1',
|
|
@@ -404,4 +473,25 @@ describe("ContentstackApi", () => {
|
|
|
404
473
|
}
|
|
405
474
|
]);
|
|
406
475
|
});
|
|
476
|
+
|
|
477
|
+
test('getShippingAddressForms returns empty nested data when optional references are missing', async () => {
|
|
478
|
+
mockPromiseResult.mockResolvedValueOnce([[
|
|
479
|
+
{
|
|
480
|
+
countries: [],
|
|
481
|
+
pre_address_fields: undefined,
|
|
482
|
+
address_form: [],
|
|
483
|
+
post_address_fields: undefined
|
|
484
|
+
}
|
|
485
|
+
]]);
|
|
486
|
+
const {getStack} = require('../src/api');
|
|
487
|
+
const Stack = getStack('dev');
|
|
488
|
+
await expect(Stack.getShippingAddressForms(['Unknown'])).resolves.toStrictEqual([
|
|
489
|
+
{
|
|
490
|
+
countries: [],
|
|
491
|
+
pre_address_fields: [],
|
|
492
|
+
address_form: undefined,
|
|
493
|
+
post_address_fields: []
|
|
494
|
+
}
|
|
495
|
+
]);
|
|
496
|
+
});
|
|
407
497
|
});
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
# [2.1.0-pa-1117.
|
|
1
|
+
# [2.1.0-pa-1117.7](https://code.tls.nuskin.io/ns-am/utility/npm/contentstack-lib/compare/v2.1.0-pa-1117.6...v2.1.0-pa-1117.7) (2026-04-08)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuskin/contentstack-lib",
|
|
3
|
-
"version": "2.1.0-pa-1117.
|
|
3
|
+
"version": "2.1.0-pa-1117.7",
|
|
4
4
|
"description": "This project contains configuration and api code to access Contentstack, to be shared between the backend (AWS Lambda) and frontend (Vue, etc).",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"license": "ISC",
|
|
20
20
|
"homepage": "https://code.tls.nuskin.io/ns-am/utility/npm/contentstack-lib/blob/master/README.md",
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"eslint": "
|
|
22
|
+
"eslint": "7.32.0",
|
|
23
23
|
"eslint-config-google": "0.14.0",
|
|
24
24
|
"eslint-config-prettier": "4.1.0",
|
|
25
25
|
"eslint-plugin-json": "2.1.1",
|
package/src/api.js
CHANGED
|
@@ -184,7 +184,7 @@ const _getMultiEntries = async (contentType, includeRefs, values) => {
|
|
|
184
184
|
const [results] = await Stack
|
|
185
185
|
.ContentType(contentType)
|
|
186
186
|
.Query()
|
|
187
|
-
.containedIn('
|
|
187
|
+
.containedIn('title', values)
|
|
188
188
|
.includeReference(includeRefs)
|
|
189
189
|
.toJSON()
|
|
190
190
|
.find();
|
|
@@ -228,16 +228,25 @@ const _extractAddressForm = (addressForm, camelcase = false) => {
|
|
|
228
228
|
return camelcase ? _snakeObjectToCamel(mappedForm) : mappedForm;
|
|
229
229
|
}
|
|
230
230
|
|
|
231
|
+
const _extractShippingCountries = (countries = []) => {
|
|
232
|
+
const shippingCountries = countries[0]?.countries ?? [];
|
|
233
|
+
|
|
234
|
+
return shippingCountries.map(({country_code, country_name}) => ({
|
|
235
|
+
code: country_code,
|
|
236
|
+
name: country_name
|
|
237
|
+
}));
|
|
238
|
+
}
|
|
239
|
+
|
|
231
240
|
const getShippingAddressForms = async (countries, camelcase = false) => {
|
|
232
241
|
const results = await _getMultiEntries(
|
|
233
242
|
'shipping_address_form',
|
|
234
|
-
['
|
|
243
|
+
['countries', 'pre_address_fields', 'address_form', 'address_form.address_elements', 'post_address_fields'],
|
|
235
244
|
countries
|
|
236
245
|
);
|
|
237
246
|
const mappedResults = (results || []).map((result) => ({
|
|
238
|
-
countries: result.countries,
|
|
247
|
+
countries: _extractShippingCountries(result.countries),
|
|
239
248
|
pre_address_fields: _extractAddressFormFields(result.pre_address_fields, camelcase),
|
|
240
|
-
address_form: _extractAddressForm(result.address_form, camelcase),
|
|
249
|
+
address_form: _extractAddressForm(result.address_form[0], camelcase),
|
|
241
250
|
post_address_fields: _extractAddressFormFields(result.post_address_fields, camelcase)
|
|
242
251
|
}));
|
|
243
252
|
|