@capillarytech/creatives-library 8.0.136-alpha.4 → 8.0.136-beta.3

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 (292) hide show
  1. package/components/BreadCrumbs/index.js +65 -0
  2. package/components/BreadCrumbs/messages.js +13 -0
  3. package/components/CapTagList/index.js +235 -0
  4. package/components/CapTagList/messages.js +45 -0
  5. package/components/Card/_customCard.scss +40 -0
  6. package/components/Card/index.js +78 -0
  7. package/components/Card/tests/__snapshots__/index.test.js.snap +22 -0
  8. package/components/Card/tests/index.test.js +20 -0
  9. package/components/CardGrid/index.js +71 -0
  10. package/components/Ckeditor/index.js +238 -0
  11. package/components/Ckeditor/messages.js +13 -0
  12. package/components/Ckeditor/style.scss +3 -0
  13. package/components/Component/index.js +29 -0
  14. package/components/CustomPopOver/index.js +81 -0
  15. package/components/CustomPopOver/messages.js +17 -0
  16. package/components/DateFilter/index.js +349 -0
  17. package/components/DateFilter/messages.js +57 -0
  18. package/components/DateRange/index.js +114 -0
  19. package/components/DateRange/messages.js +25 -0
  20. package/components/Edmeditor/index.js +65 -0
  21. package/components/Edmeditor/messages.js +13 -0
  22. package/components/EmailPreview/_emailPreview.scss +119 -0
  23. package/components/EmailPreview/assets/images/iPad.svg +10 -0
  24. package/components/EmailPreview/assets/images/mobile.png +0 -0
  25. package/components/EmailPreview/index.js +107 -0
  26. package/components/EmailPreview/messages.js +33 -0
  27. package/components/Footer/index.js +27 -0
  28. package/components/Footer/messages.js +13 -0
  29. package/components/FormBuilder/_formBuilder.scss +83 -0
  30. package/components/FormBuilder/index.js +3279 -0
  31. package/components/FormBuilder/messages.js +61 -0
  32. package/components/Header/index.js +44 -0
  33. package/components/Header/messages.js +29 -0
  34. package/components/ImagePreview/_imagePreview.scss +63 -0
  35. package/components/ImagePreview/index.js +52 -0
  36. package/components/ImagePreview/messages.js +17 -0
  37. package/components/PageHeader/_pageHeader.scss +22 -0
  38. package/components/PageHeader/index.js +37 -0
  39. package/components/PageHeader/messages.js +13 -0
  40. package/components/Pagination/_pagination.scss +5 -0
  41. package/components/Pagination/index.js +49 -0
  42. package/components/PreviewSideBar/_previewsidebar.scss +28 -0
  43. package/components/PreviewSideBar/index.js +152 -0
  44. package/components/PreviewSideBar/messages.js +41 -0
  45. package/components/Sidebar/_sidebar.scss +115 -0
  46. package/components/Sidebar/index.js +214 -0
  47. package/components/Sidebar/messages.js +21 -0
  48. package/components/SlideBox/_slideBox.scss +63 -0
  49. package/components/SlideBox/index.js +47 -0
  50. package/components/SlideBox/tests/index.test.js +103 -0
  51. package/components/SmsEditor/index.js +55 -0
  52. package/components/SmsTest/index.js +117 -0
  53. package/components/SmsTest/messages.js +21 -0
  54. package/components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +42 -0
  55. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +141 -0
  56. package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +21 -0
  57. package/components/TemplatePreview/_templatePreview.scss +642 -0
  58. package/components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
  59. package/components/TemplatePreview/assets/images/androidPushMessage.svg +45 -0
  60. package/components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
  61. package/components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
  62. package/components/TemplatePreview/assets/images/iPhonePushMessage.svg +135 -0
  63. package/components/TemplatePreview/assets/images/mobile.svg +24 -0
  64. package/components/TemplatePreview/assets/images/sms-body.png +0 -0
  65. package/components/TemplatePreview/assets/images/sms-icon.png +0 -0
  66. package/components/TemplatePreview/assets/images/sms_mobile.png +0 -0
  67. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
  68. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +16 -0
  69. package/components/TemplatePreview/assets/images/user-icon.svg +19 -0
  70. package/components/TemplatePreview/assets/images/wechat-mobile.svg +78 -0
  71. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
  72. package/components/TemplatePreview/index.js +617 -0
  73. package/components/TemplatePreview/messages.js +78 -0
  74. package/components/Toastr/index.js +60 -0
  75. package/components/Toastr/messages.js +13 -0
  76. package/components/ToastrMessage/index.js +113 -0
  77. package/components/ToastrMessage/messages.js +17 -0
  78. package/components/TopBar/_topbar.scss +46 -0
  79. package/components/TopBar/assets/images/capillary_logo.png +0 -0
  80. package/components/TopBar/assets/images/old_capillary_logo.png +0 -0
  81. package/components/TopBar/index.js +113 -0
  82. package/components/TopBar/messages.js +29 -0
  83. package/containers/App/actions.js +7 -0
  84. package/containers/App/constants.js +114 -0
  85. package/containers/App/index.js +52 -0
  86. package/containers/App/reducer.js +19 -0
  87. package/containers/App/sagas.js +31 -0
  88. package/containers/App/selectors.js +25 -0
  89. package/containers/App/test/saga.test.js +11 -0
  90. package/containers/Assets/Gallery/_gallery.scss +126 -0
  91. package/containers/Assets/Gallery/actions.js +37 -0
  92. package/containers/Assets/Gallery/constants.js +23 -0
  93. package/containers/Assets/Gallery/index.js +473 -0
  94. package/containers/Assets/Gallery/messages.js +93 -0
  95. package/containers/Assets/Gallery/reducer.js +81 -0
  96. package/containers/Assets/Gallery/sagas.js +80 -0
  97. package/containers/Assets/Gallery/selectors.js +25 -0
  98. package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +9 -0
  99. package/containers/Assets/Gallery/tests/actions.test.js +25 -0
  100. package/containers/Assets/Gallery/tests/reducer.test.js +96 -0
  101. package/containers/Assets/Gallery/tests/saga.test.js +157 -0
  102. package/containers/Cap/actions.js +66 -0
  103. package/containers/Cap/constants.js +25 -0
  104. package/containers/Cap/index.js +402 -0
  105. package/containers/Cap/messages.js +75 -0
  106. package/containers/Cap/reducer.js +113 -0
  107. package/containers/Cap/sagas.js +159 -0
  108. package/containers/Cap/selectors.js +75 -0
  109. package/containers/Cap/tests/__snapshots__/index.test.js.snap +2269 -0
  110. package/containers/Cap/tests/index.test.js +22 -0
  111. package/containers/Cap/tests/saga.test.js +284 -0
  112. package/containers/Dashboard/actions.js +15 -0
  113. package/containers/Dashboard/constants.js +7 -0
  114. package/containers/Dashboard/index.js +76 -0
  115. package/containers/Dashboard/messages.js +13 -0
  116. package/containers/Dashboard/reducer.js +21 -0
  117. package/containers/Dashboard/sagas.js +17 -0
  118. package/containers/Dashboard/selectors.js +25 -0
  119. package/containers/Dashboard/test/saga.test.js +9 -0
  120. package/containers/Ebill/_ebill.scss +5 -0
  121. package/containers/Ebill/actions.js +43 -0
  122. package/containers/Ebill/constants.js +20 -0
  123. package/containers/Ebill/index.js +1278 -0
  124. package/containers/Ebill/messages.js +77 -0
  125. package/containers/Ebill/reducer.js +72 -0
  126. package/containers/Ebill/sagas.js +74 -0
  127. package/containers/Ebill/selectors.js +25 -0
  128. package/containers/Ebill/test/saga.test.js +11 -0
  129. package/containers/Email/_email.scss +141 -0
  130. package/containers/Email/actions.js +81 -0
  131. package/containers/Email/constants.js +36 -0
  132. package/containers/Email/index.js +3325 -0
  133. package/containers/Email/messages.js +289 -0
  134. package/containers/Email/reducer.js +142 -0
  135. package/containers/Email/sagas.js +135 -0
  136. package/containers/Email/selectors.js +31 -0
  137. package/containers/Email/test/saga.test.js +671 -0
  138. package/containers/LanguageProvider/actions.js +17 -0
  139. package/containers/LanguageProvider/constants.js +8 -0
  140. package/containers/LanguageProvider/index.js +80 -0
  141. package/containers/LanguageProvider/reducer.js +30 -0
  142. package/containers/LanguageProvider/selectors.js +20 -0
  143. package/containers/LanguageProvider/tests/actions.test.js +19 -0
  144. package/containers/LanguageProvider/tests/index.test.js +78 -0
  145. package/containers/LanguageProvider/tests/reducer.test.js +20 -0
  146. package/containers/LanguageProvider/tests/selectors.test.js +15 -0
  147. package/containers/Line/Create/_lineCreate.scss +54 -0
  148. package/containers/Line/Create/actions.js +90 -0
  149. package/containers/Line/Create/constants.js +39 -0
  150. package/containers/Line/Create/index.js +836 -0
  151. package/containers/Line/Create/messages.js +189 -0
  152. package/containers/Line/Create/reducer.js +99 -0
  153. package/containers/Line/Create/sagas.js +121 -0
  154. package/containers/Line/Create/selectors.js +36 -0
  155. package/containers/Line/Create/tests/saga.test.js +202 -0
  156. package/containers/Line/Edit/_lineEdit.scss +35 -0
  157. package/containers/Line/Edit/actions.js +79 -0
  158. package/containers/Line/Edit/constants.js +27 -0
  159. package/containers/Line/Edit/index.js +1050 -0
  160. package/containers/Line/Edit/messages.js +177 -0
  161. package/containers/Line/Edit/reducer.js +83 -0
  162. package/containers/Line/Edit/sagas.js +80 -0
  163. package/containers/Line/Edit/selectors.js +29 -0
  164. package/containers/Line/Edit/test/saga.test.js +160 -0
  165. package/containers/Login/assets/images/capillary_logo.png +0 -0
  166. package/containers/Login/components/LoginForm/index.js +62 -0
  167. package/containers/Login/components/LoginForm/messages.js +33 -0
  168. package/containers/Login/index.js +130 -0
  169. package/containers/Login/messages.js +25 -0
  170. package/containers/Login/selectors.js +25 -0
  171. package/containers/MobilePush/Create/_mobilePushCreate.scss +39 -0
  172. package/containers/MobilePush/Create/actions.js +46 -0
  173. package/containers/MobilePush/Create/constants.js +23 -0
  174. package/containers/MobilePush/Create/index.js +2303 -0
  175. package/containers/MobilePush/Create/messages.js +269 -0
  176. package/containers/MobilePush/Create/reducer.js +70 -0
  177. package/containers/MobilePush/Create/sagas.js +74 -0
  178. package/containers/MobilePush/Create/selectors.js +28 -0
  179. package/containers/MobilePush/Create/test/saga.test.js +19 -0
  180. package/containers/MobilePush/Edit/_mobilePushCreate.scss +39 -0
  181. package/containers/MobilePush/Edit/actions.js +91 -0
  182. package/containers/MobilePush/Edit/constants.js +35 -0
  183. package/containers/MobilePush/Edit/index.js +2601 -0
  184. package/containers/MobilePush/Edit/messages.js +266 -0
  185. package/containers/MobilePush/Edit/reducer.js +112 -0
  186. package/containers/MobilePush/Edit/sagas.js +126 -0
  187. package/containers/MobilePush/Edit/selectors.js +29 -0
  188. package/containers/MobilePush/Edit/tests/saga.test.js +255 -0
  189. package/containers/NotFoundPage/index.js +25 -0
  190. package/containers/NotFoundPage/messages.js +13 -0
  191. package/containers/NotFoundPage/tests/index.test.js +17 -0
  192. package/containers/Sms/Create/_smsCreate.scss +42 -0
  193. package/containers/Sms/Create/actions.js +27 -0
  194. package/containers/Sms/Create/constants.js +16 -0
  195. package/containers/Sms/Create/index.js +1488 -0
  196. package/containers/Sms/Create/messages.js +109 -0
  197. package/containers/Sms/Create/reducer.js +41 -0
  198. package/containers/Sms/Create/sagas.js +40 -0
  199. package/containers/Sms/Create/selectors.js +28 -0
  200. package/containers/Sms/Create/test/saga.test.js +11 -0
  201. package/containers/Sms/Edit/actions.js +40 -0
  202. package/containers/Sms/Edit/constants.js +17 -0
  203. package/containers/Sms/Edit/index.js +1472 -0
  204. package/containers/Sms/Edit/messages.js +105 -0
  205. package/containers/Sms/Edit/reducer.js +50 -0
  206. package/containers/Sms/Edit/sagas.js +60 -0
  207. package/containers/Sms/Edit/selectors.js +32 -0
  208. package/containers/Sms/Edit/test/saga.test.js +13 -0
  209. package/containers/TagList/_tagList.scss +8 -0
  210. package/containers/TagList/actions.js +15 -0
  211. package/containers/TagList/constants.js +32 -0
  212. package/containers/TagList/index.js +236 -0
  213. package/containers/TagList/messages.js +13 -0
  214. package/containers/TagList/reducer.js +23 -0
  215. package/containers/TagList/sagas.js +11 -0
  216. package/containers/TagList/selectors.js +25 -0
  217. package/containers/Templates/_templates.scss +333 -0
  218. package/containers/Templates/actions.js +103 -0
  219. package/containers/Templates/constants.js +60 -0
  220. package/containers/Templates/index.js +1756 -0
  221. package/containers/Templates/messages.js +337 -0
  222. package/containers/Templates/reducer.js +142 -0
  223. package/containers/Templates/sagas.js +163 -0
  224. package/containers/Templates/selectors.js +28 -0
  225. package/containers/Templates/test/saga.test.js +241 -0
  226. package/containers/WeChat/MapTemplates/_mapTemplates.scss +8 -0
  227. package/containers/WeChat/MapTemplates/actions.js +52 -0
  228. package/containers/WeChat/MapTemplates/constants.js +28 -0
  229. package/containers/WeChat/MapTemplates/index.js +1610 -0
  230. package/containers/WeChat/MapTemplates/messages.js +157 -0
  231. package/containers/WeChat/MapTemplates/reducer.js +74 -0
  232. package/containers/WeChat/MapTemplates/sagas.js +84 -0
  233. package/containers/WeChat/MapTemplates/selectors.js +25 -0
  234. package/containers/WeChat/MapTemplates/test/saga.test.js +155 -0
  235. package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +57 -0
  236. package/containers/WeChat/RichmediaTemplates/Create/actions.js +36 -0
  237. package/containers/WeChat/RichmediaTemplates/Create/constants.js +15 -0
  238. package/containers/WeChat/RichmediaTemplates/Create/index.js +1071 -0
  239. package/containers/WeChat/RichmediaTemplates/Create/messages.js +165 -0
  240. package/containers/WeChat/RichmediaTemplates/Create/reducer.js +60 -0
  241. package/containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +497 -0
  242. package/containers/WeChat/RichmediaTemplates/Create/sagas.js +51 -0
  243. package/containers/WeChat/RichmediaTemplates/Create/selectors.js +37 -0
  244. package/containers/WeChat/RichmediaTemplates/Create/test/saga.test.js +13 -0
  245. package/containers/WeChat/RichmediaTemplates/Edit/actions.js +20 -0
  246. package/containers/WeChat/RichmediaTemplates/Edit/constants.js +10 -0
  247. package/containers/WeChat/RichmediaTemplates/Edit/index.js +136 -0
  248. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +13 -0
  249. package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +28 -0
  250. package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +36 -0
  251. package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +30 -0
  252. package/containers/WeChat/RichmediaTemplates/Edit/test/saga.test.js +12 -0
  253. package/containers/WeChat/RichmediaTemplates/View/actions.js +15 -0
  254. package/containers/WeChat/RichmediaTemplates/View/constants.js +7 -0
  255. package/containers/WeChat/RichmediaTemplates/View/index.js +47 -0
  256. package/containers/WeChat/RichmediaTemplates/View/messages.js +21 -0
  257. package/containers/WeChat/RichmediaTemplates/View/reducer.js +23 -0
  258. package/containers/WeChat/RichmediaTemplates/View/sagas.js +11 -0
  259. package/containers/WeChat/RichmediaTemplates/View/selectors.js +25 -0
  260. package/index.js +2 -4
  261. package/package.json +1 -1
  262. package/routes.js +202 -136
  263. package/services/getSchema.js +1 -1
  264. package/services/localStorageApi.js +0 -1
  265. package/tests/i18n.test.js +1 -1
  266. package/utils/asyncInjectors.js +78 -0
  267. package/utils/authWrapper.js +1 -1
  268. package/utils/callNativeEvent.js +16 -0
  269. package/utils/checkStore.js +21 -0
  270. package/utils/common.js +2 -2
  271. package/utils/customAuthWrapper.js +62 -0
  272. package/utils/customConnectedAuthWrapper.js +26 -0
  273. package/utils/tagValidations.js +1 -1
  274. package/utils/tests/checkStore.test.js +1 -1
  275. package/utils/tests/customAuth.test.js +1 -1
  276. package/utils/transformerUtils.js +195 -1
  277. package/v2Components/CapTagList/index.js +14 -9
  278. package/v2Components/Carousel/style.scss +1 -1
  279. package/v2Components/EmailMobilePreview/index.js +2 -2
  280. package/v2Components/FormBuilder/index.js +2 -2
  281. package/v2Components/TemplatePreview/index.js +1 -2
  282. package/v2Containers/Cap/tests/saga.test.js +1 -1
  283. package/v2Containers/Email/index.js +1 -1
  284. package/v2Containers/FTP/index.js +1 -1
  285. package/v2Containers/Line/Container/Text/index.js +6 -6
  286. package/v2Containers/Sms/Create/index.js +2 -2
  287. package/v2Containers/Sms/Edit/index.js +1 -1
  288. package/v2Containers/TagList/index.js +1 -1
  289. package/v2Containers/TagList/utils.js +1 -1
  290. package/v2Containers/Templates/index.js +1 -1
  291. package/v2Containers/Templates/sagas.js +1 -1
  292. package/constants/unified.js +0 -189
@@ -0,0 +1,255 @@
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 {editMPushSaga} from '../sagas';
6
+ import * as types from '../constants';
7
+ import * as sagas from '../sagas';
8
+
9
+ describe('Mobile Push Template Sagas', () => {
10
+ describe('editTemplate Saga', () => {
11
+ const template = { message: "Retuen",id: 1, name: 'Updated Template' };
12
+
13
+ it.concurrent('handles successful template edit', () => {
14
+ const fakeResponse = {
15
+ response: template,
16
+ status: { code: 200 }
17
+ };
18
+
19
+ return expectSaga(sagas.editTemplate, template)
20
+ .provide([
21
+ [call(Api.createMobilePushTemplate, template), fakeResponse]
22
+ ])
23
+ .put({
24
+ type: types.EDIT_TEMPLATE_SUCCESS,
25
+ data: fakeResponse.response,
26
+ statusCode: 200,
27
+ errorMsg: undefined
28
+ })
29
+ .run();
30
+ });
31
+ it.concurrent('handles successful template edit', () => {
32
+ const fakeResponse = {
33
+ response: template,
34
+ status: { code: 500 }
35
+ };
36
+
37
+ return expectSaga(sagas.editTemplate, template)
38
+ .provide([
39
+ [call(Api.createMobilePushTemplate, template), fakeResponse]
40
+ ])
41
+ .put({
42
+ type: types.EDIT_TEMPLATE_SUCCESS,
43
+ data: fakeResponse.response,
44
+ statusCode: 500,
45
+ errorMsg: undefined
46
+ })
47
+ .run();
48
+ });
49
+ it.concurrent('handles failure in editing a template', () => {
50
+ const error = new Error('Edit failed');
51
+
52
+ return expectSaga(sagas.editTemplate, template)
53
+ .provide([
54
+ [call(Api.createMobilePushTemplate, template), throwError(error)]
55
+ ])
56
+ .put({
57
+ type: types.EDIT_TEMPLATE_FAILURE,
58
+ error,
59
+ errorMsg: undefined
60
+ })
61
+ .run();
62
+ });
63
+ });
64
+
65
+ describe('getTemplateDetails Saga', () => {
66
+ const id = '123';
67
+
68
+ it.concurrent('handles fetching template details successfully', () => {
69
+ const fakeResponse = {
70
+ response: { id: 123, name: 'Detailed Template' }
71
+ };
72
+
73
+ return expectSaga(sagas.getTemplateDetails, id)
74
+ .provide([
75
+ [call(Api.getTemplateDetails, id), fakeResponse]
76
+ ])
77
+ .put({
78
+ type: types.GET_TEMPLATE_DETAILS_SUCCESS,
79
+ data: fakeResponse.response
80
+ })
81
+ .run();
82
+ });
83
+
84
+ it.concurrent('handles failure in fetching template details', () => {
85
+ const error = new Error('Fetch failed');
86
+
87
+ return expectSaga(sagas.getTemplateDetails, id)
88
+ .provide([
89
+ [call(Api.getTemplateDetails, id), throwError(error)]
90
+ ])
91
+ .put({
92
+ type: types.GET_TEMPLATE_DETAILS_FAILURE,
93
+ error
94
+ })
95
+ .run();
96
+ });
97
+ });
98
+
99
+ describe('uploadAsset Saga', () => {
100
+ const file = new Blob();
101
+ const assetType = 'image';
102
+ const fileParams = { param1: 'value1' };
103
+ const mode = 'strict';
104
+
105
+ it.concurrent('handles successful asset upload', () => {
106
+ const fakeResponse = {
107
+ response: { asset: { id: 1, url: 'http://example.com/asset.jpg' } },
108
+ status: { code: 200 }
109
+ };
110
+
111
+ return expectSaga(sagas.uploadAsset, file, assetType, fileParams, mode)
112
+ .provide([
113
+ [call(Api.uploadFile, file, assetType, fileParams, mode), fakeResponse]
114
+ ])
115
+ .put({
116
+ type: types.UPLOAD_ASSET_SUCCESS,
117
+ data: fakeResponse.response.asset,
118
+ statusCode: 200
119
+ })
120
+ .run();
121
+ });
122
+
123
+ it.concurrent('handles failure in asset upload', () => {
124
+ const error = new Error('Failed to upload asset');
125
+
126
+ return expectSaga(sagas.uploadAsset, file, assetType, fileParams, mode)
127
+ .provide([
128
+ [call(Api.uploadFile, file, assetType, fileParams, mode), throwError(error)]
129
+ ])
130
+ .put({
131
+ type: types.UPLOAD_ASSET_FAILURE,
132
+ error
133
+ })
134
+ .run();
135
+ });
136
+ });
137
+
138
+ describe('getIosCtas Saga', () => {
139
+ const licenseCode = 'ABC123';
140
+
141
+ it.concurrent('handles fetching iOS CTAs successfully', () => {
142
+ const fakeResponse = {
143
+ response: { metaEntities: { data: [{ id: 1, name: 'CTA One' }] } },
144
+ status: { code: 200 }
145
+ };
146
+
147
+ return expectSaga(sagas.getIosCtas, licenseCode)
148
+ .provide([
149
+ [call(Api.getIosCtas, licenseCode), fakeResponse]
150
+ ])
151
+ .put({
152
+ type: types.GET_IOS_CTAS_SUCCESS,
153
+ data: fakeResponse.response.metaEntities.data,
154
+ statusCode: 200
155
+ })
156
+ .run();
157
+ });
158
+
159
+ it.concurrent('handles failure in fetching iOS CTAs', () => {
160
+ const error = new Error('Fetch failed');
161
+
162
+ return expectSaga(sagas.getIosCtas, licenseCode)
163
+ .provide([
164
+ [call(Api.getIosCtas, licenseCode), throwError(error)]
165
+ ])
166
+ .put({
167
+ type: types.GET_IOS_CTAS_FAILURE,
168
+ error
169
+ })
170
+ .run();
171
+ });
172
+ });
173
+
174
+ describe('getMobilepushTemplatesList Saga', () => {
175
+ const params = { channel: 'mobilepush', queryParams: { sort: 'asc' } };
176
+
177
+ it.concurrent('handles fetching mobile push templates list successfully', () => {
178
+ const fakeResponse = {
179
+ response: {
180
+ templates: [{ id: 1, name: 'Template One' }],
181
+ mapped: { id: 2, name: 'Mapped Template' }
182
+ }
183
+ };
184
+
185
+ return expectSaga(sagas.getMobilepushTemplatesList, params)
186
+ .provide([
187
+ [call(Api.getAllTemplates, { channel: params.channel, queryParams: params.queryParams }), fakeResponse]
188
+ ])
189
+ .put({
190
+ type: types.GET_MOBILEPUSH_TEMPLATES_LIST_SUCCESS,
191
+ data: fakeResponse.response.templates,
192
+ templateData: fakeResponse.response.mapped
193
+ })
194
+ .run();
195
+ });
196
+
197
+ it.concurrent('handles failure in fetching mobile push templates list', () => {
198
+ const error = new Error('Fetch failed');
199
+
200
+ return expectSaga(sagas.getMobilepushTemplatesList, params)
201
+ .provide([
202
+ [call(Api.getAllTemplates, { channel: params.channel, queryParams: params.queryParams }), throwError(error)]
203
+ ])
204
+ .put({
205
+ type: types.GET_MOBILEPUSH_TEMPLATES_LIST_FAILURE,
206
+ error
207
+ })
208
+ .run();
209
+ });
210
+ });
211
+
212
+ describe('fetchWeCrmAccounts Saga', () => {
213
+ const action = { source: 'CRM' };
214
+
215
+ it.concurrent('handles successful fetching of WeCRM accounts', () => {
216
+ const fakeResponse = {
217
+ response: [{ id: 1, name: 'Account One' }]
218
+ };
219
+
220
+ return expectSaga(sagas.fetchWeCrmAccounts, action)
221
+ .provide([
222
+ [call(Api.fetchWeCrmAccounts, action.source), fakeResponse]
223
+ ])
224
+ .put({
225
+ type: types.GET_WECRM_ACCOUNTS_SUCCESS,
226
+ data: fakeResponse.response
227
+ })
228
+ .run();
229
+ });
230
+
231
+ it.concurrent('handles failure in fetching WeCRM accounts', () => {
232
+ const error = new Error('Fetch failed');
233
+
234
+ return expectSaga(sagas.fetchWeCrmAccounts, action)
235
+ .provide([
236
+ [call(Api.fetchWeCrmAccounts, action.source), throwError(error)]
237
+ ])
238
+ .put({
239
+ type: types.GET_WECRM_ACCOUNTS_FAILURE,
240
+ data: error
241
+ })
242
+ .run();
243
+ });
244
+ });
245
+
246
+
247
+
248
+ // Test combined saga
249
+ describe('Combined editMPushSaga', () => {
250
+ it.concurrent('should initialize all mobile push-related watcher sagas without error', () => {
251
+ return expectSaga(editMPushSaga)
252
+ .run();
253
+ });
254
+ });
255
+ });
@@ -0,0 +1,25 @@
1
+ /**
2
+ * NotFoundPage
3
+ *
4
+ * This is the page we show when the user visits a url that doesn't have a route
5
+ *
6
+ * NOTE: while this component should technically be a stateless functional
7
+ * component (SFC), hot reloading does not currently support SFCs. If hot
8
+ * reloading is not a necessity for you then you can refactor it and remove
9
+ * the linting exception.
10
+ */
11
+
12
+ import React from 'react';
13
+ import { FormattedMessage } from 'react-intl';
14
+
15
+ import messages from './messages';
16
+
17
+ export default class NotFound extends React.PureComponent { // eslint-disable-line react/prefer-stateless-function
18
+ render() {
19
+ return (
20
+ <h1>
21
+ <FormattedMessage {...messages.header} />
22
+ </h1>
23
+ );
24
+ }
25
+ }
@@ -0,0 +1,13 @@
1
+ /*
2
+ * NotFoundPage Messages
3
+ *
4
+ * This contains all the text for the NotFoundPage component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ header: {
10
+ id: 'creatives.components.NotFoundPage.header',
11
+ defaultMessage: 'Looks like you are lost!',
12
+ },
13
+ });
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { FormattedMessage } from 'react-intl';
3
+ import { shallow } from 'enzyme';
4
+
5
+ import NotFoundPage from '../index';
6
+ import messages from '../messages';
7
+
8
+ describe('<NotFoundPage />', () => {
9
+ it('should render the page message', () => {
10
+ const renderedComponent = shallow(
11
+ <NotFoundPage />
12
+ );
13
+ expect(renderedComponent.contains(
14
+ <FormattedMessage {...messages.header} />
15
+ )).toEqual(true);
16
+ });
17
+ });
@@ -0,0 +1,42 @@
1
+ .ant-breadcrumb{
2
+ color: #707070;
3
+ font-family: open-sans;
4
+ line-height: 16px;
5
+ font-size: 12px;
6
+ padding-left: 8px;
7
+ }
8
+ .ant-checkbox{
9
+ vertical-align: middle !important;
10
+ }
11
+
12
+ .ant-tabs-bar{
13
+ margin-bottom: 0 !important;
14
+ display: flex;
15
+ align-items: center;
16
+ flex-direction: row-reverse;
17
+ justify-content: flex-end;
18
+ }
19
+
20
+ .creatives-templates-container {
21
+ .ant-tabs-tabpane{
22
+ border: solid 1px #d9d9d9;
23
+ border-top: none;
24
+ margin-top: -0.2%;
25
+ min-height: calc(70vh);
26
+ }
27
+ }
28
+
29
+ .ant-tabs-extra-content{
30
+ flex: 1;
31
+ align-self: flex-end;
32
+ padding: 4px;
33
+ }
34
+
35
+ .version-popover {
36
+ line-height: 24px;
37
+ cursor: pointer;
38
+ }
39
+
40
+ .version-popover:hover{
41
+ background-color: #ecf6fd;
42
+ }
@@ -0,0 +1,27 @@
1
+ /*
2
+ *
3
+ * Create actions
4
+ *
5
+ */
6
+
7
+ import * as types from './constants';
8
+
9
+ export function createTemplate(template) {
10
+
11
+ return {
12
+ type: types.CREATE_TEMPLATE_REQUEST, template,
13
+ };
14
+ }
15
+
16
+ export function clearCreateResponse() {
17
+
18
+ return {
19
+ type: types.CLEAR_CREATE_RESPONSE_REQUEST,
20
+ };
21
+ }
22
+
23
+ export function defaultAction() {
24
+ return {
25
+ type: types.DEFAULT_ACTION,
26
+ };
27
+ }
@@ -0,0 +1,16 @@
1
+ /*
2
+ *
3
+ * Create constants
4
+ *
5
+ */
6
+
7
+ export const DEFAULT_ACTION = 'app/Create/DEFAULT_ACTION';
8
+
9
+
10
+ export const CREATE_TEMPLATE_REQUEST = 'app/containers/Sms/Create/CREATE_TEMPLATE_REQUEST';
11
+ export const CREATE_TEMPLATE_SUCCESS = 'app/containers/Sms/Create/CREATE_TEMPLATE_SUCCESS';
12
+ export const CREATE_TEMPLATE_FAILURE = 'app/containers/Sms/Create/CREATE_TEMPLATE_FAILURE';
13
+
14
+ export const CLEAR_CREATE_RESPONSE_REQUEST = 'app/containers/Sms/Create/CLEAR_CREATE_RESPONSE_REQUEST';
15
+ export const CLEAR_CREATE_RESPONSE_SUCCESS = 'app/containers/Sms/Create/CLEAR_CREATE_RESPONSE_SUCCESS';
16
+ export const CLEAR_CREATE_RESPONSE_FAILURE = 'app/containers/Sms/Create/CLEAR_CREATE_RESPONSE_FAILURE';