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