@capillarytech/creatives-library 8.0.330-alpha.0 → 8.0.330
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/constants/unified.js +0 -18
- package/package.json +1 -1
- package/services/api.js +0 -17
- package/services/tests/api.test.js +0 -85
- package/utils/commonUtils.js +0 -28
- package/utils/tests/commonUtil.test.js +0 -169
- package/v2Components/CapTagList/index.js +0 -10
- package/v2Components/CommonTestAndPreview/CustomValuesEditor.js +49 -70
- package/v2Components/CommonTestAndPreview/DeliverySettings/DeliverySettings.scss +2 -8
- package/v2Components/CommonTestAndPreview/DeliverySettings/ModifyDeliverySettings.js +21 -207
- package/v2Components/CommonTestAndPreview/DeliverySettings/constants.js +0 -16
- package/v2Components/CommonTestAndPreview/DeliverySettings/index.js +10 -85
- package/v2Components/CommonTestAndPreview/DeliverySettings/messages.js +0 -30
- package/v2Components/CommonTestAndPreview/DeliverySettings/utils/parseSenderDetailsResponse.js +11 -79
- package/v2Components/CommonTestAndPreview/SendTestMessage.js +53 -87
- package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +1 -20
- package/v2Components/CommonTestAndPreview/UnifiedPreview/index.js +4 -133
- package/v2Components/CommonTestAndPreview/_commonTestAndPreview.scss +34 -145
- package/v2Components/CommonTestAndPreview/actions.js +0 -10
- package/v2Components/CommonTestAndPreview/constants.js +1 -53
- package/v2Components/CommonTestAndPreview/index.js +168 -998
- package/v2Components/CommonTestAndPreview/messages.js +3 -147
- package/v2Components/CommonTestAndPreview/reducer.js +0 -10
- package/v2Components/CommonTestAndPreview/sagas.js +6 -15
- package/v2Components/CommonTestAndPreview/tests/CustomValuesEditor.test.js +286 -328
- package/v2Components/CommonTestAndPreview/tests/DeliverySettings/ModifyDeliverySettings.test.js +65 -231
- package/v2Components/CommonTestAndPreview/tests/DeliverySettings/index.test.js +5 -118
- package/v2Components/CommonTestAndPreview/tests/DeliverySettings/utils/parseSenderDetailsResponse.test.js +0 -341
- package/v2Components/CommonTestAndPreview/tests/SendTestMessage.test.js +24 -65
- package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/index.test.js +1 -199
- package/v2Components/CommonTestAndPreview/tests/constants.test.js +1 -31
- package/v2Components/CommonTestAndPreview/tests/index.test.js +4 -168
- package/v2Components/CommonTestAndPreview/tests/reducer.test.js +0 -71
- package/v2Components/CommonTestAndPreview/tests/sagas.test.js +2 -2
- package/v2Components/CommonTestAndPreview/tests/selectors.test.js +0 -17
- package/v2Components/FormBuilder/index.js +1 -7
- package/v2Components/TestAndPreviewSlidebox/index.js +1 -13
- package/v2Components/TestAndPreviewSlidebox/sagas.js +4 -11
- package/v2Components/TestAndPreviewSlidebox/tests/saga.test.js +1 -3
- package/v2Containers/CreativesContainer/SlideBoxContent.js +4 -36
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +1 -10
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +4 -29
- package/v2Containers/CreativesContainer/constants.js +0 -9
- package/v2Containers/CreativesContainer/index.js +93 -292
- package/v2Containers/CreativesContainer/index.scss +1 -51
- package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +34 -78
- package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +16 -79
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -8
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +98 -357
- package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +10 -20
- package/v2Containers/CreativesContainer/tests/index.test.js +9 -71
- package/v2Containers/Rcs/constants.js +3 -40
- package/v2Containers/Rcs/index.js +895 -1145
- package/v2Containers/Rcs/index.scss +6 -85
- package/v2Containers/Rcs/messages.js +2 -12
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +2236 -41719
- package/v2Containers/Rcs/tests/__snapshots__/utils.test.js.snap +5 -0
- package/v2Containers/Rcs/tests/index.test.js +38 -41
- package/v2Containers/Rcs/tests/mockData.js +0 -38
- package/v2Containers/Rcs/tests/utils.test.js +1 -435
- package/v2Containers/Rcs/utils.js +10 -405
- package/v2Containers/Sms/Create/index.js +38 -100
- package/v2Containers/SmsTrai/Create/index.js +4 -9
- package/v2Containers/SmsTrai/Edit/constants.js +0 -2
- package/v2Containers/SmsTrai/Edit/index.js +128 -636
- package/v2Containers/SmsTrai/Edit/messages.js +4 -14
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +2604 -4590
- package/v2Containers/SmsWrapper/index.js +8 -37
- package/v2Containers/TagList/index.js +0 -6
- package/v2Containers/Templates/_templates.scss +2 -63
- package/v2Containers/Templates/actions.js +0 -11
- package/v2Containers/Templates/constants.js +0 -2
- package/v2Containers/Templates/index.js +40 -90
- package/v2Containers/Templates/sagas.js +12 -57
- package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +1079 -1043
- package/v2Containers/Templates/tests/sagas.test.js +123 -193
- package/v2Containers/TemplatesV2/TemplatesV2.style.js +1 -72
- package/v2Containers/TemplatesV2/index.js +23 -86
- package/v2Containers/Whatsapp/index.js +20 -3
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +4872 -5790
- package/utils/templateVarUtils.js +0 -201
- package/utils/tests/templateVarUtils.test.js +0 -204
- package/v2Components/CommonTestAndPreview/AddTestCustomer.js +0 -42
- package/v2Components/CommonTestAndPreview/CustomerCreationModal.js +0 -155
- package/v2Components/CommonTestAndPreview/ExistingCustomerModal.js +0 -93
- package/v2Components/CommonTestAndPreview/previewApiUtils.js +0 -59
- package/v2Components/CommonTestAndPreview/tests/AddTestCustomer.test.js +0 -66
- package/v2Components/CommonTestAndPreview/tests/CommonTestAndPreview.addTestCustomer.test.js +0 -648
- package/v2Components/CommonTestAndPreview/tests/CustomerCreationModal.test.js +0 -174
- package/v2Components/CommonTestAndPreview/tests/ExistingCustomerModal.test.js +0 -114
- package/v2Components/CommonTestAndPreview/tests/previewApiUtils.test.js +0 -67
- package/v2Components/SmsFallback/SmsFallbackLocalSelector.js +0 -87
- package/v2Components/SmsFallback/constants.js +0 -73
- package/v2Components/SmsFallback/index.js +0 -955
- package/v2Components/SmsFallback/index.scss +0 -265
- package/v2Components/SmsFallback/messages.js +0 -78
- package/v2Components/SmsFallback/smsFallbackUtils.js +0 -118
- package/v2Components/SmsFallback/tests/SmsFallbackLocalSelector.test.js +0 -50
- package/v2Components/SmsFallback/tests/rcsSmsFallback.acceptance.test.js +0 -147
- package/v2Components/SmsFallback/tests/smsFallbackHandlers.test.js +0 -304
- package/v2Components/SmsFallback/tests/smsFallbackUi.test.js +0 -197
- package/v2Components/SmsFallback/tests/smsFallbackUtils.test.js +0 -277
- package/v2Components/SmsFallback/tests/useLocalTemplateList.test.js +0 -422
- package/v2Components/SmsFallback/useLocalTemplateList.js +0 -92
- package/v2Components/VarSegmentMessageEditor/constants.js +0 -2
- package/v2Components/VarSegmentMessageEditor/index.js +0 -125
- package/v2Components/VarSegmentMessageEditor/index.scss +0 -46
- package/v2Containers/CreativesContainer/CreativesSlideBoxWrapper.js +0 -43
- package/v2Containers/CreativesContainer/embeddedSlideboxUtils.js +0 -67
- package/v2Containers/CreativesContainer/tests/SlideBoxContent.localTemplates.test.js +0 -90
- package/v2Containers/CreativesContainer/tests/embeddedSlideboxUtils.test.js +0 -258
- package/v2Containers/CreativesContainer/tests/useLocalTemplatesProp.test.js +0 -125
- package/v2Containers/Rcs/rcsLibraryHydrationUtils.js +0 -225
- package/v2Containers/Rcs/tests/rcsLibraryHydrationUtils.test.js +0 -318
- package/v2Containers/Sms/smsFormDataHelpers.js +0 -67
- package/v2Containers/Sms/tests/smsFormDataHelpers.test.js +0 -253
- package/v2Containers/SmsTrai/Edit/index.scss +0 -121
- package/v2Containers/Templates/TemplatesActionBar.js +0 -101
- package/v2Containers/Templates/tests/TemplatesActionBar.test.js +0 -120
- package/v2Containers/Templates/tests/smsTemplatesListApi.test.js +0 -180
- package/v2Containers/Templates/utils/smsTemplatesListApi.js +0 -79
- package/v2Containers/TemplatesV2/tests/TemplatesV2.localTemplates.test.js +0 -131
|
@@ -55,33 +55,6 @@ describe('parseSenderDetailsResponse', () => {
|
|
|
55
55
|
expect(result.domains[0].cdmaSenders[0].value).toBe('CDMA1');
|
|
56
56
|
});
|
|
57
57
|
|
|
58
|
-
it('should populate SMS senders when channel argument is lowercase (normalized for branches)', () => {
|
|
59
|
-
const response = {
|
|
60
|
-
entity: {
|
|
61
|
-
SMS: [
|
|
62
|
-
{
|
|
63
|
-
id: 10,
|
|
64
|
-
priority: 1,
|
|
65
|
-
domainProperties: {
|
|
66
|
-
domainName: 'SMS Domain 1',
|
|
67
|
-
id: 100,
|
|
68
|
-
contactInfo: [
|
|
69
|
-
{ type: 'gsm_sender_id', valid: true, value: 'GSM1', default: true },
|
|
70
|
-
{ type: 'cdma_sender_id', valid: true, value: 'CDMA1' },
|
|
71
|
-
],
|
|
72
|
-
connectionProperties: {},
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
],
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
const result = parseSenderDetailsResponse('sms', response);
|
|
79
|
-
expect(result.domains).toHaveLength(1);
|
|
80
|
-
expect(result.domains[0].gsmSenders).toHaveLength(1);
|
|
81
|
-
expect(result.domains[0].gsmSenders[0].value).toBe('GSM1');
|
|
82
|
-
expect(result.domains[0].cdmaSenders).toHaveLength(1);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
58
|
it('should parse EMAIL channel entity array', () => {
|
|
86
59
|
const response = {
|
|
87
60
|
entity: {
|
|
@@ -258,319 +231,5 @@ describe('parseSenderDetailsResponse', () => {
|
|
|
258
231
|
const result = parseSenderDetailsResponse('WHATSAPP', response);
|
|
259
232
|
expect(result.domains[0].sourceAccountIdentifier).toBe('waba-456');
|
|
260
233
|
});
|
|
261
|
-
|
|
262
|
-
it('should map hostName to domainName when domainName missing (RCS)', () => {
|
|
263
|
-
const response = {
|
|
264
|
-
entity: {
|
|
265
|
-
RCS: [
|
|
266
|
-
{
|
|
267
|
-
id: 1,
|
|
268
|
-
priority: 0,
|
|
269
|
-
domainProperties: {
|
|
270
|
-
hostName: 'rcs-host',
|
|
271
|
-
id: 42,
|
|
272
|
-
contactInfo: [
|
|
273
|
-
{ type: 'gsm_sender_id', valid: true, value: 'S1', default: true },
|
|
274
|
-
],
|
|
275
|
-
},
|
|
276
|
-
},
|
|
277
|
-
],
|
|
278
|
-
},
|
|
279
|
-
};
|
|
280
|
-
const result = parseSenderDetailsResponse('RCS', response);
|
|
281
|
-
expect(result.domains[0].domainName).toBe('rcs-host');
|
|
282
|
-
expect(result.domains[0].domainId).toBe(42);
|
|
283
|
-
expect(result.domains[0].gsmSenders[0].value).toBe('S1');
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
it('should unwrap result.entity when top-level entity is absent', () => {
|
|
287
|
-
const response = {
|
|
288
|
-
result: {
|
|
289
|
-
entity: {
|
|
290
|
-
SMS: [
|
|
291
|
-
{
|
|
292
|
-
id: 1,
|
|
293
|
-
priority: 0,
|
|
294
|
-
domainProperties: {
|
|
295
|
-
domainName: 'ViaResult',
|
|
296
|
-
id: 9,
|
|
297
|
-
contactInfo: [{ type: 'gsm_sender_id', valid: true, value: 'G' }],
|
|
298
|
-
},
|
|
299
|
-
},
|
|
300
|
-
],
|
|
301
|
-
},
|
|
302
|
-
},
|
|
303
|
-
};
|
|
304
|
-
const result = parseSenderDetailsResponse('SMS', response);
|
|
305
|
-
expect(result.domains[0].domainName).toBe('ViaResult');
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
it('should merge rcs_sender_id into gsmSenders for RCS', () => {
|
|
309
|
-
const response = {
|
|
310
|
-
entity: {
|
|
311
|
-
RCS: [
|
|
312
|
-
{
|
|
313
|
-
id: 1,
|
|
314
|
-
priority: 0,
|
|
315
|
-
domainProperties: {
|
|
316
|
-
domainName: 'RCS Domain',
|
|
317
|
-
id: 1,
|
|
318
|
-
contactInfo: [
|
|
319
|
-
{ type: 'rcs_sender_id', valid: true, value: 'RCS123', default: true },
|
|
320
|
-
],
|
|
321
|
-
},
|
|
322
|
-
},
|
|
323
|
-
],
|
|
324
|
-
},
|
|
325
|
-
};
|
|
326
|
-
const result = parseSenderDetailsResponse('RCS', response);
|
|
327
|
-
expect(result.domains[0].gsmSenders).toHaveLength(1);
|
|
328
|
-
expect(result.domains[0].gsmSenders[0].value).toBe('RCS123');
|
|
329
|
-
});
|
|
330
|
-
|
|
331
|
-
it('should unwrap data.entity when top-level entity is absent', () => {
|
|
332
|
-
const response = {
|
|
333
|
-
data: {
|
|
334
|
-
entity: {
|
|
335
|
-
SMS: [
|
|
336
|
-
{
|
|
337
|
-
id: 1,
|
|
338
|
-
priority: 0,
|
|
339
|
-
domainProperties: {
|
|
340
|
-
domainName: 'ViaData',
|
|
341
|
-
id: 9,
|
|
342
|
-
contactInfo: [{ type: 'gsm_sender_id', valid: true, value: 'G' }],
|
|
343
|
-
},
|
|
344
|
-
},
|
|
345
|
-
],
|
|
346
|
-
},
|
|
347
|
-
},
|
|
348
|
-
};
|
|
349
|
-
const result = parseSenderDetailsResponse('SMS', response);
|
|
350
|
-
expect(result.domains[0].domainName).toBe('ViaData');
|
|
351
|
-
});
|
|
352
|
-
|
|
353
|
-
it('should return empty domains when entity is explicitly null', () => {
|
|
354
|
-
expect(parseSenderDetailsResponse('SMS', { entity: null })).toEqual({ domains: [] });
|
|
355
|
-
});
|
|
356
|
-
|
|
357
|
-
it('should return empty when channel data is a non-domain object', () => {
|
|
358
|
-
expect(parseSenderDetailsResponse('SMS', { entity: { notAnArray: true } })).toEqual({ domains: [] });
|
|
359
|
-
});
|
|
360
|
-
|
|
361
|
-
it('should use userid when sourceAccountIdentifier and wabaId are missing (WHATSAPP)', () => {
|
|
362
|
-
const response = {
|
|
363
|
-
entity: {
|
|
364
|
-
WHATSAPP: [
|
|
365
|
-
{
|
|
366
|
-
id: 1,
|
|
367
|
-
priority: 0,
|
|
368
|
-
domainProperties: {
|
|
369
|
-
domainName: 'W',
|
|
370
|
-
id: 1,
|
|
371
|
-
connectionProperties: { userid: 'user-99' },
|
|
372
|
-
},
|
|
373
|
-
},
|
|
374
|
-
],
|
|
375
|
-
},
|
|
376
|
-
};
|
|
377
|
-
const result = parseSenderDetailsResponse('WHATSAPP', response);
|
|
378
|
-
expect(result.domains[0].sourceAccountIdentifier).toBe('user-99');
|
|
379
|
-
});
|
|
380
|
-
|
|
381
|
-
it('should dedupe duplicate GSM values for RCS (merged contact types)', () => {
|
|
382
|
-
const response = {
|
|
383
|
-
entity: {
|
|
384
|
-
RCS: [
|
|
385
|
-
{
|
|
386
|
-
id: 1,
|
|
387
|
-
priority: 0,
|
|
388
|
-
domainProperties: {
|
|
389
|
-
domainName: 'R',
|
|
390
|
-
id: 1,
|
|
391
|
-
contactInfo: [
|
|
392
|
-
{ type: 'gsm_sender_id', valid: true, value: 'SAME', default: true },
|
|
393
|
-
{ type: 'rcs_sender_id', valid: true, value: 'SAME' },
|
|
394
|
-
],
|
|
395
|
-
},
|
|
396
|
-
},
|
|
397
|
-
],
|
|
398
|
-
},
|
|
399
|
-
};
|
|
400
|
-
const result = parseSenderDetailsResponse('RCS', response);
|
|
401
|
-
expect(result.domains[0].gsmSenders.filter((r) => r.value === 'SAME')).toHaveLength(1);
|
|
402
|
-
});
|
|
403
|
-
|
|
404
|
-
it('should return empty domains when response is not an object', () => {
|
|
405
|
-
expect(parseSenderDetailsResponse('SMS', 42)).toEqual({ domains: [] });
|
|
406
|
-
expect(parseSenderDetailsResponse('SMS', 'x')).toEqual({ domains: [] });
|
|
407
|
-
});
|
|
408
|
-
|
|
409
|
-
it('should return empty domains when entity is empty string', () => {
|
|
410
|
-
expect(parseSenderDetailsResponse('SMS', { entity: '' })).toEqual({ domains: [] });
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
it('should normalize hyphenated contactInfo.type to match gsm_sender_id', () => {
|
|
414
|
-
const response = {
|
|
415
|
-
entity: {
|
|
416
|
-
SMS: [
|
|
417
|
-
{
|
|
418
|
-
id: 1,
|
|
419
|
-
domainProperties: {
|
|
420
|
-
domainName: 'D',
|
|
421
|
-
id: 1,
|
|
422
|
-
contactInfo: [
|
|
423
|
-
{ type: 'gsm-sender-id', valid: true, value: 'HYPH' },
|
|
424
|
-
],
|
|
425
|
-
},
|
|
426
|
-
},
|
|
427
|
-
],
|
|
428
|
-
},
|
|
429
|
-
};
|
|
430
|
-
const result = parseSenderDetailsResponse('SMS', response);
|
|
431
|
-
expect(result.domains[0].gsmSenders[0].value).toBe('HYPH');
|
|
432
|
-
});
|
|
433
|
-
|
|
434
|
-
it('should skip whitespace-only GSM values when merging RCS contact types', () => {
|
|
435
|
-
const response = {
|
|
436
|
-
entity: {
|
|
437
|
-
RCS: [
|
|
438
|
-
{
|
|
439
|
-
id: 1,
|
|
440
|
-
domainProperties: {
|
|
441
|
-
domainName: 'R',
|
|
442
|
-
id: 1,
|
|
443
|
-
contactInfo: [
|
|
444
|
-
{ type: 'gsm_sender_id', valid: true, value: ' ' },
|
|
445
|
-
{ type: 'gsm_sender_id', valid: true, value: 'OK' },
|
|
446
|
-
],
|
|
447
|
-
},
|
|
448
|
-
},
|
|
449
|
-
],
|
|
450
|
-
},
|
|
451
|
-
};
|
|
452
|
-
const values = parseSenderDetailsResponse('RCS', response).domains[0].gsmSenders.map((g) => g.value);
|
|
453
|
-
expect(values).toEqual(['OK']);
|
|
454
|
-
});
|
|
455
|
-
|
|
456
|
-
it('should use default priority 0 when priority is null', () => {
|
|
457
|
-
const response = {
|
|
458
|
-
entity: {
|
|
459
|
-
SMS: [
|
|
460
|
-
{
|
|
461
|
-
id: 1,
|
|
462
|
-
priority: null,
|
|
463
|
-
domainProperties: {
|
|
464
|
-
domainName: 'P',
|
|
465
|
-
id: 9,
|
|
466
|
-
contactInfo: [],
|
|
467
|
-
},
|
|
468
|
-
},
|
|
469
|
-
],
|
|
470
|
-
},
|
|
471
|
-
};
|
|
472
|
-
expect(parseSenderDetailsResponse('SMS', response).domains[0].priority).toBe(0);
|
|
473
|
-
});
|
|
474
|
-
|
|
475
|
-
it('should unwrap entity from raw response object when entity key is absent', () => {
|
|
476
|
-
const response = { misc: 1 };
|
|
477
|
-
expect(parseSenderDetailsResponse('SMS', response)).toEqual({ domains: [] });
|
|
478
|
-
});
|
|
479
|
-
});
|
|
480
|
-
|
|
481
|
-
describe('unwrapEntity edge cases', () => {
|
|
482
|
-
it('should return empty domains when entity key is explicitly null', () => {
|
|
483
|
-
// unwrapEntity: response.entity === null → returns null → parseSenderDetailsResponse returns { domains: [] }
|
|
484
|
-
expect(parseSenderDetailsResponse('SMS', { entity: null })).toEqual({ domains: [] });
|
|
485
|
-
});
|
|
486
|
-
});
|
|
487
|
-
|
|
488
|
-
describe('null or empty channel', () => {
|
|
489
|
-
it('should return empty domains when channel is null', () => {
|
|
490
|
-
const response = { entity: { SMS: [{ id: 1, domainProperties: { domainName: 'D', id: 10, contactInfo: [] } }] } };
|
|
491
|
-
expect(parseSenderDetailsResponse(null, response)).toEqual({ domains: [] });
|
|
492
|
-
});
|
|
493
|
-
|
|
494
|
-
it('should return empty domains when channel is empty string', () => {
|
|
495
|
-
const response = { entity: { SMS: [{ id: 1, domainProperties: { domainName: 'D', id: 10, contactInfo: [] } }] } };
|
|
496
|
-
expect(parseSenderDetailsResponse('', response)).toEqual({ domains: [] });
|
|
497
|
-
});
|
|
498
|
-
});
|
|
499
|
-
|
|
500
|
-
describe('single non-array domain object', () => {
|
|
501
|
-
it('should wrap single domain with domainProperties in an array and return one domain', () => {
|
|
502
|
-
const response = {
|
|
503
|
-
entity: {
|
|
504
|
-
SMS: {
|
|
505
|
-
id: 5,
|
|
506
|
-
domainProperties: {
|
|
507
|
-
domainName: 'SingleDomain',
|
|
508
|
-
id: 99,
|
|
509
|
-
contactInfo: [{ type: 'gsm_sender_id', valid: true, value: 'GSMSINGLE' }],
|
|
510
|
-
},
|
|
511
|
-
},
|
|
512
|
-
},
|
|
513
|
-
};
|
|
514
|
-
const result = parseSenderDetailsResponse('SMS', response);
|
|
515
|
-
expect(result.domains).toHaveLength(1);
|
|
516
|
-
expect(result.domains[0].domainName).toBe('SingleDomain');
|
|
517
|
-
expect(result.domains[0].gsmSenders[0].value).toBe('GSMSINGLE');
|
|
518
|
-
});
|
|
519
|
-
|
|
520
|
-
it('should return empty domains for single non-array domain without domainProperties', () => {
|
|
521
|
-
const response = {
|
|
522
|
-
entity: { SMS: { id: 5, someProp: 'value' } },
|
|
523
|
-
};
|
|
524
|
-
expect(parseSenderDetailsResponse('SMS', response)).toEqual({ domains: [] });
|
|
525
|
-
});
|
|
526
|
-
});
|
|
527
|
-
|
|
528
|
-
describe('deduplication by domainId when domainName is null', () => {
|
|
529
|
-
it('should deduplicate two entries sharing the same domainId when domainName is null', () => {
|
|
530
|
-
const response = {
|
|
531
|
-
entity: {
|
|
532
|
-
SMS: [
|
|
533
|
-
{
|
|
534
|
-
id: 10,
|
|
535
|
-
priority: 1,
|
|
536
|
-
domainProperties: { domainName: null, id: 42, contactInfo: [] },
|
|
537
|
-
},
|
|
538
|
-
{
|
|
539
|
-
id: 11,
|
|
540
|
-
priority: 2,
|
|
541
|
-
domainProperties: { domainName: null, id: 42, contactInfo: [] },
|
|
542
|
-
},
|
|
543
|
-
],
|
|
544
|
-
},
|
|
545
|
-
};
|
|
546
|
-
const result = parseSenderDetailsResponse('SMS', response);
|
|
547
|
-
expect(result.domains).toHaveLength(1);
|
|
548
|
-
expect(result.domains[0].domainId).toBe(42);
|
|
549
|
-
});
|
|
550
|
-
});
|
|
551
|
-
|
|
552
|
-
describe('typeMatches null-type filtering', () => {
|
|
553
|
-
it('should exclude contactInfo items with null type from gsmSenders', () => {
|
|
554
|
-
const response = {
|
|
555
|
-
entity: {
|
|
556
|
-
SMS: [
|
|
557
|
-
{
|
|
558
|
-
id: 1,
|
|
559
|
-
domainProperties: {
|
|
560
|
-
domainName: 'D',
|
|
561
|
-
id: 1,
|
|
562
|
-
contactInfo: [
|
|
563
|
-
{ type: null, valid: true, value: 'EXCLUDED' },
|
|
564
|
-
{ type: 'gsm_sender_id', valid: true, value: 'INCLUDED' },
|
|
565
|
-
],
|
|
566
|
-
},
|
|
567
|
-
},
|
|
568
|
-
],
|
|
569
|
-
},
|
|
570
|
-
};
|
|
571
|
-
const result = parseSenderDetailsResponse('SMS', response);
|
|
572
|
-
expect(result.domains[0].gsmSenders).toHaveLength(1);
|
|
573
|
-
expect(result.domains[0].gsmSenders[0].value).toBe('INCLUDED');
|
|
574
|
-
});
|
|
575
234
|
});
|
|
576
235
|
});
|
|
@@ -24,19 +24,17 @@ import SendTestMessage from '../SendTestMessage';
|
|
|
24
24
|
|
|
25
25
|
// Mock DeliverySettings to assert props
|
|
26
26
|
jest.mock('../DeliverySettings', () => function MockDeliverySettings(props) {
|
|
27
|
-
|
|
28
|
-
return (
|
|
27
|
+
return (
|
|
29
28
|
<div data-testid="delivery-settings" data-props={JSON.stringify({
|
|
30
29
|
channel: props.channel,
|
|
31
30
|
hasDeliverySettings: !!props.deliverySettings,
|
|
32
|
-
senderDetailsLength:
|
|
31
|
+
senderDetailsLength: (props.senderDetailsOptions || []).length,
|
|
33
32
|
wecrmAccountsLength: (props.wecrmAccounts || []).length,
|
|
34
33
|
hasOnSave: typeof props.onSaveDeliverySettings === 'function',
|
|
35
34
|
isLoadingSenderDetails: props.isLoadingSenderDetails,
|
|
36
35
|
smsTraiDltEnabled: props.smsTraiDltEnabled,
|
|
37
36
|
registeredSenderIds: props.registeredSenderIds,
|
|
38
37
|
whatsappAccountFromForm: props.whatsappAccountFromForm,
|
|
39
|
-
isChannelSmsFallbackPreviewEnabled: props.isChannelSmsFallbackPreviewEnabled,
|
|
40
38
|
})}
|
|
41
39
|
/>
|
|
42
40
|
);
|
|
@@ -131,16 +129,12 @@ describe('SendTestMessage', () => {
|
|
|
131
129
|
formatMessage: jest.fn((msg) => msg.defaultMessage || msg.id),
|
|
132
130
|
channel: 'EMAIL',
|
|
133
131
|
deliverySettings: {},
|
|
134
|
-
|
|
132
|
+
senderDetailsOptions: [],
|
|
135
133
|
wecrmAccounts: [],
|
|
136
134
|
onSaveDeliverySettings: jest.fn(),
|
|
137
135
|
isLoadingSenderDetails: false,
|
|
138
136
|
smsTraiDltEnabled: false,
|
|
139
137
|
registeredSenderIds: [],
|
|
140
|
-
isChannelSmsFallbackPreviewEnabled: false,
|
|
141
|
-
renderAddTestCustomerButton: jest.fn(() => null),
|
|
142
|
-
searchValue: '',
|
|
143
|
-
setSearchValue: jest.fn(),
|
|
144
138
|
};
|
|
145
139
|
|
|
146
140
|
beforeEach(() => {
|
|
@@ -235,22 +229,6 @@ describe('SendTestMessage', () => {
|
|
|
235
229
|
expect(screen.getByTestId('delivery-settings')).toBeTruthy();
|
|
236
230
|
});
|
|
237
231
|
|
|
238
|
-
it('should render DeliverySettings when channel is RCS and pass SMS fallback preview flag', () => {
|
|
239
|
-
render(
|
|
240
|
-
<TestWrapper>
|
|
241
|
-
<SendTestMessage
|
|
242
|
-
{...defaultProps}
|
|
243
|
-
channel="RCS"
|
|
244
|
-
isChannelSmsFallbackPreviewEnabled
|
|
245
|
-
/>
|
|
246
|
-
</TestWrapper>
|
|
247
|
-
);
|
|
248
|
-
const el = screen.getByTestId('delivery-settings');
|
|
249
|
-
const data = JSON.parse(el.getAttribute('data-props'));
|
|
250
|
-
expect(data.channel).toBe('RCS');
|
|
251
|
-
expect(data.isChannelSmsFallbackPreviewEnabled).toBe(true);
|
|
252
|
-
});
|
|
253
|
-
|
|
254
232
|
it('should not render DeliverySettings when channel is INAPP', () => {
|
|
255
233
|
render(
|
|
256
234
|
<TestWrapper>
|
|
@@ -298,9 +276,7 @@ describe('SendTestMessage', () => {
|
|
|
298
276
|
{...defaultProps}
|
|
299
277
|
channel="SMS"
|
|
300
278
|
deliverySettings={{ domainId: 1 }}
|
|
301
|
-
|
|
302
|
-
SMS: [{ domainId: 1, domainName: 'SMS Dom' }],
|
|
303
|
-
}}
|
|
279
|
+
senderDetailsOptions={[{ domainId: 1, domainName: 'SMS Dom' }]}
|
|
304
280
|
wecrmAccounts={[]}
|
|
305
281
|
onSaveDeliverySettings={onSave}
|
|
306
282
|
isLoadingSenderDetails={true}
|
|
@@ -658,52 +634,35 @@ describe('SendTestMessage', () => {
|
|
|
658
634
|
});
|
|
659
635
|
});
|
|
660
636
|
|
|
661
|
-
describe('
|
|
662
|
-
it('
|
|
663
|
-
const renderAddTestCustomerButton = jest.fn(() => (
|
|
664
|
-
<button type="button" data-testid="add-test-customer-btn">
|
|
665
|
-
Add as test customer
|
|
666
|
-
</button>
|
|
667
|
-
));
|
|
668
|
-
const props = {
|
|
669
|
-
...defaultProps,
|
|
670
|
-
renderAddTestCustomerButton,
|
|
671
|
-
};
|
|
637
|
+
describe('whatsappAccountFromForm with null/undefined formData', () => {
|
|
638
|
+
it('passes whatsappAccountFromForm as undefined when channel is WHATSAPP and formData is null', () => {
|
|
672
639
|
render(
|
|
673
640
|
<TestWrapper>
|
|
674
|
-
<SendTestMessage
|
|
641
|
+
<SendTestMessage
|
|
642
|
+
{...defaultProps}
|
|
643
|
+
channel="WHATSAPP"
|
|
644
|
+
formData={null}
|
|
645
|
+
/>
|
|
675
646
|
</TestWrapper>
|
|
676
647
|
);
|
|
677
|
-
|
|
648
|
+
const el = screen.getByTestId('delivery-settings');
|
|
649
|
+
const data = JSON.parse(el.getAttribute('data-props'));
|
|
650
|
+
expect(data.whatsappAccountFromForm).toBeUndefined();
|
|
678
651
|
});
|
|
679
652
|
|
|
680
|
-
it('
|
|
681
|
-
|
|
682
|
-
const renderAddTestCustomerButton = jest.fn(() => (
|
|
683
|
-
<button type="button" data-testid="add-test-customer-btn" onClick={onAddClick}>
|
|
684
|
-
Add as test customer
|
|
685
|
-
</button>
|
|
686
|
-
));
|
|
687
|
-
const props = {
|
|
688
|
-
...defaultProps,
|
|
689
|
-
renderAddTestCustomerButton,
|
|
690
|
-
};
|
|
691
|
-
const { container } = render(
|
|
653
|
+
it('passes whatsappAccountFromForm as undefined when channel is WHATSAPP and formData is undefined', () => {
|
|
654
|
+
render(
|
|
692
655
|
<TestWrapper>
|
|
693
|
-
<SendTestMessage
|
|
656
|
+
<SendTestMessage
|
|
657
|
+
{...defaultProps}
|
|
658
|
+
channel="WHATSAPP"
|
|
659
|
+
formData={undefined}
|
|
660
|
+
/>
|
|
694
661
|
</TestWrapper>
|
|
695
662
|
);
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
expect(notFoundContent).toBeTruthy();
|
|
700
|
-
expect(notFoundContent.props['data-testid']).toBe('add-test-customer-btn');
|
|
701
|
-
expect(notFoundContent.type).toBe('button');
|
|
702
|
-
// Simulate click on the returned element's onClick
|
|
703
|
-
if (notFoundContent.props.onClick) {
|
|
704
|
-
notFoundContent.props.onClick();
|
|
705
|
-
expect(onAddClick).toHaveBeenCalled();
|
|
706
|
-
}
|
|
663
|
+
const el = screen.getByTestId('delivery-settings');
|
|
664
|
+
const data = JSON.parse(el.getAttribute('data-props'));
|
|
665
|
+
expect(data.whatsappAccountFromForm).toBeUndefined();
|
|
707
666
|
});
|
|
708
667
|
});
|
|
709
668
|
});
|