@capillarytech/creatives-library 8.0.353-alpha.6 → 8.0.353

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 (124) hide show
  1. package/constants/unified.js +0 -29
  2. package/package.json +1 -1
  3. package/services/tests/api.test.js +20 -35
  4. package/utils/commonUtils.js +1 -19
  5. package/v2Components/CapActionButton/constants.js +0 -7
  6. package/v2Components/CapActionButton/index.js +108 -166
  7. package/v2Components/CapActionButton/index.scss +6 -157
  8. package/v2Components/CapActionButton/messages.js +3 -19
  9. package/v2Components/CapActionButton/tests/index.test.js +17 -41
  10. package/v2Components/CapTagList/index.js +0 -10
  11. package/v2Components/CommonTestAndPreview/CustomValuesEditor.js +49 -72
  12. package/v2Components/CommonTestAndPreview/DeliverySettings/DeliverySettings.scss +2 -8
  13. package/v2Components/CommonTestAndPreview/DeliverySettings/ModifyDeliverySettings.js +21 -213
  14. package/v2Components/CommonTestAndPreview/DeliverySettings/constants.js +0 -16
  15. package/v2Components/CommonTestAndPreview/DeliverySettings/index.js +10 -85
  16. package/v2Components/CommonTestAndPreview/DeliverySettings/messages.js +0 -30
  17. package/v2Components/CommonTestAndPreview/DeliverySettings/utils/parseSenderDetailsResponse.js +11 -79
  18. package/v2Components/CommonTestAndPreview/SendTestMessage.js +5 -10
  19. package/v2Components/CommonTestAndPreview/UnifiedPreview/RcsPreviewContent.js +15 -157
  20. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +76 -346
  21. package/v2Components/CommonTestAndPreview/UnifiedPreview/index.js +4 -133
  22. package/v2Components/CommonTestAndPreview/_commonTestAndPreview.scss +0 -11
  23. package/v2Components/CommonTestAndPreview/constants.js +2 -38
  24. package/v2Components/CommonTestAndPreview/index.js +186 -691
  25. package/v2Components/CommonTestAndPreview/messages.js +3 -45
  26. package/v2Components/CommonTestAndPreview/sagas.js +6 -25
  27. package/v2Components/CommonTestAndPreview/tests/CustomValuesEditor.test.js +284 -308
  28. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/ModifyDeliverySettings.test.js +65 -231
  29. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/index.test.js +5 -118
  30. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/utils/parseSenderDetailsResponse.test.js +0 -341
  31. package/v2Components/CommonTestAndPreview/tests/PreviewSection.test.js +1 -8
  32. package/v2Components/CommonTestAndPreview/tests/SendTestMessage.test.js +13 -34
  33. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/RcsPreviewContent.test.js +283 -281
  34. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/index.test.js +1 -199
  35. package/v2Components/CommonTestAndPreview/tests/index.test.js +4 -132
  36. package/v2Components/CommonTestAndPreview/tests/sagas.test.js +26 -36
  37. package/v2Components/FormBuilder/index.js +168 -63
  38. package/v2Components/TemplatePreview/_templatePreview.scss +23 -38
  39. package/v2Components/TemplatePreview/index.js +31 -143
  40. package/v2Components/TemplatePreview/tests/index.test.js +0 -142
  41. package/v2Components/TestAndPreviewSlidebox/index.js +1 -13
  42. package/v2Components/TestAndPreviewSlidebox/sagas.js +4 -11
  43. package/v2Components/TestAndPreviewSlidebox/tests/saga.test.js +1 -3
  44. package/v2Containers/CreativesContainer/SlideBoxContent.js +4 -36
  45. package/v2Containers/CreativesContainer/SlideBoxFooter.js +1 -10
  46. package/v2Containers/CreativesContainer/SlideBoxHeader.js +4 -29
  47. package/v2Containers/CreativesContainer/constants.js +0 -9
  48. package/v2Containers/CreativesContainer/index.js +163 -346
  49. package/v2Containers/CreativesContainer/index.scss +1 -51
  50. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +34 -78
  51. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +16 -79
  52. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -8
  53. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +98 -357
  54. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +15 -20
  55. package/v2Containers/CreativesContainer/tests/index.test.js +9 -71
  56. package/v2Containers/MobilePush/Create/test/saga.test.js +2 -2
  57. package/v2Containers/Rcs/constants.js +10 -119
  58. package/v2Containers/Rcs/index.js +818 -2450
  59. package/v2Containers/Rcs/index.scss +8 -280
  60. package/v2Containers/Rcs/messages.js +3 -34
  61. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +70073 -98018
  62. package/v2Containers/Rcs/tests/__snapshots__/utils.test.js.snap +5 -0
  63. package/v2Containers/Rcs/tests/index.test.js +121 -152
  64. package/v2Containers/Rcs/tests/mockData.js +0 -38
  65. package/v2Containers/Rcs/tests/utils.test.js +30 -646
  66. package/v2Containers/Rcs/utils.js +11 -478
  67. package/v2Containers/Sms/Create/index.js +40 -106
  68. package/v2Containers/SmsTrai/Create/index.js +4 -9
  69. package/v2Containers/SmsTrai/Edit/constants.js +0 -2
  70. package/v2Containers/SmsTrai/Edit/index.js +130 -640
  71. package/v2Containers/SmsTrai/Edit/messages.js +4 -14
  72. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +2296 -4249
  73. package/v2Containers/SmsWrapper/index.js +8 -37
  74. package/v2Containers/TagList/index.js +0 -6
  75. package/v2Containers/Templates/_templates.scss +9 -166
  76. package/v2Containers/Templates/actions.js +0 -11
  77. package/v2Containers/Templates/constants.js +0 -2
  78. package/v2Containers/Templates/index.js +52 -120
  79. package/v2Containers/Templates/sagas.js +12 -56
  80. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +1017 -1062
  81. package/v2Containers/Templates/tests/sagas.test.js +16 -199
  82. package/v2Containers/TemplatesV2/TemplatesV2.style.js +1 -72
  83. package/v2Containers/TemplatesV2/index.js +23 -86
  84. package/v2Containers/WeChat/MapTemplates/test/saga.test.js +9 -9
  85. package/v2Containers/Whatsapp/index.js +20 -3
  86. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +34 -578
  87. package/utils/rcsPayloadUtils.js +0 -92
  88. package/utils/templateVarUtils.js +0 -201
  89. package/utils/tests/rcsPayloadUtils.test.js +0 -226
  90. package/utils/tests/templateVarUtils.test.js +0 -204
  91. package/v2Components/CommonTestAndPreview/previewApiUtils.js +0 -59
  92. package/v2Components/CommonTestAndPreview/tests/previewApiUtils.test.js +0 -67
  93. package/v2Components/SmsFallback/SmsFallbackLocalSelector.js +0 -91
  94. package/v2Components/SmsFallback/constants.js +0 -73
  95. package/v2Components/SmsFallback/index.js +0 -956
  96. package/v2Components/SmsFallback/index.scss +0 -265
  97. package/v2Components/SmsFallback/messages.js +0 -78
  98. package/v2Components/SmsFallback/smsFallbackUtils.js +0 -119
  99. package/v2Components/SmsFallback/tests/SmsFallbackLocalSelector.test.js +0 -50
  100. package/v2Components/SmsFallback/tests/rcsSmsFallback.acceptance.test.js +0 -147
  101. package/v2Components/SmsFallback/tests/smsFallbackHandlers.test.js +0 -304
  102. package/v2Components/SmsFallback/tests/smsFallbackUi.test.js +0 -223
  103. package/v2Components/SmsFallback/tests/smsFallbackUtils.test.js +0 -309
  104. package/v2Components/SmsFallback/tests/useLocalTemplateList.test.js +0 -422
  105. package/v2Components/SmsFallback/useLocalTemplateList.js +0 -92
  106. package/v2Components/TemplatePreview/constants.js +0 -2
  107. package/v2Components/VarSegmentMessageEditor/constants.js +0 -2
  108. package/v2Components/VarSegmentMessageEditor/index.js +0 -125
  109. package/v2Components/VarSegmentMessageEditor/index.scss +0 -46
  110. package/v2Containers/CreativesContainer/CreativesSlideBoxWrapper.js +0 -43
  111. package/v2Containers/CreativesContainer/embeddedSlideboxUtils.js +0 -79
  112. package/v2Containers/CreativesContainer/tests/SlideBoxContent.localTemplates.test.js +0 -90
  113. package/v2Containers/CreativesContainer/tests/embeddedSlideboxUtils.test.js +0 -258
  114. package/v2Containers/CreativesContainer/tests/useLocalTemplatesProp.test.js +0 -125
  115. package/v2Containers/Rcs/rcsLibraryHydrationUtils.js +0 -225
  116. package/v2Containers/Rcs/tests/rcsLibraryHydrationUtils.test.js +0 -318
  117. package/v2Containers/Sms/smsFormDataHelpers.js +0 -67
  118. package/v2Containers/Sms/tests/smsFormDataHelpers.test.js +0 -253
  119. package/v2Containers/SmsTrai/Edit/index.scss +0 -121
  120. package/v2Containers/Templates/TemplatesActionBar.js +0 -101
  121. package/v2Containers/Templates/tests/TemplatesActionBar.test.js +0 -120
  122. package/v2Containers/Templates/tests/smsTemplatesListApi.test.js +0 -180
  123. package/v2Containers/Templates/utils/smsTemplatesListApi.js +0 -79
  124. package/v2Containers/TemplatesV2/tests/TemplatesV2.localTemplates.test.js +0 -131
@@ -1,309 +0,0 @@
1
- import {
2
- buildFallbackDataFromTemplate,
3
- mapFallbackValueToEditTemplateData,
4
- getBaseFromSmsTraiFormData,
5
- getSmsFallbackCardDisplayContent,
6
- resolveContentFromTraiBase,
7
- filterSmsTemplatesByCategory,
8
- buildFallbackDataFromCreativesPayload,
9
- } from '../smsFallbackUtils';
10
- import { SMS_CATEGORY_FILTERS } from '../constants';
11
-
12
- describe('smsFallbackUtils', () => {
13
- describe('buildFallbackDataFromTemplate', () => {
14
- it('returns safe defaults when template is nullish', () => {
15
- expect(buildFallbackDataFromTemplate(null)).toEqual({
16
- smsTemplateId: '',
17
- templateName: '',
18
- content: '',
19
- templateContent: '',
20
- senderId: '',
21
- registeredSenderIds: [],
22
- unicodeValidity: true,
23
- });
24
- });
25
-
26
- it('maps template versions.base and header sender list', () => {
27
- const template = {
28
- name: 'My SMS',
29
- versions: {
30
- base: {
31
- 'sms-editor': 'Hello {{1}}',
32
- header: ['S1', 'S2'],
33
- 'unicode-validity': false,
34
- template_id: 'tid',
35
- },
36
- },
37
- };
38
- expect(buildFallbackDataFromTemplate(template)).toEqual({
39
- smsTemplateId: 'tid',
40
- templateName: 'My SMS',
41
- content: 'Hello {{1}}',
42
- templateContent: 'Hello {{1}}',
43
- senderId: 'S1',
44
- registeredSenderIds: ['S1', 'S2'],
45
- unicodeValidity: false,
46
- });
47
- });
48
-
49
- it('falls back to senderId when header is missing', () => {
50
- const template = {
51
- _id: '',
52
- name: '',
53
- versions: { base: { 'sms-editor': 'x', senderId: 'SID' } },
54
- };
55
- expect(buildFallbackDataFromTemplate(template).senderId).toBe('SID');
56
- expect(buildFallbackDataFromTemplate(template).registeredSenderIds).toEqual([]);
57
- });
58
-
59
- it('defaults unicodeValidity to true when not a boolean', () => {
60
- const template = {
61
- versions: { base: { 'sms-editor': '' } },
62
- };
63
- expect(buildFallbackDataFromTemplate(template).unicodeValidity).toBe(true);
64
- });
65
-
66
- it('uses versions.base.template_name when root name is empty (DLT detail shape)', () => {
67
- const template = {
68
- _id: 'dlt1',
69
- name: '',
70
- versions: {
71
- base: {
72
- template_name: 'DLT Registered Name',
73
- 'sms-editor': 'Hi',
74
- header: ['H1'],
75
- },
76
- },
77
- };
78
- expect(buildFallbackDataFromTemplate(template).templateName).toBe('DLT Registered Name');
79
- });
80
- });
81
-
82
- describe('getSmsFallbackCardDisplayContent', () => {
83
- it('returns raw template when rcsSmsFallbackVarMapped is empty', () => {
84
- expect(
85
- getSmsFallbackCardDisplayContent({
86
- templateContent: 'A {#var#} B',
87
- rcsSmsFallbackVarMapped: {},
88
- }),
89
- ).toBe('A {#var#} B');
90
- });
91
-
92
- it('substitutes slot values like preview when var map is set', () => {
93
- expect(
94
- getSmsFallbackCardDisplayContent({
95
- templateContent: 'Hi {{name}}',
96
- rcsSmsFallbackVarMapped: { '{{name}}_1': 'Pat' },
97
- }),
98
- ).toBe('Hi Pat');
99
- });
100
-
101
- it('shows raw {#var#} in card when slots saved empty (DLT, no labels)', () => {
102
- expect(
103
- getSmsFallbackCardDisplayContent({
104
- templateContent: 'Balance {#var#}',
105
- rcsSmsFallbackVarMapped: { '{#var#}_1': '' },
106
- }),
107
- ).toBe('Balance {#var#}');
108
- });
109
- });
110
-
111
- describe('mapFallbackValueToEditTemplateData', () => {
112
- it('returns null when source is missing', () => {
113
- expect(mapFallbackValueToEditTemplateData(null)).toBeNull();
114
- expect(mapFallbackValueToEditTemplateData(undefined)).toBeNull();
115
- });
116
-
117
- it('maps content, optional header and unicode flag', () => {
118
- const source = {
119
- smsTemplateId: 'id1',
120
- templateName: 'N',
121
- templateContent: 'body',
122
- registeredSenderIds: ['h1'],
123
- unicodeValidity: false,
124
- };
125
- expect(mapFallbackValueToEditTemplateData(source)).toEqual({
126
- _id: 'id1',
127
- name: 'N',
128
- versions: {
129
- base: {
130
- 'sms-editor': 'body',
131
- template_name: 'N',
132
- header: ['h1'],
133
- 'unicode-validity': false,
134
- },
135
- },
136
- });
137
- });
138
-
139
- it('uses content when templateContent is empty', () => {
140
- const source = {
141
- smsTemplateId: 'x',
142
- templateName: 'y',
143
- content: 'from-content',
144
- };
145
- expect(mapFallbackValueToEditTemplateData(source).versions.base['sms-editor']).toBe('from-content');
146
- });
147
-
148
- it('omits header when registeredSenderIds is empty', () => {
149
- const source = {
150
- smsTemplateId: 'x',
151
- templateName: 'y',
152
- templateContent: 't',
153
- registeredSenderIds: [],
154
- };
155
- expect(mapFallbackValueToEditTemplateData(source).versions.base.header).toBeUndefined();
156
- });
157
-
158
- it('omits unicode-validity when value is not a boolean', () => {
159
- const source = {
160
- smsTemplateId: 'x',
161
- templateName: 'y',
162
- templateContent: 't',
163
- unicodeValidity: 'yes',
164
- };
165
- expect(mapFallbackValueToEditTemplateData(source).versions.base['unicode-validity']).toBeUndefined();
166
- });
167
- });
168
-
169
- describe('getBaseFromSmsTraiFormData', () => {
170
- it('reads versions.base', () => {
171
- const fd = { versions: { base: { 'sms-editor': 'a' } } };
172
- expect(getBaseFromSmsTraiFormData(fd)).toEqual({ base: { 'sms-editor': 'a' } });
173
- });
174
-
175
- it('falls back to value.base', () => {
176
- const fd = { value: { base: { 'sms-editor': 'b' } } };
177
- expect(getBaseFromSmsTraiFormData(fd)).toEqual({ base: { 'sms-editor': 'b' } });
178
- });
179
-
180
- it('uses empty base when neither path exists', () => {
181
- expect(getBaseFromSmsTraiFormData({})).toEqual({ base: {} });
182
- });
183
-
184
- it('normalizes null versions.base to empty object', () => {
185
- expect(getBaseFromSmsTraiFormData({ versions: { base: null } })).toEqual({ base: {} });
186
- });
187
- });
188
-
189
- describe('resolveContentFromTraiBase', () => {
190
- it('returns sms-editor string', () => {
191
- expect(resolveContentFromTraiBase({ 'sms-editor': 'z' })).toBe('z');
192
- });
193
-
194
- it('returns empty string when missing', () => {
195
- expect(resolveContentFromTraiBase({})).toBe('');
196
- });
197
-
198
- it('returns empty string for nullish base', () => {
199
- expect(resolveContentFromTraiBase(null)).toBe('');
200
- expect(resolveContentFromTraiBase(undefined)).toBe('');
201
- });
202
- });
203
-
204
- describe('filterSmsTemplatesByCategory', () => {
205
- const templates = [
206
- { versions: { base: { type: 'Promo' } } },
207
- { versions: { base: { type: 'Explicit' } } },
208
- ];
209
-
210
- it('returns empty array for non-array input', () => {
211
- expect(filterSmsTemplatesByCategory(null, SMS_CATEGORY_FILTERS.PROMOTIONAL)).toEqual([]);
212
- });
213
-
214
- it('returns all templates for ALL or missing filter', () => {
215
- expect(filterSmsTemplatesByCategory(templates, SMS_CATEGORY_FILTERS.ALL)).toEqual(templates);
216
- expect(filterSmsTemplatesByCategory(templates, null)).toEqual(templates);
217
- });
218
-
219
- it('filters by lowercase type substring', () => {
220
- const filtered = filterSmsTemplatesByCategory(templates, SMS_CATEGORY_FILTERS.PROMOTIONAL);
221
- expect(filtered).toHaveLength(1);
222
- expect(filtered[0].versions.base.type).toBe('Promo');
223
- });
224
-
225
- it('treats missing type as empty string for filtering', () => {
226
- const mixed = [{}, { versions: { base: {} } }];
227
- expect(filterSmsTemplatesByCategory(mixed, SMS_CATEGORY_FILTERS.PROMOTIONAL)).toEqual([]);
228
- });
229
- });
230
-
231
- describe('buildFallbackDataFromCreativesPayload', () => {
232
- it('returns null for missing or non-SMS channel', () => {
233
- expect(buildFallbackDataFromCreativesPayload(null)).toBeNull();
234
- expect(buildFallbackDataFromCreativesPayload({ channel: 'RCS' })).toBeNull();
235
- });
236
-
237
- it('maps SMS payload with messageBody and templateConfigs', () => {
238
- const creativesData = {
239
- channel: 'SMS',
240
- messageBody: 'Hello',
241
- templateConfigs: {
242
- templateId: 99,
243
- templateName: 'T',
244
- template: 'Template str',
245
- registeredSenderIds: ['R1'],
246
- },
247
- };
248
- expect(buildFallbackDataFromCreativesPayload(creativesData)).toEqual({
249
- smsTemplateId: '99',
250
- templateName: 'T',
251
- content: 'Hello',
252
- templateContent: 'Template str',
253
- senderId: 'R1',
254
- registeredSenderIds: ['R1'],
255
- unicodeValidity: true,
256
- });
257
- });
258
-
259
- it('uses template string as body when messageBody is not a string', () => {
260
- const creativesData = {
261
- channel: 'SMS',
262
- messageBody: null,
263
- templateConfigs: {
264
- template: 'only-template',
265
- },
266
- };
267
- const out = buildFallbackDataFromCreativesPayload(creativesData);
268
- expect(out.content).toBe('only-template');
269
- expect(out.templateContent).toBe('only-template');
270
- });
271
-
272
- it('stringifies templateId and templateName when present', () => {
273
- const creativesData = {
274
- channel: 'SMS',
275
- messageBody: 'm',
276
- templateConfigs: { templateId: 0, templateName: null },
277
- };
278
- const out = buildFallbackDataFromCreativesPayload(creativesData);
279
- expect(out.smsTemplateId).toBe('0');
280
- expect(out.templateName).toBe('');
281
- });
282
-
283
- it('uses empty templateConfigs when null', () => {
284
- const creativesData = {
285
- channel: 'SMS',
286
- messageBody: 'only-body',
287
- templateConfigs: null,
288
- };
289
- const out = buildFallbackDataFromCreativesPayload(creativesData);
290
- expect(out.templateContent).toBe('only-body');
291
- expect(out.content).toBe('only-body');
292
- });
293
-
294
- it('falls back to templateConfigs.senderId when registeredSenderIds is empty', () => {
295
- const creativesData = {
296
- channel: 'SMS',
297
- messageBody: 'hello',
298
- templateConfigs: {
299
- template: 'hello',
300
- senderId: 'SID_123',
301
- registeredSenderIds: [],
302
- },
303
- };
304
- const out = buildFallbackDataFromCreativesPayload(creativesData);
305
- expect(out.senderId).toBe('SID_123');
306
- expect(out.registeredSenderIds).toEqual([]);
307
- });
308
- });
309
- });