@capillarytech/creatives-library 8.0.242-alpha.1 → 8.0.242-alpha.11

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 (255) hide show
  1. package/assets/Android.png +0 -0
  2. package/assets/iOS.png +0 -0
  3. package/config/app.js +1 -1
  4. package/constants/unified.js +2 -2
  5. package/initialReducer.js +0 -2
  6. package/package.json +1 -1
  7. package/services/api.js +5 -10
  8. package/services/tests/api.test.js +0 -18
  9. package/translations/en.json +4 -3
  10. package/utils/common.js +6 -5
  11. package/utils/commonUtils.js +1 -14
  12. package/utils/imageUrlUpload.js +141 -0
  13. package/utils/tests/commonUtil.test.js +0 -224
  14. package/utils/transformTemplateConfig.js +10 -0
  15. package/v2Components/CapDeviceContent/index.js +56 -61
  16. package/v2Components/CapImageUpload/constants.js +2 -0
  17. package/v2Components/CapImageUpload/index.js +65 -16
  18. package/v2Components/CapImageUpload/index.scss +4 -1
  19. package/v2Components/CapImageUpload/messages.js +5 -1
  20. package/v2Components/CapImageUrlUpload/constants.js +26 -0
  21. package/v2Components/CapImageUrlUpload/index.js +365 -0
  22. package/v2Components/CapImageUrlUpload/index.scss +35 -0
  23. package/v2Components/CapImageUrlUpload/messages.js +47 -0
  24. package/v2Components/CapTagList/index.js +1 -6
  25. package/v2Components/CapTagListWithInput/index.js +1 -5
  26. package/v2Components/CapTagListWithInput/messages.js +1 -1
  27. package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
  28. package/v2Components/ErrorInfoNote/index.js +72 -412
  29. package/v2Components/ErrorInfoNote/messages.js +0 -22
  30. package/v2Components/ErrorInfoNote/style.scss +2 -279
  31. package/v2Components/HtmlEditor/HTMLEditor.js +89 -210
  32. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1132
  33. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +12 -17
  34. package/v2Components/HtmlEditor/_htmlEditor.scss +23 -8
  35. package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
  36. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +101 -13
  37. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +139 -148
  38. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
  39. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  40. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
  41. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -1
  42. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
  43. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
  44. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
  45. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  46. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
  47. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +6 -3
  48. package/v2Components/HtmlEditor/components/PreviewPane/index.js +11 -10
  49. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  50. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +62 -87
  51. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -49
  52. package/v2Components/HtmlEditor/constants.js +20 -29
  53. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
  54. package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
  55. package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
  56. package/v2Components/HtmlEditor/index.js +1 -1
  57. package/v2Components/HtmlEditor/messages.js +85 -95
  58. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +101 -99
  59. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
  60. package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -34
  61. package/v2Components/MobilePushPreviewV2/index.js +7 -32
  62. package/v2Components/TemplatePreview/_templatePreview.scss +24 -44
  63. package/v2Components/TemplatePreview/index.js +32 -47
  64. package/v2Components/TemplatePreview/messages.js +0 -4
  65. package/v2Components/TestAndPreviewSlidebox/index.js +25 -31
  66. package/v2Containers/App/constants.js +5 -0
  67. package/v2Containers/BeeEditor/index.js +80 -82
  68. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +4 -3
  69. package/v2Containers/CreativesContainer/SlideBoxContent.js +118 -148
  70. package/v2Containers/CreativesContainer/SlideBoxFooter.js +3 -9
  71. package/v2Containers/CreativesContainer/SlideBoxHeader.js +2 -2
  72. package/v2Containers/CreativesContainer/constants.js +2 -1
  73. package/v2Containers/CreativesContainer/index.js +41 -173
  74. package/v2Containers/CreativesContainer/messages.js +4 -4
  75. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +210 -0
  76. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +354 -38
  77. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -36
  78. package/v2Containers/Email/actions.js +0 -7
  79. package/v2Containers/Email/constants.js +1 -5
  80. package/v2Containers/Email/index.js +0 -13
  81. package/v2Containers/Email/messages.js +0 -32
  82. package/v2Containers/Email/reducer.js +1 -12
  83. package/v2Containers/Email/sagas.js +6 -41
  84. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
  85. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +7 -193
  86. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
  87. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
  88. package/v2Containers/EmailWrapper/constants.js +0 -2
  89. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +67 -436
  90. package/v2Containers/EmailWrapper/index.js +23 -99
  91. package/v2Containers/EmailWrapper/messages.js +1 -61
  92. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +1 -26
  93. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -111
  94. package/v2Containers/InApp/actions.js +0 -7
  95. package/v2Containers/InApp/constants.js +4 -20
  96. package/v2Containers/InApp/index.js +357 -800
  97. package/v2Containers/InApp/index.scss +3 -4
  98. package/v2Containers/InApp/messages.js +3 -7
  99. package/v2Containers/InApp/reducer.js +3 -21
  100. package/v2Containers/InApp/sagas.js +9 -29
  101. package/v2Containers/InApp/selectors.js +5 -25
  102. package/v2Containers/InApp/tests/index.test.js +50 -154
  103. package/v2Containers/InApp/tests/reducer.test.js +0 -34
  104. package/v2Containers/InApp/tests/sagas.test.js +9 -61
  105. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +12 -12
  106. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +8 -8
  107. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +100 -77
  108. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +72 -63
  109. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +184 -150
  110. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +16 -12
  111. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +32 -28
  112. package/v2Containers/TagList/index.js +1 -67
  113. package/v2Containers/Templates/ChannelTypeIllustration.js +13 -1
  114. package/v2Containers/Templates/_templates.scss +202 -56
  115. package/v2Containers/Templates/actions.js +2 -1
  116. package/v2Containers/Templates/constants.js +1 -0
  117. package/v2Containers/Templates/index.js +278 -128
  118. package/v2Containers/Templates/messages.js +24 -4
  119. package/v2Containers/Templates/reducer.js +2 -0
  120. package/v2Containers/Templates/tests/index.test.js +10 -0
  121. package/v2Containers/TemplatesV2/index.js +8 -1
  122. package/v2Containers/TemplatesV2/messages.js +4 -0
  123. package/v2Containers/WebPush/Create/components/BrandIconSection.js +108 -0
  124. package/v2Containers/WebPush/Create/components/ButtonForm.js +172 -0
  125. package/v2Containers/WebPush/Create/components/ButtonItem.js +101 -0
  126. package/v2Containers/WebPush/Create/components/ButtonList.js +145 -0
  127. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +164 -0
  128. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +463 -0
  129. package/v2Containers/WebPush/Create/components/FormActions.js +54 -0
  130. package/v2Containers/WebPush/Create/components/FormActions.test.js +163 -0
  131. package/v2Containers/WebPush/Create/components/MediaSection.js +142 -0
  132. package/v2Containers/WebPush/Create/components/MediaSection.test.js +341 -0
  133. package/v2Containers/WebPush/Create/components/MessageSection.js +103 -0
  134. package/v2Containers/WebPush/Create/components/MessageSection.test.js +268 -0
  135. package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +87 -0
  136. package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +210 -0
  137. package/v2Containers/WebPush/Create/components/TemplateNameSection.js +54 -0
  138. package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +143 -0
  139. package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +86 -0
  140. package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +16 -0
  141. package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +41 -0
  142. package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +54 -0
  143. package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +37 -0
  144. package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +21 -0
  145. package/v2Containers/WebPush/Create/components/_buttons.scss +246 -0
  146. package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +554 -0
  147. package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +607 -0
  148. package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +633 -0
  149. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +666 -0
  150. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +74 -0
  151. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +78 -0
  152. package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +138 -0
  153. package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +406 -0
  154. package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +30 -0
  155. package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +151 -0
  156. package/v2Containers/WebPush/Create/hooks/useImageUpload.js +104 -0
  157. package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +538 -0
  158. package/v2Containers/WebPush/Create/hooks/useTagManagement.js +122 -0
  159. package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +633 -0
  160. package/v2Containers/WebPush/Create/index.js +1056 -0
  161. package/v2Containers/WebPush/Create/index.scss +134 -0
  162. package/v2Containers/WebPush/Create/messages.js +203 -0
  163. package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +228 -0
  164. package/v2Containers/WebPush/Create/preview/NotificationContainer.js +294 -0
  165. package/v2Containers/WebPush/Create/preview/PreviewContent.js +90 -0
  166. package/v2Containers/WebPush/Create/preview/PreviewControls.js +305 -0
  167. package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +23 -0
  168. package/v2Containers/WebPush/Create/preview/WebPushPreview.js +150 -0
  169. package/v2Containers/WebPush/Create/preview/assets/Light.svg +53 -0
  170. package/v2Containers/WebPush/Create/preview/assets/Top.svg +5 -0
  171. package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +9 -0
  172. package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +9 -0
  173. package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
  174. package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
  175. package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +106 -0
  176. package/v2Containers/WebPush/Create/preview/assets/iOS.svg +26 -0
  177. package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +9 -0
  178. package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +9 -0
  179. package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +18 -0
  180. package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +29 -0
  181. package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +9 -0
  182. package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +9 -0
  183. package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +47 -0
  184. package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +141 -0
  185. package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +45 -0
  186. package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +68 -0
  187. package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +61 -0
  188. package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +99 -0
  189. package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +733 -0
  190. package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +571 -0
  191. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +81 -0
  192. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +81 -0
  193. package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +50 -0
  194. package/v2Containers/WebPush/Create/preview/constants.js +637 -0
  195. package/v2Containers/WebPush/Create/preview/notification-container.scss +79 -0
  196. package/v2Containers/WebPush/Create/preview/preview.scss +351 -0
  197. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +370 -0
  198. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +12 -0
  199. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +12 -0
  200. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +12 -0
  201. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +47 -0
  202. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +11 -0
  203. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +11 -0
  204. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +11 -0
  205. package/v2Containers/WebPush/Create/preview/styles/_base.scss +207 -0
  206. package/v2Containers/WebPush/Create/preview/styles/_ios.scss +153 -0
  207. package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +107 -0
  208. package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +101 -0
  209. package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +229 -0
  210. package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +909 -0
  211. package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +1081 -0
  212. package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +723 -0
  213. package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +943 -0
  214. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +131 -0
  215. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +112 -0
  216. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +144 -0
  217. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +129 -0
  218. package/v2Containers/WebPush/Create/utils/payloadBuilder.js +94 -0
  219. package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +390 -0
  220. package/v2Containers/WebPush/Create/utils/previewUtils.js +89 -0
  221. package/v2Containers/WebPush/Create/utils/urlValidation.js +115 -0
  222. package/v2Containers/WebPush/Create/utils/urlValidation.test.js +449 -0
  223. package/v2Containers/WebPush/Create/utils/validation.js +75 -0
  224. package/v2Containers/WebPush/Create/utils/validation.test.js +283 -0
  225. package/v2Containers/WebPush/actions.js +60 -0
  226. package/v2Containers/WebPush/constants.js +128 -0
  227. package/v2Containers/WebPush/index.js +2 -0
  228. package/v2Containers/WebPush/reducer.js +104 -0
  229. package/v2Containers/WebPush/sagas.js +119 -0
  230. package/v2Containers/WebPush/selectors.js +65 -0
  231. package/v2Containers/WebPush/tests/reducer.test.js +863 -0
  232. package/v2Containers/WebPush/tests/sagas.test.js +566 -0
  233. package/v2Containers/WebPush/tests/selectors.test.js +843 -0
  234. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +528 -431
  235. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -254
  236. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -362
  237. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
  238. package/v2Containers/BeePopupEditor/constants.js +0 -10
  239. package/v2Containers/BeePopupEditor/index.js +0 -193
  240. package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
  241. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1045
  242. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
  243. package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
  244. package/v2Containers/InApp/tests/selectors.test.js +0 -612
  245. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -162
  246. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
  247. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -9
  248. package/v2Containers/InAppWrapper/constants.js +0 -16
  249. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
  250. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
  251. package/v2Containers/InAppWrapper/index.js +0 -148
  252. package/v2Containers/InAppWrapper/messages.js +0 -49
  253. package/v2Containers/InappAdvance/index.js +0 -1099
  254. package/v2Containers/InappAdvance/index.scss +0 -10
  255. package/v2Containers/InappAdvance/tests/index.test.js +0 -448
@@ -1,363 +0,0 @@
1
- /**
2
- * InApp Sagas Tests
3
- *
4
- * Tests for InApp sagas including HTML content create/edit flows
5
- */
6
-
7
- import { call, put } from 'redux-saga/effects';
8
- import * as Api from '../../../services/api';
9
- import {
10
- inAppTemplateCreate,
11
- editTemplate,
12
- getTemplateDetails,
13
- uploadInAppAsset,
14
- } from '../sagas';
15
- import {
16
- INAPP_TEMPLATE_CREATE_SUCCESS,
17
- INAPP_TEMPLATE_CREATE_FAILURE,
18
- INAPP_EDIT_TEMPLATE_SUCCESS,
19
- INAPP_EDIT_TEMPLATE_FAILURE,
20
- GET_INAPP_TEMPLATE_DETAILS_SUCCESS,
21
- GET_INAPP_TEMPLATE_DETAILS_FAILURE,
22
- UPLOAD_INAPP_ASSET_SUCCESS,
23
- UPLOAD_INAPP_ASSET_FAILURE,
24
- } from '../constants';
25
- import { INAPP } from '../../CreativesContainer/constants';
26
-
27
- describe('InApp Sagas', () => {
28
- describe('inAppTemplateCreate', () => {
29
- const payload = {
30
- name: 'Test Template',
31
- versions: {
32
- base: {
33
- content: {
34
- ANDROID: {
35
- title: 'Android Title',
36
- message: '<p>Android HTML Content</p>',
37
- bodyType: 'MODAL',
38
- },
39
- IOS: {
40
- title: 'iOS Title',
41
- message: '<p>iOS HTML Content</p>',
42
- bodyType: 'MODAL',
43
- },
44
- },
45
- },
46
- },
47
- type: INAPP,
48
- };
49
-
50
- test('creates template successfully with HTML content', () => {
51
- const generator = inAppTemplateCreate({
52
- payload,
53
- callback: jest.fn(),
54
- });
55
-
56
- const mockResponse = {
57
- response: {
58
- id: 'template-123',
59
- name: 'Test Template',
60
- },
61
- status: {
62
- code: 201,
63
- },
64
- };
65
-
66
- expect(generator.next().value).toEqual(
67
- call(Api.createChannelWiseTemplate, { channel: INAPP, template: payload })
68
- );
69
-
70
- expect(generator.next(mockResponse).value).toEqual(
71
- put({
72
- type: INAPP_TEMPLATE_CREATE_SUCCESS,
73
- data: mockResponse.response,
74
- statusCode: 201,
75
- errorMsg: undefined,
76
- })
77
- );
78
-
79
- const callback = generator.next().value;
80
- expect(callback).toBeUndefined(); // Callback is called but not yielded
81
-
82
- expect(generator.next().done).toBe(true);
83
- });
84
-
85
- test('handles API error when creating template', () => {
86
- const generator = inAppTemplateCreate({
87
- payload,
88
- callback: jest.fn(),
89
- });
90
-
91
- const mockError = {
92
- response: null,
93
- status: {
94
- code: 400,
95
- },
96
- message: 'Validation error',
97
- };
98
-
99
- expect(generator.next().value).toEqual(
100
- call(Api.createChannelWiseTemplate, { channel: INAPP, template: payload })
101
- );
102
-
103
- expect(generator.next(mockError).value).toEqual(
104
- put({
105
- type: INAPP_TEMPLATE_CREATE_FAILURE,
106
- error: 'Validation error',
107
- errorMsg: 'Validation error',
108
- })
109
- );
110
-
111
- const callback = generator.next().value;
112
- expect(callback).toBeUndefined();
113
-
114
- expect(generator.next().done).toBe(true);
115
- });
116
-
117
- test('handles exception during template creation', () => {
118
- const generator = inAppTemplateCreate({
119
- payload,
120
- callback: jest.fn(),
121
- });
122
-
123
- const error = new Error('Network error');
124
-
125
- expect(generator.next().value).toEqual(
126
- call(Api.createChannelWiseTemplate, { channel: INAPP, template: payload })
127
- );
128
-
129
- expect(generator.throw(error).value).toEqual(
130
- put({
131
- type: INAPP_TEMPLATE_CREATE_FAILURE,
132
- error,
133
- errorMsg: undefined,
134
- })
135
- );
136
-
137
- expect(generator.next().done).toBe(true);
138
- });
139
- });
140
-
141
- describe('editTemplate', () => {
142
- const payload = {
143
- _id: 'template-123',
144
- name: 'Updated Template',
145
- versions: {
146
- base: {
147
- content: {
148
- ANDROID: {
149
- title: 'Updated Android Title',
150
- message: '<p>Updated Android HTML</p>',
151
- bodyType: 'MODAL',
152
- },
153
- IOS: {
154
- title: 'Updated iOS Title',
155
- message: '<p>Updated iOS HTML</p>',
156
- bodyType: 'MODAL',
157
- },
158
- },
159
- },
160
- },
161
- type: INAPP,
162
- };
163
-
164
- test('edits template successfully with HTML content', () => {
165
- const generator = editTemplate({
166
- payload,
167
- callback: jest.fn(),
168
- });
169
-
170
- const mockResponse = {
171
- response: {
172
- id: 'template-123',
173
- name: 'Updated Template',
174
- },
175
- status: {
176
- code: 200,
177
- },
178
- };
179
-
180
- expect(generator.next().value).toEqual(
181
- call(Api.createChannelWiseTemplate, { channel: INAPP, template: payload })
182
- );
183
-
184
- expect(generator.next(mockResponse).value).toEqual(
185
- put({
186
- type: INAPP_EDIT_TEMPLATE_SUCCESS,
187
- data: mockResponse.response,
188
- statusCode: 200,
189
- errorMsg: undefined,
190
- })
191
- );
192
-
193
- expect(generator.next().done).toBe(true);
194
- });
195
-
196
- test('handles API error when editing template', () => {
197
- const generator = editTemplate({
198
- payload,
199
- callback: jest.fn(),
200
- });
201
-
202
- const mockError = {
203
- response: null,
204
- status: {
205
- code: 404,
206
- },
207
- message: 'Template not found',
208
- };
209
-
210
- expect(generator.next().value).toEqual(
211
- call(Api.createChannelWiseTemplate, { channel: INAPP, template: payload })
212
- );
213
-
214
- expect(generator.next(mockError).value).toEqual(
215
- put({
216
- type: INAPP_EDIT_TEMPLATE_FAILURE,
217
- error: 'Template not found',
218
- errorMsg: 'Template not found',
219
- })
220
- );
221
-
222
- expect(generator.next().done).toBe(true);
223
- });
224
- });
225
-
226
- describe('getTemplateDetails', () => {
227
- test('fetches template details successfully', () => {
228
- const generator = getTemplateDetails({
229
- id: 'template-123',
230
- callback: jest.fn(),
231
- });
232
-
233
- const mockResponse = {
234
- response: {
235
- id: 'template-123',
236
- name: 'Test Template',
237
- versions: {
238
- base: {
239
- content: {
240
- ANDROID: {
241
- title: 'Android Title',
242
- message: '<p>Android HTML Content</p>',
243
- },
244
- IOS: {
245
- title: 'iOS Title',
246
- message: '<p>iOS HTML Content</p>',
247
- },
248
- },
249
- },
250
- },
251
- },
252
- };
253
-
254
- expect(generator.next().value).toEqual(
255
- call(Api.getTemplateDetails, {
256
- id: 'template-123',
257
- channel: INAPP,
258
- })
259
- );
260
-
261
- expect(generator.next(mockResponse).value).toEqual(
262
- put({
263
- type: GET_INAPP_TEMPLATE_DETAILS_SUCCESS,
264
- data: mockResponse.response,
265
- })
266
- );
267
-
268
- expect(generator.next().done).toBe(true);
269
- });
270
-
271
- test('handles error when fetching template details', () => {
272
- const generator = getTemplateDetails({
273
- id: 'template-123',
274
- callback: jest.fn(),
275
- });
276
-
277
- const error = new Error('Not found');
278
-
279
- expect(generator.next().value).toEqual(
280
- call(Api.getTemplateDetails, {
281
- id: 'template-123',
282
- channel: INAPP,
283
- })
284
- );
285
-
286
- expect(generator.throw(error).value).toEqual(
287
- put({
288
- type: GET_INAPP_TEMPLATE_DETAILS_FAILURE,
289
- error,
290
- })
291
- );
292
-
293
- expect(generator.next().done).toBe(true);
294
- });
295
- });
296
-
297
- describe('uploadInAppAsset', () => {
298
- test('uploads asset successfully', () => {
299
- const params = {
300
- file: new File(['test'], 'test.jpg'),
301
- assetType: 'image',
302
- fileParams: {},
303
- templateType: INAPP,
304
- };
305
-
306
- const generator = uploadInAppAsset(params);
307
-
308
- const mockResponse = {
309
- response: {
310
- asset: {
311
- url: 'https://cdn.example.com/image.jpg',
312
- id: 'asset-123',
313
- },
314
- },
315
- status: {
316
- code: 200,
317
- },
318
- };
319
-
320
- expect(generator.next().value).toEqual(
321
- call(Api.uploadFile, params)
322
- );
323
-
324
- expect(generator.next(mockResponse).value).toEqual(
325
- put({
326
- type: UPLOAD_INAPP_ASSET_SUCCESS,
327
- data: mockResponse.response.asset,
328
- statusCode: 200,
329
- templateType: INAPP,
330
- })
331
- );
332
-
333
- expect(generator.next().done).toBe(true);
334
- });
335
-
336
- test('handles error when uploading asset', () => {
337
- const params = {
338
- file: new File(['test'], 'test.jpg'),
339
- assetType: 'image',
340
- fileParams: {},
341
- templateType: INAPP,
342
- };
343
-
344
- const generator = uploadInAppAsset(params);
345
-
346
- const error = new Error('Upload failed');
347
-
348
- expect(generator.next().value).toEqual(
349
- call(Api.uploadFile, params)
350
- );
351
-
352
- expect(generator.throw(error).value).toEqual(
353
- put({
354
- type: UPLOAD_INAPP_ASSET_FAILURE,
355
- error,
356
- })
357
- );
358
-
359
- expect(generator.next().done).toBe(true);
360
- });
361
- });
362
- });
363
-