@capillarytech/creatives-library 8.0.136 → 8.0.137-alpha.0

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 (295) hide show
  1. package/constants/unified.js +189 -0
  2. package/package.json +1 -1
  3. package/services/getSchema.js +1 -1
  4. package/services/localStorageApi.js +1 -0
  5. package/tests/i18n.test.js +1 -1
  6. package/utils/common.js +2 -2
  7. package/utils/tagValidations.js +1 -1
  8. package/utils/tests/checkStore.test.js +1 -1
  9. package/utils/tests/customAuth.test.js +1 -1
  10. package/utils/transformerUtils.js +1 -1
  11. package/v2Components/CapTagList/index.js +9 -14
  12. package/v2Components/Carousel/style.scss +1 -1
  13. package/v2Components/EmailMobilePreview/index.js +2 -2
  14. package/v2Components/FormBuilder/index.js +2 -2
  15. package/v2Components/TemplatePreview/index.js +2 -1
  16. package/v2Containers/Cap/tests/saga.test.js +1 -1
  17. package/v2Containers/Email/index.js +1 -1
  18. package/v2Containers/FTP/index.js +1 -1
  19. package/v2Containers/Line/Container/Text/index.js +1 -1
  20. package/v2Containers/MobilePushNew/components/MediaUploaders.js +0 -1
  21. package/v2Containers/MobilePushNew/components/tests/MediaUploaders.test.js +271 -0
  22. package/v2Containers/MobilePushNew/components/tests/PlatformContentFields.test.js +189 -0
  23. package/v2Containers/MobilePushNew/index.scss +0 -7
  24. package/v2Containers/Sms/Create/index.js +2 -2
  25. package/v2Containers/Sms/Edit/index.js +1 -1
  26. package/v2Containers/TagList/index.js +1 -1
  27. package/v2Containers/TagList/utils.js +1 -1
  28. package/v2Containers/Templates/index.js +1 -1
  29. package/v2Containers/Templates/sagas.js +1 -1
  30. package/components/BreadCrumbs/index.js +0 -65
  31. package/components/BreadCrumbs/messages.js +0 -13
  32. package/components/CapTagList/index.js +0 -235
  33. package/components/CapTagList/messages.js +0 -45
  34. package/components/Card/_customCard.scss +0 -40
  35. package/components/Card/index.js +0 -78
  36. package/components/Card/tests/__snapshots__/index.test.js.snap +0 -22
  37. package/components/Card/tests/index.test.js +0 -20
  38. package/components/CardGrid/index.js +0 -71
  39. package/components/Ckeditor/index.js +0 -238
  40. package/components/Ckeditor/messages.js +0 -13
  41. package/components/Ckeditor/style.scss +0 -3
  42. package/components/Component/index.js +0 -29
  43. package/components/CustomPopOver/index.js +0 -81
  44. package/components/CustomPopOver/messages.js +0 -17
  45. package/components/DateFilter/index.js +0 -349
  46. package/components/DateFilter/messages.js +0 -57
  47. package/components/DateRange/index.js +0 -114
  48. package/components/DateRange/messages.js +0 -25
  49. package/components/Edmeditor/index.js +0 -65
  50. package/components/Edmeditor/messages.js +0 -13
  51. package/components/EmailPreview/_emailPreview.scss +0 -119
  52. package/components/EmailPreview/assets/images/iPad.svg +0 -10
  53. package/components/EmailPreview/assets/images/mobile.png +0 -0
  54. package/components/EmailPreview/index.js +0 -107
  55. package/components/EmailPreview/messages.js +0 -33
  56. package/components/Footer/index.js +0 -27
  57. package/components/Footer/messages.js +0 -13
  58. package/components/FormBuilder/_formBuilder.scss +0 -83
  59. package/components/FormBuilder/index.js +0 -3279
  60. package/components/FormBuilder/messages.js +0 -61
  61. package/components/Header/index.js +0 -44
  62. package/components/Header/messages.js +0 -29
  63. package/components/ImagePreview/_imagePreview.scss +0 -63
  64. package/components/ImagePreview/index.js +0 -52
  65. package/components/ImagePreview/messages.js +0 -17
  66. package/components/PageHeader/_pageHeader.scss +0 -22
  67. package/components/PageHeader/index.js +0 -37
  68. package/components/PageHeader/messages.js +0 -13
  69. package/components/Pagination/_pagination.scss +0 -5
  70. package/components/Pagination/index.js +0 -49
  71. package/components/PreviewSideBar/_previewsidebar.scss +0 -28
  72. package/components/PreviewSideBar/index.js +0 -152
  73. package/components/PreviewSideBar/messages.js +0 -41
  74. package/components/Sidebar/_sidebar.scss +0 -115
  75. package/components/Sidebar/index.js +0 -214
  76. package/components/Sidebar/messages.js +0 -21
  77. package/components/SlideBox/_slideBox.scss +0 -63
  78. package/components/SlideBox/index.js +0 -47
  79. package/components/SlideBox/tests/index.test.js +0 -103
  80. package/components/SmsEditor/index.js +0 -55
  81. package/components/SmsTest/index.js +0 -117
  82. package/components/SmsTest/messages.js +0 -21
  83. package/components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +0 -42
  84. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +0 -141
  85. package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +0 -21
  86. package/components/TemplatePreview/_templatePreview.scss +0 -642
  87. package/components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
  88. package/components/TemplatePreview/assets/images/androidPushMessage.svg +0 -45
  89. package/components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
  90. package/components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
  91. package/components/TemplatePreview/assets/images/iPhonePushMessage.svg +0 -135
  92. package/components/TemplatePreview/assets/images/mobile.svg +0 -24
  93. package/components/TemplatePreview/assets/images/sms-body.png +0 -0
  94. package/components/TemplatePreview/assets/images/sms-icon.png +0 -0
  95. package/components/TemplatePreview/assets/images/sms_mobile.png +0 -0
  96. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
  97. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +0 -16
  98. package/components/TemplatePreview/assets/images/user-icon.svg +0 -19
  99. package/components/TemplatePreview/assets/images/wechat-mobile.svg +0 -78
  100. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
  101. package/components/TemplatePreview/index.js +0 -617
  102. package/components/TemplatePreview/messages.js +0 -78
  103. package/components/Toastr/index.js +0 -60
  104. package/components/Toastr/messages.js +0 -13
  105. package/components/ToastrMessage/index.js +0 -113
  106. package/components/ToastrMessage/messages.js +0 -17
  107. package/components/TopBar/_topbar.scss +0 -46
  108. package/components/TopBar/assets/images/capillary_logo.png +0 -0
  109. package/components/TopBar/assets/images/old_capillary_logo.png +0 -0
  110. package/components/TopBar/index.js +0 -113
  111. package/components/TopBar/messages.js +0 -29
  112. package/containers/App/actions.js +0 -7
  113. package/containers/App/constants.js +0 -114
  114. package/containers/App/index.js +0 -52
  115. package/containers/App/reducer.js +0 -19
  116. package/containers/App/sagas.js +0 -31
  117. package/containers/App/selectors.js +0 -25
  118. package/containers/App/test/saga.test.js +0 -11
  119. package/containers/Assets/Gallery/_gallery.scss +0 -126
  120. package/containers/Assets/Gallery/actions.js +0 -37
  121. package/containers/Assets/Gallery/constants.js +0 -23
  122. package/containers/Assets/Gallery/index.js +0 -473
  123. package/containers/Assets/Gallery/messages.js +0 -93
  124. package/containers/Assets/Gallery/reducer.js +0 -81
  125. package/containers/Assets/Gallery/sagas.js +0 -80
  126. package/containers/Assets/Gallery/selectors.js +0 -25
  127. package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +0 -9
  128. package/containers/Assets/Gallery/tests/actions.test.js +0 -25
  129. package/containers/Assets/Gallery/tests/reducer.test.js +0 -96
  130. package/containers/Assets/Gallery/tests/saga.test.js +0 -157
  131. package/containers/Cap/actions.js +0 -66
  132. package/containers/Cap/constants.js +0 -25
  133. package/containers/Cap/index.js +0 -402
  134. package/containers/Cap/messages.js +0 -75
  135. package/containers/Cap/reducer.js +0 -113
  136. package/containers/Cap/sagas.js +0 -159
  137. package/containers/Cap/selectors.js +0 -75
  138. package/containers/Cap/tests/__snapshots__/index.test.js.snap +0 -2269
  139. package/containers/Cap/tests/index.test.js +0 -22
  140. package/containers/Cap/tests/saga.test.js +0 -284
  141. package/containers/Dashboard/actions.js +0 -15
  142. package/containers/Dashboard/constants.js +0 -7
  143. package/containers/Dashboard/index.js +0 -76
  144. package/containers/Dashboard/messages.js +0 -13
  145. package/containers/Dashboard/reducer.js +0 -21
  146. package/containers/Dashboard/sagas.js +0 -17
  147. package/containers/Dashboard/selectors.js +0 -25
  148. package/containers/Dashboard/test/saga.test.js +0 -9
  149. package/containers/Ebill/_ebill.scss +0 -5
  150. package/containers/Ebill/actions.js +0 -43
  151. package/containers/Ebill/constants.js +0 -20
  152. package/containers/Ebill/index.js +0 -1278
  153. package/containers/Ebill/messages.js +0 -77
  154. package/containers/Ebill/reducer.js +0 -72
  155. package/containers/Ebill/sagas.js +0 -74
  156. package/containers/Ebill/selectors.js +0 -25
  157. package/containers/Ebill/test/saga.test.js +0 -11
  158. package/containers/Email/_email.scss +0 -141
  159. package/containers/Email/actions.js +0 -81
  160. package/containers/Email/constants.js +0 -36
  161. package/containers/Email/index.js +0 -3325
  162. package/containers/Email/messages.js +0 -289
  163. package/containers/Email/reducer.js +0 -142
  164. package/containers/Email/sagas.js +0 -135
  165. package/containers/Email/selectors.js +0 -31
  166. package/containers/Email/test/saga.test.js +0 -671
  167. package/containers/LanguageProvider/actions.js +0 -17
  168. package/containers/LanguageProvider/constants.js +0 -8
  169. package/containers/LanguageProvider/index.js +0 -80
  170. package/containers/LanguageProvider/reducer.js +0 -30
  171. package/containers/LanguageProvider/selectors.js +0 -20
  172. package/containers/LanguageProvider/tests/actions.test.js +0 -19
  173. package/containers/LanguageProvider/tests/index.test.js +0 -78
  174. package/containers/LanguageProvider/tests/reducer.test.js +0 -20
  175. package/containers/LanguageProvider/tests/selectors.test.js +0 -15
  176. package/containers/Line/Create/_lineCreate.scss +0 -54
  177. package/containers/Line/Create/actions.js +0 -90
  178. package/containers/Line/Create/constants.js +0 -39
  179. package/containers/Line/Create/index.js +0 -836
  180. package/containers/Line/Create/messages.js +0 -189
  181. package/containers/Line/Create/reducer.js +0 -99
  182. package/containers/Line/Create/sagas.js +0 -121
  183. package/containers/Line/Create/selectors.js +0 -36
  184. package/containers/Line/Create/tests/saga.test.js +0 -202
  185. package/containers/Line/Edit/_lineEdit.scss +0 -35
  186. package/containers/Line/Edit/actions.js +0 -79
  187. package/containers/Line/Edit/constants.js +0 -27
  188. package/containers/Line/Edit/index.js +0 -1050
  189. package/containers/Line/Edit/messages.js +0 -177
  190. package/containers/Line/Edit/reducer.js +0 -83
  191. package/containers/Line/Edit/sagas.js +0 -80
  192. package/containers/Line/Edit/selectors.js +0 -29
  193. package/containers/Line/Edit/test/saga.test.js +0 -160
  194. package/containers/Login/assets/images/capillary_logo.png +0 -0
  195. package/containers/Login/components/LoginForm/index.js +0 -62
  196. package/containers/Login/components/LoginForm/messages.js +0 -33
  197. package/containers/Login/index.js +0 -130
  198. package/containers/Login/messages.js +0 -25
  199. package/containers/Login/selectors.js +0 -25
  200. package/containers/MobilePush/Create/_mobilePushCreate.scss +0 -39
  201. package/containers/MobilePush/Create/actions.js +0 -46
  202. package/containers/MobilePush/Create/constants.js +0 -23
  203. package/containers/MobilePush/Create/index.js +0 -2303
  204. package/containers/MobilePush/Create/messages.js +0 -269
  205. package/containers/MobilePush/Create/reducer.js +0 -70
  206. package/containers/MobilePush/Create/sagas.js +0 -74
  207. package/containers/MobilePush/Create/selectors.js +0 -28
  208. package/containers/MobilePush/Create/test/saga.test.js +0 -19
  209. package/containers/MobilePush/Edit/_mobilePushCreate.scss +0 -39
  210. package/containers/MobilePush/Edit/actions.js +0 -91
  211. package/containers/MobilePush/Edit/constants.js +0 -35
  212. package/containers/MobilePush/Edit/index.js +0 -2601
  213. package/containers/MobilePush/Edit/messages.js +0 -266
  214. package/containers/MobilePush/Edit/reducer.js +0 -112
  215. package/containers/MobilePush/Edit/sagas.js +0 -126
  216. package/containers/MobilePush/Edit/selectors.js +0 -29
  217. package/containers/MobilePush/Edit/tests/saga.test.js +0 -255
  218. package/containers/NotFoundPage/index.js +0 -25
  219. package/containers/NotFoundPage/messages.js +0 -13
  220. package/containers/NotFoundPage/tests/index.test.js +0 -17
  221. package/containers/Sms/Create/_smsCreate.scss +0 -42
  222. package/containers/Sms/Create/actions.js +0 -27
  223. package/containers/Sms/Create/constants.js +0 -16
  224. package/containers/Sms/Create/index.js +0 -1488
  225. package/containers/Sms/Create/messages.js +0 -109
  226. package/containers/Sms/Create/reducer.js +0 -41
  227. package/containers/Sms/Create/sagas.js +0 -40
  228. package/containers/Sms/Create/selectors.js +0 -28
  229. package/containers/Sms/Create/test/saga.test.js +0 -11
  230. package/containers/Sms/Edit/actions.js +0 -40
  231. package/containers/Sms/Edit/constants.js +0 -17
  232. package/containers/Sms/Edit/index.js +0 -1472
  233. package/containers/Sms/Edit/messages.js +0 -105
  234. package/containers/Sms/Edit/reducer.js +0 -50
  235. package/containers/Sms/Edit/sagas.js +0 -60
  236. package/containers/Sms/Edit/selectors.js +0 -32
  237. package/containers/Sms/Edit/test/saga.test.js +0 -13
  238. package/containers/TagList/_tagList.scss +0 -8
  239. package/containers/TagList/actions.js +0 -15
  240. package/containers/TagList/constants.js +0 -32
  241. package/containers/TagList/index.js +0 -236
  242. package/containers/TagList/messages.js +0 -13
  243. package/containers/TagList/reducer.js +0 -23
  244. package/containers/TagList/sagas.js +0 -11
  245. package/containers/TagList/selectors.js +0 -25
  246. package/containers/Templates/_templates.scss +0 -333
  247. package/containers/Templates/actions.js +0 -103
  248. package/containers/Templates/constants.js +0 -60
  249. package/containers/Templates/index.js +0 -1756
  250. package/containers/Templates/messages.js +0 -337
  251. package/containers/Templates/reducer.js +0 -142
  252. package/containers/Templates/sagas.js +0 -163
  253. package/containers/Templates/selectors.js +0 -28
  254. package/containers/Templates/test/saga.test.js +0 -241
  255. package/containers/WeChat/MapTemplates/_mapTemplates.scss +0 -8
  256. package/containers/WeChat/MapTemplates/actions.js +0 -52
  257. package/containers/WeChat/MapTemplates/constants.js +0 -28
  258. package/containers/WeChat/MapTemplates/index.js +0 -1610
  259. package/containers/WeChat/MapTemplates/messages.js +0 -157
  260. package/containers/WeChat/MapTemplates/reducer.js +0 -74
  261. package/containers/WeChat/MapTemplates/sagas.js +0 -84
  262. package/containers/WeChat/MapTemplates/selectors.js +0 -25
  263. package/containers/WeChat/MapTemplates/test/saga.test.js +0 -155
  264. package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +0 -57
  265. package/containers/WeChat/RichmediaTemplates/Create/actions.js +0 -36
  266. package/containers/WeChat/RichmediaTemplates/Create/constants.js +0 -15
  267. package/containers/WeChat/RichmediaTemplates/Create/index.js +0 -1071
  268. package/containers/WeChat/RichmediaTemplates/Create/messages.js +0 -165
  269. package/containers/WeChat/RichmediaTemplates/Create/reducer.js +0 -60
  270. package/containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +0 -497
  271. package/containers/WeChat/RichmediaTemplates/Create/sagas.js +0 -51
  272. package/containers/WeChat/RichmediaTemplates/Create/selectors.js +0 -37
  273. package/containers/WeChat/RichmediaTemplates/Create/test/saga.test.js +0 -13
  274. package/containers/WeChat/RichmediaTemplates/Edit/actions.js +0 -20
  275. package/containers/WeChat/RichmediaTemplates/Edit/constants.js +0 -10
  276. package/containers/WeChat/RichmediaTemplates/Edit/index.js +0 -136
  277. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +0 -13
  278. package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +0 -28
  279. package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +0 -36
  280. package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +0 -30
  281. package/containers/WeChat/RichmediaTemplates/Edit/test/saga.test.js +0 -12
  282. package/containers/WeChat/RichmediaTemplates/View/actions.js +0 -15
  283. package/containers/WeChat/RichmediaTemplates/View/constants.js +0 -7
  284. package/containers/WeChat/RichmediaTemplates/View/index.js +0 -47
  285. package/containers/WeChat/RichmediaTemplates/View/messages.js +0 -21
  286. package/containers/WeChat/RichmediaTemplates/View/reducer.js +0 -23
  287. package/containers/WeChat/RichmediaTemplates/View/sagas.js +0 -11
  288. package/containers/WeChat/RichmediaTemplates/View/selectors.js +0 -25
  289. package/utils/asyncInjectors.js +0 -78
  290. package/utils/callNativeEvent.js +0 -16
  291. package/utils/checkStore.js +0 -21
  292. package/utils/customAuthWrapper.js +0 -62
  293. package/utils/customConnectedAuthWrapper.js +0 -26
  294. package/utils/jed.js +0 -1497
  295. package/utils/smsCharCount.js +0 -351
@@ -1,671 +0,0 @@
1
- import { expectSaga } from 'redux-saga-test-plan';
2
- import { call, put } from 'redux-saga/effects';
3
- import { throwError } from 'redux-saga-test-plan/providers';
4
- import * as Api from '../../../services/api';
5
- import * as types from '../constants';
6
- import * as sagas from '../sagas';
7
-
8
- describe('Email Template Sagas', () => {
9
- // Increase timeout to prevent timeout warnings
10
- jest.setTimeout(1000);
11
-
12
- describe('createTemplate Saga', () => {
13
- const template = { name: 'Test Template', content: 'Test Content' };
14
-
15
- it.concurrent('should handle successful template creation', () => {
16
- const generator = sagas.createTemplate(template);
17
- const response = {
18
- response: { id: 1, name: 'Test Template' },
19
- status: { code: 200 },
20
- };
21
-
22
- expect(generator.next().value)
23
- .toEqual(call(Api.createEmailTemplate, template));
24
-
25
- expect(generator.next(response).value)
26
- .toEqual(put({
27
- type: types.CREATE_TEMPLATE_SUCCESS,
28
- data: response.response,
29
- statusCode: response.status.code,
30
- errorMsg: undefined,
31
- }));
32
-
33
- expect(generator.next().done).toBeTruthy();
34
- });
35
-
36
- it.concurrent('should handle server error with status code 500', () => {
37
- const generator = sagas.createTemplate(template);
38
- const response = {
39
- message: 'Internal Server Error',
40
- status: { code: 500 },
41
- };
42
-
43
- expect(generator.next().value)
44
- .toEqual(call(Api.createEmailTemplate, template));
45
-
46
- expect(generator.next(response).value)
47
- .toEqual(put({
48
- type: types.CREATE_TEMPLATE_SUCCESS,
49
- data: undefined,
50
- statusCode: 500,
51
- errorMsg: 'Internal Server Error',
52
- }));
53
-
54
- expect(generator.next().done).toBeTruthy();
55
- });
56
-
57
- it.concurrent('should handle API error response with message', () => {
58
- const generator = sagas.createTemplate(template);
59
- const response = {
60
- message: 'Validation Error',
61
- status: { code: 400 },
62
- };
63
-
64
- expect(generator.next().value)
65
- .toEqual(call(Api.createEmailTemplate, template));
66
-
67
- expect(generator.next(response).value)
68
- .toEqual(put({
69
- type: types.CREATE_TEMPLATE_SUCCESS,
70
- data: undefined,
71
- statusCode: 400,
72
- errorMsg: 'Validation Error',
73
- }));
74
-
75
- expect(generator.next().done).toBeTruthy();
76
- });
77
-
78
- it.concurrent('should handle API call exception', () => {
79
- const generator = sagas.createTemplate(template);
80
- const error = new Error('Network Error');
81
-
82
- expect(generator.next().value)
83
- .toEqual(call(Api.createEmailTemplate, template));
84
-
85
- expect(generator.throw(error).value)
86
- .toEqual(put({
87
- type: types.CREATE_TEMPLATE_FAILURE,
88
- error,
89
- errorMsg: undefined,
90
- }));
91
-
92
- expect(generator.next().done).toBeTruthy();
93
- });
94
-
95
- it.concurrent('should set empty string statusCode when status is null', () => {
96
- const generator = sagas.createTemplate(template);
97
- const response = {
98
- response: { id: 1, name: 'Test Template' },
99
- status: null,
100
- message: 'Success',
101
- };
102
-
103
- expect(generator.next().value)
104
- .toEqual(call(Api.createEmailTemplate, template));
105
-
106
- expect(generator.next(response).value)
107
- .toEqual(put({
108
- type: types.CREATE_TEMPLATE_SUCCESS,
109
- data: response.response,
110
- statusCode: "",
111
- errorMsg: response.message,
112
- }));
113
-
114
- expect(generator.next().done).toBeTruthy();
115
- });
116
-
117
- it.concurrent('should set empty string statusCode when status is undefined', () => {
118
- const generator = sagas.createTemplate(template);
119
- const response = {
120
- response: { id: 1, name: 'Test Template' },
121
- message: 'Success',
122
- };
123
-
124
- expect(generator.next().value)
125
- .toEqual(call(Api.createEmailTemplate, template));
126
-
127
- expect(generator.next(response).value)
128
- .toEqual(put({
129
- type: types.CREATE_TEMPLATE_SUCCESS,
130
- data: response.response,
131
- statusCode: "",
132
- errorMsg: response.message,
133
- }));
134
-
135
- expect(generator.next().done).toBeTruthy();
136
- });
137
-
138
- it.concurrent('should set empty string statusCode when status.code is null', () => {
139
- const generator = sagas.createTemplate(template);
140
- const response = {
141
- response: { id: 1, name: 'Test Template' },
142
- status: { code: null },
143
- message: 'Success',
144
- };
145
-
146
- expect(generator.next().value)
147
- .toEqual(call(Api.createEmailTemplate, template));
148
-
149
- expect(generator.next(response).value)
150
- .toEqual(put({
151
- type: types.CREATE_TEMPLATE_SUCCESS,
152
- data: response.response,
153
- statusCode: null,
154
- errorMsg: response.message,
155
- }));
156
-
157
- expect(generator.next().done).toBeTruthy();
158
- });
159
-
160
- it.concurrent('should set empty string statusCode when status.code is undefined', () => {
161
- const generator = sagas.createTemplate(template);
162
- const response = {
163
- response: { id: 1, name: 'Test Template' },
164
- status: { code: undefined },
165
- message: 'Success',
166
- };
167
-
168
- expect(generator.next().value)
169
- .toEqual(call(Api.createEmailTemplate, template));
170
-
171
- expect(generator.next(response).value)
172
- .toEqual(put({
173
- type: types.CREATE_TEMPLATE_SUCCESS,
174
- data: response.response,
175
- statusCode: undefined,
176
- errorMsg: response.message,
177
- }));
178
-
179
- expect(generator.next().done).toBeTruthy();
180
- });
181
-
182
- it.concurrent('should set empty string statusCode when status is an empty object', () => {
183
- const generator = sagas.createTemplate(template);
184
- const response = {
185
- response: { id: 1, name: 'Test Template' },
186
- status: {},
187
- message: 'Success',
188
- };
189
-
190
- expect(generator.next().value)
191
- .toEqual(call(Api.createEmailTemplate, template));
192
-
193
- expect(generator.next(response).value)
194
- .toEqual(put({
195
- type: types.CREATE_TEMPLATE_SUCCESS,
196
- data: response.response,
197
- statusCode: undefined,
198
- errorMsg: response.message,
199
- }));
200
-
201
- expect(generator.next().done).toBeTruthy();
202
- });
203
- });
204
-
205
- describe('duplicateTemplate saga', () => {
206
- const templateId = 123;
207
- const channel = 'email';
208
-
209
- it.concurrent('should handle successful template duplication with complete response', () => {
210
- const generator = sagas.duplicateTemplate(templateId, channel);
211
- const response = {
212
- response: { id: 456, name: 'Duplicated Template' },
213
- status: { code: 200 },
214
- message: 'Template duplicated successfully',
215
- };
216
-
217
- expect(generator.next().value)
218
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
219
-
220
- expect(generator.next(response).value)
221
- .toEqual(put({
222
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
223
- data: response.response,
224
- statusCode: response.status.code,
225
- errorMsg: response.message,
226
- }));
227
-
228
- expect(generator.next().done).toBeTruthy();
229
- });
230
-
231
- it.concurrent('should handle response with missing status object', () => {
232
- const generator = sagas.duplicateTemplate(templateId, channel);
233
- const response = {
234
- response: { id: 456, name: 'Duplicated Template' },
235
- message: 'Success without status',
236
- };
237
-
238
- expect(generator.next().value)
239
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
240
-
241
- expect(generator.next(response).value)
242
- .toEqual(put({
243
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
244
- data: response.response,
245
- statusCode: '',
246
- errorMsg: response.message,
247
- }));
248
-
249
- expect(generator.next().done).toBeTruthy();
250
- });
251
-
252
- it.concurrent('should handle response with empty status object', () => {
253
- const generator = sagas.duplicateTemplate(templateId, channel);
254
- const response = {
255
- response: { id: 456, name: 'Duplicated Template' },
256
- status: {},
257
- message: 'Success with empty status',
258
- };
259
-
260
- expect(generator.next().value)
261
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
262
-
263
- expect(generator.next(response).value)
264
- .toEqual(put({
265
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
266
- data: response.response,
267
- statusCode: undefined,
268
- errorMsg: response.message,
269
- }));
270
-
271
- expect(generator.next().done).toBeTruthy();
272
- });
273
-
274
- it.concurrent('should handle response with null status', () => {
275
- const generator = sagas.duplicateTemplate(templateId, channel);
276
- const response = {
277
- response: { id: 456, name: 'Duplicated Template' },
278
- status: null,
279
- message: 'Success with null status',
280
- };
281
-
282
- expect(generator.next().value)
283
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
284
-
285
- expect(generator.next(response).value)
286
- .toEqual(put({
287
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
288
- data: response.response,
289
- statusCode: '',
290
- errorMsg: response.message,
291
- }));
292
-
293
- expect(generator.next().done).toBeTruthy();
294
- });
295
-
296
- it.concurrent('should handle response with undefined status code', () => {
297
- const generator = sagas.duplicateTemplate(templateId, channel);
298
- const response = {
299
- response: { id: 456, name: 'Duplicated Template' },
300
- status: { code: undefined },
301
- message: 'Success with undefined status code',
302
- };
303
-
304
- expect(generator.next().value)
305
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
306
-
307
- expect(generator.next(response).value)
308
- .toEqual(put({
309
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
310
- data: response.response,
311
- statusCode: undefined,
312
- errorMsg: response.message,
313
- }));
314
-
315
- expect(generator.next().done).toBeTruthy();
316
- });
317
-
318
- it.concurrent('should handle response with missing response data', () => {
319
- const generator = sagas.duplicateTemplate(templateId, channel);
320
- const response = {
321
- status: { code: 200 },
322
- message: 'Success but no response data',
323
- };
324
-
325
- expect(generator.next().value)
326
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
327
-
328
- expect(generator.next(response).value)
329
- .toEqual(put({
330
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
331
- data: undefined,
332
- statusCode: response.status.code,
333
- errorMsg: response.message,
334
- }));
335
-
336
- expect(generator.next().done).toBeTruthy();
337
- });
338
-
339
- it.concurrent('should handle error response', () => {
340
- const generator = sagas.duplicateTemplate(templateId, channel);
341
- const error = new Error('Duplication failed');
342
-
343
- expect(generator.next().value)
344
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
345
-
346
- expect(generator.throw(error).value)
347
- .toEqual(put({
348
- type: types.DUPLICATE_TEMPLATE_FAILURE,
349
- error,
350
- errorMsg: undefined,
351
- }));
352
-
353
- expect(generator.next().done).toBeTruthy();
354
- });
355
-
356
- it.concurrent('should set errorMsg when status code is 500', () => {
357
- const generator = sagas.duplicateTemplate(templateId, channel);
358
- const response = {
359
- response: { id: 456 },
360
- status: { code: 500 },
361
- message: 'Internal Server Error',
362
- };
363
-
364
- expect(generator.next().value)
365
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
366
-
367
- expect(generator.next(response).value)
368
- .toEqual(put({
369
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
370
- data: response.response,
371
- statusCode: 500,
372
- errorMsg: 'Internal Server Error',
373
- }));
374
-
375
- expect(generator.next().done).toBeTruthy();
376
- });
377
-
378
- it.concurrent('should set errorMsg when both message exists and status code is 500', () => {
379
- const generator = sagas.duplicateTemplate(templateId, channel);
380
- const response = {
381
- response: null,
382
- status: { code: 500 },
383
- message: 'Custom Error Message',
384
- };
385
-
386
- expect(generator.next().value)
387
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
388
-
389
- expect(generator.next(response).value)
390
- .toEqual(put({
391
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
392
- data: null,
393
- statusCode: 500,
394
- errorMsg: 'Custom Error Message',
395
- }));
396
-
397
- expect(generator.next().done).toBeTruthy();
398
- });
399
-
400
- it.concurrent('should set errorMsg when message exists but status code is not 500', () => {
401
- const generator = sagas.duplicateTemplate(templateId, channel);
402
- const response = {
403
- response: { id: 456 },
404
- status: { code: 400 },
405
- message: 'Bad Request Error',
406
- };
407
-
408
- expect(generator.next().value)
409
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
410
-
411
- expect(generator.next(response).value)
412
- .toEqual(put({
413
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
414
- data: response.response,
415
- statusCode: 400,
416
- errorMsg: 'Bad Request Error',
417
- }));
418
-
419
- expect(generator.next().done).toBeTruthy();
420
- });
421
-
422
- it.concurrent('should handle case when status code is 500 but no message exists', () => {
423
- const generator = sagas.duplicateTemplate(templateId, channel);
424
- const response = {
425
- response: { id: 456 },
426
- status: { code: 500 },
427
- };
428
-
429
- expect(generator.next().value)
430
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
431
-
432
- expect(generator.next(response).value)
433
- .toEqual(put({
434
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
435
- data: response.response,
436
- statusCode: 500,
437
- errorMsg: undefined,
438
- }));
439
-
440
- expect(generator.next().done).toBeTruthy();
441
- });
442
-
443
- it.concurrent('should not set errorMsg when no message and status code is not 500', () => {
444
- const generator = sagas.duplicateTemplate(templateId, channel);
445
- const response = {
446
- response: { id: 456 },
447
- status: { code: 200 },
448
- };
449
-
450
- expect(generator.next().value)
451
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
452
-
453
- expect(generator.next(response).value)
454
- .toEqual(put({
455
- type: types.DUPLICATE_TEMPLATE_SUCCESS,
456
- data: response.response,
457
- statusCode: 200,
458
- errorMsg: undefined,
459
- }));
460
-
461
- expect(generator.next().done).toBeTruthy();
462
- });
463
-
464
- it.concurrent('should handle case when accessing status.code throws error', () => {
465
- const generator = sagas.duplicateTemplate(templateId, channel);
466
- const error = new TypeError("Cannot read property 'code' of undefined");
467
-
468
- expect(generator.next().value)
469
- .toEqual(call(Api.duplicateTemplate, templateId, channel));
470
-
471
- expect(generator.throw(error).value)
472
- .toEqual(put({
473
- type: types.DUPLICATE_TEMPLATE_FAILURE,
474
- error,
475
- errorMsg: undefined,
476
- }));
477
-
478
- expect(generator.next().done).toBeTruthy();
479
- });
480
- });
481
-
482
- describe('getTemplateDetails Saga', () => {
483
- const id = '123';
484
-
485
- it.concurrent('handles fetching template details successfully', () => {
486
- const fakeResponse = {
487
- response: { id: 123, name: 'Detailed Template' },
488
- };
489
-
490
- return expectSaga(sagas.getTemplateDetails, id)
491
- .provide([
492
- [call(Api.getTemplateDetails, id), fakeResponse],
493
- ])
494
- .put({
495
- type: types.GET_TEMPLATE_DETAILS_SUCCESS,
496
- data: fakeResponse.response,
497
- })
498
- .run();
499
- });
500
-
501
- it.concurrent('handles failure in fetching template details', () => {
502
- const error = new Error('Fetch failed');
503
-
504
- return expectSaga(sagas.getTemplateDetails, id)
505
- .provide([
506
- [call(Api.getTemplateDetails, id), throwError(error)],
507
- ])
508
- .put({
509
- type: types.GET_TEMPLATE_DETAILS_FAILURE,
510
- error,
511
- })
512
- .run();
513
- });
514
- });
515
-
516
- describe('getAllAssets Saga', () => {
517
- const mockAssets = [{ id: 1, url: 'http://example.com/asset.jpg' }];
518
- const mockError = new Error('Fetch failed');
519
- const assetType = 'image';
520
- const queryParams = { page: 1 };
521
-
522
- it.concurrent('handles fetching all assets successfully', () => {
523
- const result = {
524
- response: { data: { data: mockAssets } },
525
- };
526
- return expectSaga(sagas.getAllAssets, { assetType, queryParams })
527
- .provide([
528
- [call(Api.getAllAssets, { assetType, queryParams }), result],
529
- ])
530
- .put({
531
- type: types.GET_ALL_ASSETS_SUCCESS,
532
- data: { data: { data: mockAssets } }, // Match the exact nested structure
533
- isReset: true,
534
- })
535
- .run(500);
536
- });
537
-
538
- it.concurrent('handles failure in fetching all assets', () => expectSaga(sagas.getAllAssets, { assetType, queryParams })
539
- .provide([
540
- [call(Api.getAllAssets, { assetType, queryParams }), throwError(mockError)],
541
- ])
542
- .put({
543
- type: types.GET_ALL_ASSETS_FAILURE,
544
- error: mockError,
545
- })
546
- .run(500));
547
- });
548
-
549
- describe('getCmsSetting Saga', () => {
550
- const params = {
551
- cmsType: 'email', projectId: '123', cmsMode: 'edit', langId: 'en', isEdmSupport: true,
552
- };
553
-
554
- it.concurrent('handles fetching CMS settings successfully', () => {
555
- const fakeResponse = {
556
- data: {
557
- response: {
558
- cmsDetails: { id: 1, name: 'CMS Config' },
559
- },
560
- },
561
- };
562
-
563
- return expectSaga(sagas.getCmsSetting, params)
564
- .provide([
565
- [call(Api.getCmsTemplateSettings, params.cmsType, params.projectId, params.cmsMode, params.langId, params.isEdmSupport), fakeResponse],
566
- ])
567
- .put({
568
- type: types.GET_CMS_EDITOR_DETAILS_SUCCESS,
569
- settings: fakeResponse.data.response.cmsDetails,
570
- })
571
- .run();
572
- });
573
-
574
- it.concurrent('handles failure in fetching CMS settings', () => {
575
- const error = new Error('Fetch failed');
576
-
577
- return expectSaga(sagas.getCmsSetting, params)
578
- .provide([
579
- [call(Api.getCmsTemplateSettings, params.cmsType, params.projectId, params.cmsMode, params.langId, params.isEdmSupport), throwError(error)],
580
- ])
581
- .put({
582
- type: types.GET_CMS_EDITOR_DETAILS_FAILURE,
583
- error,
584
- })
585
- .run();
586
- });
587
- });
588
-
589
- describe('getCmsData Saga', () => {
590
- const params = { cmsType: 'email', projectId: '123', langId: 'en' };
591
-
592
- it.concurrent('handles fetching CMS data successfully', () => {
593
- const fakeResponse = {
594
- data: {
595
- response: {
596
- data: { id: 1, content: 'Content here' },
597
- langId: 'en',
598
- },
599
- },
600
- };
601
-
602
- return expectSaga(sagas.getCmsData, params)
603
- .provide([
604
- [call(Api.getCmsTemplateData, params.cmsType, params.projectId, params.langId), fakeResponse],
605
- ])
606
- .put({
607
- type: types.GET_CMS_EDITOR_DATA_SUCCESS,
608
- data: fakeResponse.data.response.data,
609
- langId: fakeResponse.data.response.langId,
610
- })
611
- .run();
612
- });
613
-
614
- it.concurrent('handles failure in fetching CMS data', () => {
615
- const error = new Error('Fetch failed');
616
-
617
- return expectSaga(sagas.getCmsData, params)
618
- .provide([
619
- [call(Api.getCmsTemplateData, params.cmsType, params.projectId, params.langId), throwError(error)],
620
- ])
621
- .put({
622
- type: types.GET_CMS_EDITOR_DATA_FAILURE,
623
- error,
624
- })
625
- .run();
626
- });
627
- });
628
-
629
- describe('uploadAsset Saga', () => {
630
- const file = new Blob();
631
- const assetType = 'image';
632
- const fileParams = { param1: 'value1' };
633
-
634
- it.concurrent('handles successful asset upload', () => {
635
- const fakeResponse = {
636
- response: { asset: { id: 1, url: 'http://example.com/asset.jpg' } },
637
- status: { code: '200' },
638
- };
639
-
640
- return expectSaga(sagas.uploadAsset, file, assetType, fileParams)
641
- .provide([
642
- [call(Api.uploadFile, file, assetType, fileParams), fakeResponse],
643
- ])
644
- .put({
645
- type: types.UPLOAD_ASSET_SUCCESS,
646
- data: fakeResponse.response.asset,
647
- statusCode: '200',
648
- })
649
- .run();
650
- });
651
-
652
- it.concurrent('handles failure in asset upload', () => {
653
- const error = new Error('Failed to upload asset');
654
-
655
- return expectSaga(sagas.uploadAsset, file, assetType, fileParams)
656
- .provide([
657
- [call(Api.uploadFile, file, assetType, fileParams), throwError(error)],
658
- ])
659
- .put({
660
- type: types.UPLOAD_ASSET_FAILURE,
661
- error,
662
- })
663
- .run();
664
- });
665
- });
666
-
667
- describe('Combined emailSaga', () => {
668
- it.concurrent('should initialize all email-related watcher sagas without error', () => expectSaga(sagas.emailSaga)
669
- .run());
670
- });
671
- });
@@ -1,17 +0,0 @@
1
- /*
2
- *
3
- * LanguageProvider actions
4
- *
5
- */
6
-
7
- import {
8
- CHANGE_LOCALE,
9
- } from './constants';
10
-
11
- export function changeLocale(languageLocale) {
12
-
13
- return {
14
- type: CHANGE_LOCALE,
15
- locale: languageLocale,
16
- };
17
- }
@@ -1,8 +0,0 @@
1
- /*
2
- *
3
- * LanguageProvider constants
4
- *
5
- */
6
-
7
- export const CHANGE_LOCALE = 'app/LanguageToggle/CHANGE_LOCALE';
8
- export const DEFAULT_LOCALE = 'en';