@capillarytech/creatives-library 8.0.163 → 8.0.164

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 (297) hide show
  1. package/constants/unified.js +189 -0
  2. package/index.js +4 -2
  3. package/package.json +1 -1
  4. package/routes.js +136 -202
  5. package/services/getSchema.js +1 -1
  6. package/services/localStorageApi.js +1 -0
  7. package/tests/i18n.test.js +1 -1
  8. package/utils/authWrapper.js +1 -1
  9. package/utils/common.js +2 -2
  10. package/utils/tagValidations.js +1 -1
  11. package/utils/tests/authWrapper.test.js +1 -1
  12. package/utils/tests/checkStore.test.js +1 -1
  13. package/utils/tests/customAuth.test.js +1 -1
  14. package/utils/transformerUtils.js +1 -1
  15. package/v2Components/CapTagList/index.js +9 -14
  16. package/v2Components/Carousel/style.scss +1 -1
  17. package/v2Components/EmailMobilePreview/index.js +2 -2
  18. package/v2Components/FormBuilder/index.js +2 -2
  19. package/v2Components/TemplatePreview/index.js +2 -1
  20. package/v2Components/TestAndPreviewSlidebox/index.js +109 -178
  21. package/v2Containers/Cap/tests/saga.test.js +1 -1
  22. package/v2Containers/CreativesContainer/index.js +2 -0
  23. package/v2Containers/Email/index.js +1 -1
  24. package/v2Containers/FTP/index.js +1 -1
  25. package/v2Containers/Line/Container/Text/index.js +1 -1
  26. package/v2Containers/Sms/Create/index.js +1 -1
  27. package/v2Containers/Sms/Edit/index.js +1 -1
  28. package/v2Containers/TagList/index.js +1 -1
  29. package/v2Containers/TagList/utils.js +1 -1
  30. package/v2Containers/Templates/index.js +1 -1
  31. package/v2Containers/Templates/sagas.js +1 -1
  32. package/v2Containers/Whatsapp/constants.js +1 -1
  33. package/v2Containers/Whatsapp/tests/index.test.js +1 -1
  34. package/components/BreadCrumbs/index.js +0 -65
  35. package/components/BreadCrumbs/messages.js +0 -13
  36. package/components/CapTagList/index.js +0 -235
  37. package/components/CapTagList/messages.js +0 -45
  38. package/components/Card/_customCard.scss +0 -40
  39. package/components/Card/index.js +0 -78
  40. package/components/Card/tests/__snapshots__/index.test.js.snap +0 -22
  41. package/components/Card/tests/index.test.js +0 -20
  42. package/components/CardGrid/index.js +0 -71
  43. package/components/Ckeditor/index.js +0 -238
  44. package/components/Ckeditor/messages.js +0 -13
  45. package/components/Ckeditor/style.scss +0 -3
  46. package/components/Component/index.js +0 -29
  47. package/components/CustomPopOver/index.js +0 -81
  48. package/components/CustomPopOver/messages.js +0 -17
  49. package/components/DateFilter/index.js +0 -349
  50. package/components/DateFilter/messages.js +0 -57
  51. package/components/DateRange/index.js +0 -114
  52. package/components/DateRange/messages.js +0 -25
  53. package/components/Edmeditor/index.js +0 -65
  54. package/components/Edmeditor/messages.js +0 -13
  55. package/components/EmailPreview/_emailPreview.scss +0 -119
  56. package/components/EmailPreview/assets/images/iPad.svg +0 -10
  57. package/components/EmailPreview/assets/images/mobile.png +0 -0
  58. package/components/EmailPreview/index.js +0 -107
  59. package/components/EmailPreview/messages.js +0 -33
  60. package/components/Footer/index.js +0 -27
  61. package/components/Footer/messages.js +0 -13
  62. package/components/FormBuilder/_formBuilder.scss +0 -83
  63. package/components/FormBuilder/index.js +0 -3279
  64. package/components/FormBuilder/messages.js +0 -61
  65. package/components/Header/index.js +0 -44
  66. package/components/Header/messages.js +0 -29
  67. package/components/ImagePreview/_imagePreview.scss +0 -63
  68. package/components/ImagePreview/index.js +0 -52
  69. package/components/ImagePreview/messages.js +0 -17
  70. package/components/PageHeader/_pageHeader.scss +0 -22
  71. package/components/PageHeader/index.js +0 -37
  72. package/components/PageHeader/messages.js +0 -13
  73. package/components/Pagination/_pagination.scss +0 -5
  74. package/components/Pagination/index.js +0 -49
  75. package/components/PreviewSideBar/_previewsidebar.scss +0 -28
  76. package/components/PreviewSideBar/index.js +0 -152
  77. package/components/PreviewSideBar/messages.js +0 -41
  78. package/components/Sidebar/_sidebar.scss +0 -115
  79. package/components/Sidebar/index.js +0 -214
  80. package/components/Sidebar/messages.js +0 -21
  81. package/components/SlideBox/_slideBox.scss +0 -63
  82. package/components/SlideBox/index.js +0 -47
  83. package/components/SlideBox/tests/index.test.js +0 -103
  84. package/components/SmsEditor/index.js +0 -55
  85. package/components/SmsTest/index.js +0 -117
  86. package/components/SmsTest/messages.js +0 -21
  87. package/components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +0 -42
  88. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +0 -141
  89. package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +0 -21
  90. package/components/TemplatePreview/_templatePreview.scss +0 -642
  91. package/components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
  92. package/components/TemplatePreview/assets/images/androidPushMessage.svg +0 -45
  93. package/components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
  94. package/components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
  95. package/components/TemplatePreview/assets/images/iPhonePushMessage.svg +0 -135
  96. package/components/TemplatePreview/assets/images/mobile.svg +0 -24
  97. package/components/TemplatePreview/assets/images/sms-body.png +0 -0
  98. package/components/TemplatePreview/assets/images/sms-icon.png +0 -0
  99. package/components/TemplatePreview/assets/images/sms_mobile.png +0 -0
  100. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
  101. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +0 -16
  102. package/components/TemplatePreview/assets/images/user-icon.svg +0 -19
  103. package/components/TemplatePreview/assets/images/wechat-mobile.svg +0 -78
  104. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
  105. package/components/TemplatePreview/index.js +0 -617
  106. package/components/TemplatePreview/messages.js +0 -78
  107. package/components/Toastr/index.js +0 -60
  108. package/components/Toastr/messages.js +0 -13
  109. package/components/ToastrMessage/index.js +0 -113
  110. package/components/ToastrMessage/messages.js +0 -17
  111. package/components/TopBar/_topbar.scss +0 -46
  112. package/components/TopBar/assets/images/capillary_logo.png +0 -0
  113. package/components/TopBar/assets/images/old_capillary_logo.png +0 -0
  114. package/components/TopBar/index.js +0 -113
  115. package/components/TopBar/messages.js +0 -29
  116. package/containers/App/actions.js +0 -7
  117. package/containers/App/constants.js +0 -114
  118. package/containers/App/index.js +0 -52
  119. package/containers/App/reducer.js +0 -19
  120. package/containers/App/sagas.js +0 -31
  121. package/containers/App/selectors.js +0 -25
  122. package/containers/App/test/saga.test.js +0 -11
  123. package/containers/Assets/Gallery/_gallery.scss +0 -126
  124. package/containers/Assets/Gallery/actions.js +0 -37
  125. package/containers/Assets/Gallery/constants.js +0 -23
  126. package/containers/Assets/Gallery/index.js +0 -473
  127. package/containers/Assets/Gallery/messages.js +0 -93
  128. package/containers/Assets/Gallery/reducer.js +0 -81
  129. package/containers/Assets/Gallery/sagas.js +0 -80
  130. package/containers/Assets/Gallery/selectors.js +0 -25
  131. package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +0 -9
  132. package/containers/Assets/Gallery/tests/actions.test.js +0 -25
  133. package/containers/Assets/Gallery/tests/reducer.test.js +0 -96
  134. package/containers/Assets/Gallery/tests/saga.test.js +0 -157
  135. package/containers/Cap/actions.js +0 -66
  136. package/containers/Cap/constants.js +0 -25
  137. package/containers/Cap/index.js +0 -402
  138. package/containers/Cap/messages.js +0 -75
  139. package/containers/Cap/reducer.js +0 -113
  140. package/containers/Cap/sagas.js +0 -159
  141. package/containers/Cap/selectors.js +0 -75
  142. package/containers/Cap/tests/__snapshots__/index.test.js.snap +0 -2270
  143. package/containers/Cap/tests/index.test.js +0 -22
  144. package/containers/Cap/tests/saga.test.js +0 -284
  145. package/containers/Dashboard/actions.js +0 -15
  146. package/containers/Dashboard/constants.js +0 -7
  147. package/containers/Dashboard/index.js +0 -76
  148. package/containers/Dashboard/messages.js +0 -13
  149. package/containers/Dashboard/reducer.js +0 -21
  150. package/containers/Dashboard/sagas.js +0 -17
  151. package/containers/Dashboard/selectors.js +0 -25
  152. package/containers/Dashboard/test/saga.test.js +0 -9
  153. package/containers/Ebill/_ebill.scss +0 -5
  154. package/containers/Ebill/actions.js +0 -43
  155. package/containers/Ebill/constants.js +0 -20
  156. package/containers/Ebill/index.js +0 -1278
  157. package/containers/Ebill/messages.js +0 -77
  158. package/containers/Ebill/reducer.js +0 -72
  159. package/containers/Ebill/sagas.js +0 -74
  160. package/containers/Ebill/selectors.js +0 -25
  161. package/containers/Ebill/test/saga.test.js +0 -11
  162. package/containers/Email/_email.scss +0 -141
  163. package/containers/Email/actions.js +0 -81
  164. package/containers/Email/constants.js +0 -36
  165. package/containers/Email/index.js +0 -3325
  166. package/containers/Email/messages.js +0 -289
  167. package/containers/Email/reducer.js +0 -142
  168. package/containers/Email/sagas.js +0 -135
  169. package/containers/Email/selectors.js +0 -31
  170. package/containers/Email/test/saga.test.js +0 -671
  171. package/containers/LanguageProvider/actions.js +0 -17
  172. package/containers/LanguageProvider/constants.js +0 -8
  173. package/containers/LanguageProvider/index.js +0 -80
  174. package/containers/LanguageProvider/reducer.js +0 -30
  175. package/containers/LanguageProvider/selectors.js +0 -20
  176. package/containers/LanguageProvider/tests/actions.test.js +0 -19
  177. package/containers/LanguageProvider/tests/index.test.js +0 -78
  178. package/containers/LanguageProvider/tests/reducer.test.js +0 -20
  179. package/containers/LanguageProvider/tests/selectors.test.js +0 -15
  180. package/containers/Line/Create/_lineCreate.scss +0 -54
  181. package/containers/Line/Create/actions.js +0 -90
  182. package/containers/Line/Create/constants.js +0 -39
  183. package/containers/Line/Create/index.js +0 -836
  184. package/containers/Line/Create/messages.js +0 -189
  185. package/containers/Line/Create/reducer.js +0 -99
  186. package/containers/Line/Create/sagas.js +0 -121
  187. package/containers/Line/Create/selectors.js +0 -36
  188. package/containers/Line/Create/tests/saga.test.js +0 -202
  189. package/containers/Line/Edit/_lineEdit.scss +0 -35
  190. package/containers/Line/Edit/actions.js +0 -79
  191. package/containers/Line/Edit/constants.js +0 -27
  192. package/containers/Line/Edit/index.js +0 -1050
  193. package/containers/Line/Edit/messages.js +0 -177
  194. package/containers/Line/Edit/reducer.js +0 -83
  195. package/containers/Line/Edit/sagas.js +0 -80
  196. package/containers/Line/Edit/selectors.js +0 -29
  197. package/containers/Line/Edit/test/saga.test.js +0 -160
  198. package/containers/Login/assets/images/capillary_logo.png +0 -0
  199. package/containers/Login/components/LoginForm/index.js +0 -62
  200. package/containers/Login/components/LoginForm/messages.js +0 -33
  201. package/containers/Login/index.js +0 -130
  202. package/containers/Login/messages.js +0 -25
  203. package/containers/Login/selectors.js +0 -25
  204. package/containers/MobilePush/Create/_mobilePushCreate.scss +0 -39
  205. package/containers/MobilePush/Create/actions.js +0 -46
  206. package/containers/MobilePush/Create/constants.js +0 -23
  207. package/containers/MobilePush/Create/index.js +0 -2303
  208. package/containers/MobilePush/Create/messages.js +0 -269
  209. package/containers/MobilePush/Create/reducer.js +0 -70
  210. package/containers/MobilePush/Create/sagas.js +0 -74
  211. package/containers/MobilePush/Create/selectors.js +0 -28
  212. package/containers/MobilePush/Create/test/saga.test.js +0 -19
  213. package/containers/MobilePush/Edit/_mobilePushCreate.scss +0 -39
  214. package/containers/MobilePush/Edit/actions.js +0 -91
  215. package/containers/MobilePush/Edit/constants.js +0 -35
  216. package/containers/MobilePush/Edit/index.js +0 -2601
  217. package/containers/MobilePush/Edit/messages.js +0 -266
  218. package/containers/MobilePush/Edit/reducer.js +0 -112
  219. package/containers/MobilePush/Edit/sagas.js +0 -126
  220. package/containers/MobilePush/Edit/selectors.js +0 -29
  221. package/containers/MobilePush/Edit/tests/saga.test.js +0 -255
  222. package/containers/NotFoundPage/index.js +0 -25
  223. package/containers/NotFoundPage/messages.js +0 -13
  224. package/containers/NotFoundPage/tests/index.test.js +0 -17
  225. package/containers/Sms/Create/_smsCreate.scss +0 -42
  226. package/containers/Sms/Create/actions.js +0 -27
  227. package/containers/Sms/Create/constants.js +0 -16
  228. package/containers/Sms/Create/index.js +0 -1488
  229. package/containers/Sms/Create/messages.js +0 -109
  230. package/containers/Sms/Create/reducer.js +0 -41
  231. package/containers/Sms/Create/sagas.js +0 -40
  232. package/containers/Sms/Create/selectors.js +0 -28
  233. package/containers/Sms/Create/test/saga.test.js +0 -11
  234. package/containers/Sms/Edit/actions.js +0 -40
  235. package/containers/Sms/Edit/constants.js +0 -17
  236. package/containers/Sms/Edit/index.js +0 -1472
  237. package/containers/Sms/Edit/messages.js +0 -105
  238. package/containers/Sms/Edit/reducer.js +0 -50
  239. package/containers/Sms/Edit/sagas.js +0 -60
  240. package/containers/Sms/Edit/selectors.js +0 -32
  241. package/containers/Sms/Edit/test/saga.test.js +0 -13
  242. package/containers/TagList/_tagList.scss +0 -8
  243. package/containers/TagList/actions.js +0 -15
  244. package/containers/TagList/constants.js +0 -32
  245. package/containers/TagList/index.js +0 -236
  246. package/containers/TagList/messages.js +0 -13
  247. package/containers/TagList/reducer.js +0 -23
  248. package/containers/TagList/sagas.js +0 -11
  249. package/containers/TagList/selectors.js +0 -25
  250. package/containers/Templates/_templates.scss +0 -333
  251. package/containers/Templates/actions.js +0 -103
  252. package/containers/Templates/constants.js +0 -60
  253. package/containers/Templates/index.js +0 -1756
  254. package/containers/Templates/messages.js +0 -337
  255. package/containers/Templates/reducer.js +0 -142
  256. package/containers/Templates/sagas.js +0 -163
  257. package/containers/Templates/selectors.js +0 -28
  258. package/containers/Templates/test/saga.test.js +0 -241
  259. package/containers/WeChat/MapTemplates/_mapTemplates.scss +0 -8
  260. package/containers/WeChat/MapTemplates/actions.js +0 -52
  261. package/containers/WeChat/MapTemplates/constants.js +0 -28
  262. package/containers/WeChat/MapTemplates/index.js +0 -1610
  263. package/containers/WeChat/MapTemplates/messages.js +0 -157
  264. package/containers/WeChat/MapTemplates/reducer.js +0 -74
  265. package/containers/WeChat/MapTemplates/sagas.js +0 -84
  266. package/containers/WeChat/MapTemplates/selectors.js +0 -25
  267. package/containers/WeChat/MapTemplates/test/saga.test.js +0 -155
  268. package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +0 -57
  269. package/containers/WeChat/RichmediaTemplates/Create/actions.js +0 -36
  270. package/containers/WeChat/RichmediaTemplates/Create/constants.js +0 -15
  271. package/containers/WeChat/RichmediaTemplates/Create/index.js +0 -1071
  272. package/containers/WeChat/RichmediaTemplates/Create/messages.js +0 -165
  273. package/containers/WeChat/RichmediaTemplates/Create/reducer.js +0 -60
  274. package/containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +0 -497
  275. package/containers/WeChat/RichmediaTemplates/Create/sagas.js +0 -51
  276. package/containers/WeChat/RichmediaTemplates/Create/selectors.js +0 -37
  277. package/containers/WeChat/RichmediaTemplates/Create/test/saga.test.js +0 -13
  278. package/containers/WeChat/RichmediaTemplates/Edit/actions.js +0 -20
  279. package/containers/WeChat/RichmediaTemplates/Edit/constants.js +0 -10
  280. package/containers/WeChat/RichmediaTemplates/Edit/index.js +0 -136
  281. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +0 -13
  282. package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +0 -28
  283. package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +0 -36
  284. package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +0 -30
  285. package/containers/WeChat/RichmediaTemplates/Edit/test/saga.test.js +0 -12
  286. package/containers/WeChat/RichmediaTemplates/View/actions.js +0 -15
  287. package/containers/WeChat/RichmediaTemplates/View/constants.js +0 -7
  288. package/containers/WeChat/RichmediaTemplates/View/index.js +0 -47
  289. package/containers/WeChat/RichmediaTemplates/View/messages.js +0 -21
  290. package/containers/WeChat/RichmediaTemplates/View/reducer.js +0 -23
  291. package/containers/WeChat/RichmediaTemplates/View/sagas.js +0 -11
  292. package/containers/WeChat/RichmediaTemplates/View/selectors.js +0 -25
  293. package/utils/asyncInjectors.js +0 -78
  294. package/utils/callNativeEvent.js +0 -16
  295. package/utils/checkStore.js +0 -21
  296. package/utils/customAuthWrapper.js +0 -62
  297. package/utils/customConnectedAuthWrapper.js +0 -26
@@ -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';