@capillarytech/creatives-library 9.0.15-alpha.1 → 9.0.16

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 (132) hide show
  1. package/constants/unified.js +0 -29
  2. package/global-styles.js +1 -1
  3. package/package.json +1 -1
  4. package/services/tests/api.test.js +20 -35
  5. package/utils/commonUtils.js +1 -19
  6. package/v2Components/CapActionButton/constants.js +0 -7
  7. package/v2Components/CapActionButton/index.js +109 -168
  8. package/v2Components/CapActionButton/index.scss +5 -156
  9. package/v2Components/CapActionButton/messages.js +3 -19
  10. package/v2Components/CapActionButton/tests/index.test.js +18 -42
  11. package/v2Components/CapImageUpload/index.js +2 -2
  12. package/v2Components/CapTagList/index.js +0 -10
  13. package/v2Components/CommonTestAndPreview/CustomValuesEditor.js +48 -70
  14. package/v2Components/CommonTestAndPreview/DeliverySettings/DeliverySettings.scss +2 -8
  15. package/v2Components/CommonTestAndPreview/DeliverySettings/ModifyDeliverySettings.js +21 -214
  16. package/v2Components/CommonTestAndPreview/DeliverySettings/constants.js +0 -16
  17. package/v2Components/CommonTestAndPreview/DeliverySettings/index.js +9 -83
  18. package/v2Components/CommonTestAndPreview/DeliverySettings/messages.js +0 -30
  19. package/v2Components/CommonTestAndPreview/DeliverySettings/utils/parseSenderDetailsResponse.js +11 -60
  20. package/v2Components/CommonTestAndPreview/SendTestMessage.js +5 -10
  21. package/v2Components/CommonTestAndPreview/UnifiedPreview/RcsPreviewContent.js +23 -201
  22. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +76 -355
  23. package/v2Components/CommonTestAndPreview/UnifiedPreview/index.js +8 -155
  24. package/v2Components/CommonTestAndPreview/_commonTestAndPreview.scss +0 -11
  25. package/v2Components/CommonTestAndPreview/constants.js +2 -38
  26. package/v2Components/CommonTestAndPreview/index.js +222 -761
  27. package/v2Components/CommonTestAndPreview/messages.js +3 -45
  28. package/v2Components/CommonTestAndPreview/sagas.js +6 -25
  29. package/v2Components/CommonTestAndPreview/tests/CommonTestAndPreview.addTestCustomer.test.js +0 -1
  30. package/v2Components/CommonTestAndPreview/tests/CustomValuesEditor.test.js +267 -284
  31. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/ModifyDeliverySettings.test.js +65 -231
  32. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/index.test.js +5 -118
  33. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/utils/parseSenderDetailsResponse.test.js +0 -341
  34. package/v2Components/CommonTestAndPreview/tests/PreviewSection.test.js +1 -8
  35. package/v2Components/CommonTestAndPreview/tests/SendTestMessage.test.js +13 -34
  36. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/RcsPreviewContent.test.js +283 -281
  37. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/index.test.js +1 -199
  38. package/v2Components/CommonTestAndPreview/tests/index.test.js +4 -133
  39. package/v2Components/CommonTestAndPreview/tests/sagas.test.js +24 -31
  40. package/v2Components/TemplatePreview/_templatePreview.scss +22 -41
  41. package/v2Components/TemplatePreview/index.js +31 -143
  42. package/v2Components/TemplatePreview/tests/index.test.js +0 -142
  43. package/v2Components/TestAndPreviewSlidebox/CustomValuesEditor.js +6 -6
  44. package/v2Components/TestAndPreviewSlidebox/index.js +1 -13
  45. package/v2Components/TestAndPreviewSlidebox/sagas.js +4 -11
  46. package/v2Components/TestAndPreviewSlidebox/tests/saga.test.js +1 -3
  47. package/v2Containers/CommunicationFlow/Tests/CommunicationFlow.test.js +1 -4
  48. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/Tests/DeliverySettingsSection.test.js +0 -4
  49. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/Tests/SenderDetails.test.js +20 -20
  50. package/v2Containers/CreativesContainer/SlideBoxContent.js +7 -36
  51. package/v2Containers/CreativesContainer/SlideBoxFooter.js +5 -14
  52. package/v2Containers/CreativesContainer/SlideBoxHeader.js +5 -36
  53. package/v2Containers/CreativesContainer/constants.js +0 -11
  54. package/v2Containers/CreativesContainer/index.js +104 -323
  55. package/v2Containers/CreativesContainer/index.scss +1 -83
  56. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +34 -79
  57. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +16 -79
  58. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -8
  59. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +90 -333
  60. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +15 -20
  61. package/v2Containers/CreativesContainer/tests/index.test.js +9 -71
  62. package/v2Containers/Email/index.js +5 -2
  63. package/v2Containers/MobilePush/Create/test/saga.test.js +2 -2
  64. package/v2Containers/Rcs/constants.js +11 -131
  65. package/v2Containers/Rcs/index.js +810 -2605
  66. package/v2Containers/Rcs/index.scss +8 -289
  67. package/v2Containers/Rcs/messages.js +3 -34
  68. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +38537 -73535
  69. package/v2Containers/Rcs/tests/__snapshots__/utils.test.js.snap +8 -0
  70. package/v2Containers/Rcs/tests/index.test.js +36 -147
  71. package/v2Containers/Rcs/tests/mockData.js +0 -38
  72. package/v2Containers/Rcs/tests/utils.test.js +30 -646
  73. package/v2Containers/Rcs/utils.js +11 -478
  74. package/v2Containers/Sms/Create/index.js +48 -115
  75. package/v2Containers/SmsTrai/Create/index.js +4 -9
  76. package/v2Containers/SmsTrai/Edit/constants.js +0 -2
  77. package/v2Containers/SmsTrai/Edit/index.js +169 -678
  78. package/v2Containers/SmsTrai/Edit/messages.js +4 -14
  79. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +2854 -5455
  80. package/v2Containers/SmsWrapper/index.js +8 -37
  81. package/v2Containers/TagList/index.js +0 -6
  82. package/v2Containers/Templates/_templates.scss +12 -171
  83. package/v2Containers/Templates/actions.js +0 -11
  84. package/v2Containers/Templates/constants.js +0 -2
  85. package/v2Containers/Templates/index.js +55 -125
  86. package/v2Containers/Templates/sagas.js +13 -57
  87. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +1015 -1060
  88. package/v2Containers/Templates/tests/sagas.test.js +16 -199
  89. package/v2Containers/TemplatesV2/TemplatesV2.style.js +1 -72
  90. package/v2Containers/TemplatesV2/index.js +23 -86
  91. package/v2Containers/WeChat/MapTemplates/test/saga.test.js +9 -9
  92. package/v2Containers/Whatsapp/index.js +20 -3
  93. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +34 -578
  94. package/utils/rcsPayloadUtils.js +0 -92
  95. package/utils/templateVarUtils.js +0 -201
  96. package/utils/tests/rcsPayloadUtils.test.js +0 -226
  97. package/utils/tests/templateVarUtils.test.js +0 -204
  98. package/v2Components/CommonTestAndPreview/previewApiUtils.js +0 -59
  99. package/v2Components/CommonTestAndPreview/tests/previewApiUtils.test.js +0 -67
  100. package/v2Components/CommonTestAndPreview/utils.js +0 -84
  101. package/v2Components/SmsFallback/SmsFallbackLocalSelector.js +0 -91
  102. package/v2Components/SmsFallback/constants.js +0 -94
  103. package/v2Components/SmsFallback/index.js +0 -958
  104. package/v2Components/SmsFallback/index.scss +0 -266
  105. package/v2Components/SmsFallback/messages.js +0 -78
  106. package/v2Components/SmsFallback/smsFallbackUtils.js +0 -120
  107. package/v2Components/SmsFallback/tests/SmsFallbackLocalSelector.test.js +0 -50
  108. package/v2Components/SmsFallback/tests/rcsSmsFallback.acceptance.test.js +0 -147
  109. package/v2Components/SmsFallback/tests/smsFallbackHandlers.test.js +0 -304
  110. package/v2Components/SmsFallback/tests/smsFallbackUi.test.js +0 -208
  111. package/v2Components/SmsFallback/tests/smsFallbackUtils.test.js +0 -309
  112. package/v2Components/SmsFallback/tests/useLocalTemplateList.test.js +0 -422
  113. package/v2Components/SmsFallback/useLocalTemplateList.js +0 -92
  114. package/v2Components/TemplatePreview/constants.js +0 -2
  115. package/v2Components/VarSegmentMessageEditor/constants.js +0 -2
  116. package/v2Components/VarSegmentMessageEditor/index.js +0 -125
  117. package/v2Components/VarSegmentMessageEditor/index.scss +0 -46
  118. package/v2Containers/CreativesContainer/CreativesSlideBoxWrapper.js +0 -17
  119. package/v2Containers/CreativesContainer/embeddedSlideboxUtils.js +0 -79
  120. package/v2Containers/CreativesContainer/tests/SlideBoxContent.localTemplates.test.js +0 -90
  121. package/v2Containers/CreativesContainer/tests/embeddedSlideboxUtils.test.js +0 -258
  122. package/v2Containers/CreativesContainer/tests/useLocalTemplatesProp.test.js +0 -125
  123. package/v2Containers/Rcs/rcsLibraryHydrationUtils.js +0 -227
  124. package/v2Containers/Rcs/tests/rcsLibraryHydrationUtils.test.js +0 -318
  125. package/v2Containers/Sms/smsFormDataHelpers.js +0 -67
  126. package/v2Containers/Sms/tests/smsFormDataHelpers.test.js +0 -253
  127. package/v2Containers/SmsTrai/Edit/index.scss +0 -126
  128. package/v2Containers/Templates/TemplatesActionBar.js +0 -101
  129. package/v2Containers/Templates/tests/TemplatesActionBar.test.js +0 -120
  130. package/v2Containers/Templates/tests/smsTemplatesListApi.test.js +0 -180
  131. package/v2Containers/Templates/utils/smsTemplatesListApi.js +0 -79
  132. 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
- });