@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.
- package/components/BreadCrumbs/index.js +65 -0
- package/components/BreadCrumbs/messages.js +13 -0
- package/components/CapTagList/index.js +235 -0
- package/components/CapTagList/messages.js +45 -0
- package/components/Card/_customCard.scss +40 -0
- package/components/Card/index.js +78 -0
- package/components/Card/tests/__snapshots__/index.test.js.snap +22 -0
- package/components/Card/tests/index.test.js +20 -0
- package/components/CardGrid/index.js +71 -0
- package/components/Ckeditor/index.js +238 -0
- package/components/Ckeditor/messages.js +13 -0
- package/components/Ckeditor/style.scss +3 -0
- package/components/Component/index.js +29 -0
- package/components/CustomPopOver/index.js +81 -0
- package/components/CustomPopOver/messages.js +17 -0
- package/components/DateFilter/index.js +349 -0
- package/components/DateFilter/messages.js +57 -0
- package/components/DateRange/index.js +114 -0
- package/components/DateRange/messages.js +25 -0
- package/components/Edmeditor/index.js +65 -0
- package/components/Edmeditor/messages.js +13 -0
- package/components/EmailPreview/_emailPreview.scss +119 -0
- package/components/EmailPreview/assets/images/iPad.svg +10 -0
- package/components/EmailPreview/assets/images/mobile.png +0 -0
- package/components/EmailPreview/index.js +107 -0
- package/components/EmailPreview/messages.js +33 -0
- package/components/Footer/index.js +27 -0
- package/components/Footer/messages.js +13 -0
- package/components/FormBuilder/_formBuilder.scss +83 -0
- package/components/FormBuilder/index.js +3279 -0
- package/components/FormBuilder/messages.js +61 -0
- package/components/Header/index.js +44 -0
- package/components/Header/messages.js +29 -0
- package/components/ImagePreview/_imagePreview.scss +63 -0
- package/components/ImagePreview/index.js +52 -0
- package/components/ImagePreview/messages.js +17 -0
- package/components/PageHeader/_pageHeader.scss +22 -0
- package/components/PageHeader/index.js +37 -0
- package/components/PageHeader/messages.js +13 -0
- package/components/Pagination/_pagination.scss +5 -0
- package/components/Pagination/index.js +49 -0
- package/components/PreviewSideBar/_previewsidebar.scss +28 -0
- package/components/PreviewSideBar/index.js +152 -0
- package/components/PreviewSideBar/messages.js +41 -0
- package/components/Sidebar/_sidebar.scss +115 -0
- package/components/Sidebar/index.js +214 -0
- package/components/Sidebar/messages.js +21 -0
- package/components/SlideBox/_slideBox.scss +63 -0
- package/components/SlideBox/index.js +47 -0
- package/components/SlideBox/tests/index.test.js +103 -0
- package/components/SmsEditor/index.js +55 -0
- package/components/SmsTest/index.js +117 -0
- package/components/SmsTest/messages.js +21 -0
- package/components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +42 -0
- package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +141 -0
- package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +21 -0
- package/components/TemplatePreview/_templatePreview.scss +642 -0
- package/components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
- package/components/TemplatePreview/assets/images/androidPushMessage.svg +45 -0
- package/components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
- package/components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
- package/components/TemplatePreview/assets/images/iPhonePushMessage.svg +135 -0
- package/components/TemplatePreview/assets/images/mobile.svg +24 -0
- package/components/TemplatePreview/assets/images/sms-body.png +0 -0
- package/components/TemplatePreview/assets/images/sms-icon.png +0 -0
- package/components/TemplatePreview/assets/images/sms_mobile.png +0 -0
- package/components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
- package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +16 -0
- package/components/TemplatePreview/assets/images/user-icon.svg +19 -0
- package/components/TemplatePreview/assets/images/wechat-mobile.svg +78 -0
- package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
- package/components/TemplatePreview/index.js +617 -0
- package/components/TemplatePreview/messages.js +78 -0
- package/components/Toastr/index.js +60 -0
- package/components/Toastr/messages.js +13 -0
- package/components/ToastrMessage/index.js +113 -0
- package/components/ToastrMessage/messages.js +17 -0
- package/components/TopBar/_topbar.scss +46 -0
- package/components/TopBar/assets/images/capillary_logo.png +0 -0
- package/components/TopBar/assets/images/old_capillary_logo.png +0 -0
- package/components/TopBar/index.js +113 -0
- package/components/TopBar/messages.js +29 -0
- package/containers/App/actions.js +7 -0
- package/containers/App/constants.js +114 -0
- package/containers/App/index.js +52 -0
- package/containers/App/reducer.js +19 -0
- package/containers/App/sagas.js +31 -0
- package/containers/App/selectors.js +25 -0
- package/containers/App/test/saga.test.js +11 -0
- package/containers/Assets/Gallery/_gallery.scss +126 -0
- package/containers/Assets/Gallery/actions.js +37 -0
- package/containers/Assets/Gallery/constants.js +23 -0
- package/containers/Assets/Gallery/index.js +473 -0
- package/containers/Assets/Gallery/messages.js +93 -0
- package/containers/Assets/Gallery/reducer.js +81 -0
- package/containers/Assets/Gallery/sagas.js +80 -0
- package/containers/Assets/Gallery/selectors.js +25 -0
- package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +9 -0
- package/containers/Assets/Gallery/tests/actions.test.js +25 -0
- package/containers/Assets/Gallery/tests/reducer.test.js +96 -0
- package/containers/Assets/Gallery/tests/saga.test.js +157 -0
- package/containers/Cap/actions.js +66 -0
- package/containers/Cap/constants.js +25 -0
- package/containers/Cap/index.js +402 -0
- package/containers/Cap/messages.js +75 -0
- package/containers/Cap/reducer.js +113 -0
- package/containers/Cap/sagas.js +159 -0
- package/containers/Cap/selectors.js +75 -0
- package/containers/Cap/tests/__snapshots__/index.test.js.snap +2269 -0
- package/containers/Cap/tests/index.test.js +22 -0
- package/containers/Cap/tests/saga.test.js +284 -0
- package/containers/Dashboard/actions.js +15 -0
- package/containers/Dashboard/constants.js +7 -0
- package/containers/Dashboard/index.js +76 -0
- package/containers/Dashboard/messages.js +13 -0
- package/containers/Dashboard/reducer.js +21 -0
- package/containers/Dashboard/sagas.js +17 -0
- package/containers/Dashboard/selectors.js +25 -0
- package/containers/Dashboard/test/saga.test.js +9 -0
- package/containers/Ebill/_ebill.scss +5 -0
- package/containers/Ebill/actions.js +43 -0
- package/containers/Ebill/constants.js +20 -0
- package/containers/Ebill/index.js +1278 -0
- package/containers/Ebill/messages.js +77 -0
- package/containers/Ebill/reducer.js +72 -0
- package/containers/Ebill/sagas.js +74 -0
- package/containers/Ebill/selectors.js +25 -0
- package/containers/Ebill/test/saga.test.js +11 -0
- package/containers/Email/_email.scss +141 -0
- package/containers/Email/actions.js +81 -0
- package/containers/Email/constants.js +36 -0
- package/containers/Email/index.js +3325 -0
- package/containers/Email/messages.js +289 -0
- package/containers/Email/reducer.js +142 -0
- package/containers/Email/sagas.js +135 -0
- package/containers/Email/selectors.js +31 -0
- package/containers/Email/test/saga.test.js +671 -0
- package/containers/LanguageProvider/actions.js +17 -0
- package/containers/LanguageProvider/constants.js +8 -0
- package/containers/LanguageProvider/index.js +80 -0
- package/containers/LanguageProvider/reducer.js +30 -0
- package/containers/LanguageProvider/selectors.js +20 -0
- package/containers/LanguageProvider/tests/actions.test.js +19 -0
- package/containers/LanguageProvider/tests/index.test.js +78 -0
- package/containers/LanguageProvider/tests/reducer.test.js +20 -0
- package/containers/LanguageProvider/tests/selectors.test.js +15 -0
- package/containers/Line/Create/_lineCreate.scss +54 -0
- package/containers/Line/Create/actions.js +90 -0
- package/containers/Line/Create/constants.js +39 -0
- package/containers/Line/Create/index.js +836 -0
- package/containers/Line/Create/messages.js +189 -0
- package/containers/Line/Create/reducer.js +99 -0
- package/containers/Line/Create/sagas.js +121 -0
- package/containers/Line/Create/selectors.js +36 -0
- package/containers/Line/Create/tests/saga.test.js +202 -0
- package/containers/Line/Edit/_lineEdit.scss +35 -0
- package/containers/Line/Edit/actions.js +79 -0
- package/containers/Line/Edit/constants.js +27 -0
- package/containers/Line/Edit/index.js +1050 -0
- package/containers/Line/Edit/messages.js +177 -0
- package/containers/Line/Edit/reducer.js +83 -0
- package/containers/Line/Edit/sagas.js +80 -0
- package/containers/Line/Edit/selectors.js +29 -0
- package/containers/Line/Edit/test/saga.test.js +160 -0
- package/containers/Login/assets/images/capillary_logo.png +0 -0
- package/containers/Login/components/LoginForm/index.js +62 -0
- package/containers/Login/components/LoginForm/messages.js +33 -0
- package/containers/Login/index.js +130 -0
- package/containers/Login/messages.js +25 -0
- package/containers/Login/selectors.js +25 -0
- package/containers/MobilePush/Create/_mobilePushCreate.scss +39 -0
- package/containers/MobilePush/Create/actions.js +46 -0
- package/containers/MobilePush/Create/constants.js +23 -0
- package/containers/MobilePush/Create/index.js +2303 -0
- package/containers/MobilePush/Create/messages.js +269 -0
- package/containers/MobilePush/Create/reducer.js +70 -0
- package/containers/MobilePush/Create/sagas.js +74 -0
- package/containers/MobilePush/Create/selectors.js +28 -0
- package/containers/MobilePush/Create/test/saga.test.js +19 -0
- package/containers/MobilePush/Edit/_mobilePushCreate.scss +39 -0
- package/containers/MobilePush/Edit/actions.js +91 -0
- package/containers/MobilePush/Edit/constants.js +35 -0
- package/containers/MobilePush/Edit/index.js +2601 -0
- package/containers/MobilePush/Edit/messages.js +266 -0
- package/containers/MobilePush/Edit/reducer.js +112 -0
- package/containers/MobilePush/Edit/sagas.js +126 -0
- package/containers/MobilePush/Edit/selectors.js +29 -0
- package/containers/MobilePush/Edit/tests/saga.test.js +255 -0
- package/containers/NotFoundPage/index.js +25 -0
- package/containers/NotFoundPage/messages.js +13 -0
- package/containers/NotFoundPage/tests/index.test.js +17 -0
- package/containers/Sms/Create/_smsCreate.scss +42 -0
- package/containers/Sms/Create/actions.js +27 -0
- package/containers/Sms/Create/constants.js +16 -0
- package/containers/Sms/Create/index.js +1488 -0
- package/containers/Sms/Create/messages.js +109 -0
- package/containers/Sms/Create/reducer.js +41 -0
- package/containers/Sms/Create/sagas.js +40 -0
- package/containers/Sms/Create/selectors.js +28 -0
- package/containers/Sms/Create/test/saga.test.js +11 -0
- package/containers/Sms/Edit/actions.js +40 -0
- package/containers/Sms/Edit/constants.js +17 -0
- package/containers/Sms/Edit/index.js +1472 -0
- package/containers/Sms/Edit/messages.js +105 -0
- package/containers/Sms/Edit/reducer.js +50 -0
- package/containers/Sms/Edit/sagas.js +60 -0
- package/containers/Sms/Edit/selectors.js +32 -0
- package/containers/Sms/Edit/test/saga.test.js +13 -0
- package/containers/TagList/_tagList.scss +8 -0
- package/containers/TagList/actions.js +15 -0
- package/containers/TagList/constants.js +32 -0
- package/containers/TagList/index.js +236 -0
- package/containers/TagList/messages.js +13 -0
- package/containers/TagList/reducer.js +23 -0
- package/containers/TagList/sagas.js +11 -0
- package/containers/TagList/selectors.js +25 -0
- package/containers/Templates/_templates.scss +333 -0
- package/containers/Templates/actions.js +103 -0
- package/containers/Templates/constants.js +60 -0
- package/containers/Templates/index.js +1756 -0
- package/containers/Templates/messages.js +337 -0
- package/containers/Templates/reducer.js +142 -0
- package/containers/Templates/sagas.js +163 -0
- package/containers/Templates/selectors.js +28 -0
- package/containers/Templates/test/saga.test.js +241 -0
- package/containers/WeChat/MapTemplates/_mapTemplates.scss +8 -0
- package/containers/WeChat/MapTemplates/actions.js +52 -0
- package/containers/WeChat/MapTemplates/constants.js +28 -0
- package/containers/WeChat/MapTemplates/index.js +1610 -0
- package/containers/WeChat/MapTemplates/messages.js +157 -0
- package/containers/WeChat/MapTemplates/reducer.js +74 -0
- package/containers/WeChat/MapTemplates/sagas.js +84 -0
- package/containers/WeChat/MapTemplates/selectors.js +25 -0
- package/containers/WeChat/MapTemplates/test/saga.test.js +155 -0
- package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +57 -0
- package/containers/WeChat/RichmediaTemplates/Create/actions.js +36 -0
- package/containers/WeChat/RichmediaTemplates/Create/constants.js +15 -0
- package/containers/WeChat/RichmediaTemplates/Create/index.js +1071 -0
- package/containers/WeChat/RichmediaTemplates/Create/messages.js +165 -0
- package/containers/WeChat/RichmediaTemplates/Create/reducer.js +60 -0
- package/containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +497 -0
- package/containers/WeChat/RichmediaTemplates/Create/sagas.js +51 -0
- package/containers/WeChat/RichmediaTemplates/Create/selectors.js +37 -0
- package/containers/WeChat/RichmediaTemplates/Create/test/saga.test.js +13 -0
- package/containers/WeChat/RichmediaTemplates/Edit/actions.js +20 -0
- package/containers/WeChat/RichmediaTemplates/Edit/constants.js +10 -0
- package/containers/WeChat/RichmediaTemplates/Edit/index.js +136 -0
- package/containers/WeChat/RichmediaTemplates/Edit/messages.js +13 -0
- package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +28 -0
- package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +36 -0
- package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +30 -0
- package/containers/WeChat/RichmediaTemplates/Edit/test/saga.test.js +12 -0
- package/containers/WeChat/RichmediaTemplates/View/actions.js +15 -0
- package/containers/WeChat/RichmediaTemplates/View/constants.js +7 -0
- package/containers/WeChat/RichmediaTemplates/View/index.js +47 -0
- package/containers/WeChat/RichmediaTemplates/View/messages.js +21 -0
- package/containers/WeChat/RichmediaTemplates/View/reducer.js +23 -0
- package/containers/WeChat/RichmediaTemplates/View/sagas.js +11 -0
- package/containers/WeChat/RichmediaTemplates/View/selectors.js +25 -0
- package/index.js +2 -4
- package/package.json +1 -1
- package/routes.js +202 -136
- package/services/getSchema.js +1 -1
- package/services/localStorageApi.js +0 -1
- package/tests/i18n.test.js +1 -1
- package/utils/asyncInjectors.js +78 -0
- package/utils/authWrapper.js +1 -1
- package/utils/callNativeEvent.js +16 -0
- package/utils/checkStore.js +21 -0
- package/utils/common.js +2 -2
- package/utils/customAuthWrapper.js +62 -0
- package/utils/customConnectedAuthWrapper.js +26 -0
- package/utils/tagValidations.js +1 -1
- package/utils/tests/checkStore.test.js +1 -1
- package/utils/tests/customAuth.test.js +1 -1
- package/utils/transformerUtils.js +195 -1
- package/v2Components/CapTagList/index.js +14 -9
- package/v2Components/Carousel/style.scss +1 -1
- package/v2Components/EmailMobilePreview/index.js +2 -2
- package/v2Components/FormBuilder/index.js +2 -2
- package/v2Components/TemplatePreview/index.js +1 -2
- package/v2Containers/Cap/tests/saga.test.js +1 -1
- package/v2Containers/Email/index.js +1 -1
- package/v2Containers/FTP/index.js +1 -1
- package/v2Containers/Line/Container/Text/index.js +6 -6
- package/v2Containers/Sms/Create/index.js +2 -2
- package/v2Containers/Sms/Edit/index.js +1 -1
- package/v2Containers/TagList/index.js +1 -1
- package/v2Containers/TagList/utils.js +1 -1
- package/v2Containers/Templates/index.js +1 -1
- package/v2Containers/Templates/sagas.js +1 -1
- package/constants/unified.js +0 -189
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Create Messages
|
|
3
|
+
*
|
|
4
|
+
* This contains all the text for the Create component.
|
|
5
|
+
*/
|
|
6
|
+
import { defineMessages } from 'react-intl';
|
|
7
|
+
|
|
8
|
+
export default defineMessages({
|
|
9
|
+
"imageUploadLabel": {
|
|
10
|
+
id: 'creatives.containers.Line.Create.ImageUploadLabel',
|
|
11
|
+
defaultMessage: 'Upload image',
|
|
12
|
+
},
|
|
13
|
+
"Enter template name*": {
|
|
14
|
+
id: 'creatives.containers.Line.Create.enterTemplateNameImportant',
|
|
15
|
+
defaultMessage: 'Enter template name*',
|
|
16
|
+
},
|
|
17
|
+
"Enter template name": {
|
|
18
|
+
id: 'creatives.containers.Line.Create.enterTemplateName',
|
|
19
|
+
defaultMessage: 'Enter template name',
|
|
20
|
+
},
|
|
21
|
+
"Template name cannot be empty": {
|
|
22
|
+
id: 'creatives.containers.Line.Create.templateCantEmpty',
|
|
23
|
+
defaultMessage: 'Template name cannot be empty',
|
|
24
|
+
},
|
|
25
|
+
"Discard Changes": {
|
|
26
|
+
id: 'creatives.containers.Line.Create.discardChanges',
|
|
27
|
+
defaultMessage: 'Discard changes',
|
|
28
|
+
},
|
|
29
|
+
"Cancel": {
|
|
30
|
+
id: 'creatives.containers.Line.Create.cancel',
|
|
31
|
+
defaultMessage: 'Cancel',
|
|
32
|
+
},
|
|
33
|
+
"Save": {
|
|
34
|
+
id: 'creatives.containers.Line.Create.save',
|
|
35
|
+
defaultMessage: 'Save',
|
|
36
|
+
},
|
|
37
|
+
"Select Line Account": {
|
|
38
|
+
id: 'creatives.containers.Line.Create.selectLineAccount',
|
|
39
|
+
defaultMessage: 'Select line account',
|
|
40
|
+
},
|
|
41
|
+
"Account Id": {
|
|
42
|
+
id: 'creatives.containers.Line.Create.accountId',
|
|
43
|
+
defaultMessage: 'Account id',
|
|
44
|
+
},
|
|
45
|
+
"Select Line Template": {
|
|
46
|
+
id: 'creatives.containers.Line.Create.selectLineTemplate',
|
|
47
|
+
defaultMessage: 'Select line template',
|
|
48
|
+
},
|
|
49
|
+
"Template": {
|
|
50
|
+
id: 'creatives.containers.Line.Create.template',
|
|
51
|
+
defaultMessage: 'Template',
|
|
52
|
+
},
|
|
53
|
+
"Title*": {
|
|
54
|
+
id: 'creatives.containers.Line.Create.titleLabel',
|
|
55
|
+
defaultMessage: 'Title*',
|
|
56
|
+
},
|
|
57
|
+
"Title": {
|
|
58
|
+
id: 'creatives.containers.Line.Create.title',
|
|
59
|
+
defaultMessage: 'Title',
|
|
60
|
+
},
|
|
61
|
+
"Please input message title name.": {
|
|
62
|
+
id: 'creatives.containers.Line.Create.titleNameInvalid',
|
|
63
|
+
defaultMessage: 'Please enter the message title',
|
|
64
|
+
},
|
|
65
|
+
"Template message has unsupported/missing tags!": {
|
|
66
|
+
id: 'creatives.containers.Line.Create.messageHasUnsupportedTag',
|
|
67
|
+
defaultMessage: 'Please check the message content for unsupported/missing tags',
|
|
68
|
+
},
|
|
69
|
+
"Tags": {
|
|
70
|
+
id: 'creatives.containers.Line.Create.Tags',
|
|
71
|
+
defaultMessage: 'Tags',
|
|
72
|
+
},
|
|
73
|
+
"Message*": {
|
|
74
|
+
id: 'creatives.containers.Line.Create.messageLabel',
|
|
75
|
+
defaultMessage: 'Message*',
|
|
76
|
+
},
|
|
77
|
+
"Message": {
|
|
78
|
+
id: 'creatives.containers.Line.Create.message',
|
|
79
|
+
defaultMessage: 'Message',
|
|
80
|
+
},
|
|
81
|
+
"Please input line template content.": {
|
|
82
|
+
id: 'creatives.containers.Line.Create.inputLineTemplateContent',
|
|
83
|
+
defaultMessage: 'Please enter the message content',
|
|
84
|
+
},
|
|
85
|
+
"Template title has unsupported/missing tags.": {
|
|
86
|
+
id: 'creatives.containers.Line.Create.titleHasUnsupportedTag',
|
|
87
|
+
defaultMessage: 'Please check the message content for unsupported/missing tags',
|
|
88
|
+
},
|
|
89
|
+
"Template name cannot be empty.": {
|
|
90
|
+
id: 'creatives.containers.Line.Create.templateNameNotEmpty',
|
|
91
|
+
defaultMessage: 'Please provide a template name ',
|
|
92
|
+
},
|
|
93
|
+
"Message title has unsupported/missing tags!": {
|
|
94
|
+
id: 'creatives.containers.Line.Create.messageTitleWithUnsupportedTag',
|
|
95
|
+
defaultMessage: 'Please check the message content for unsupported/missing tags',
|
|
96
|
+
},
|
|
97
|
+
"Image": {
|
|
98
|
+
id: 'creatives.containers.Line.Create.Image',
|
|
99
|
+
defaultMessage: 'Image',
|
|
100
|
+
},
|
|
101
|
+
"Max file size acceptable is 5mb": {
|
|
102
|
+
id: 'creatives.containers.Line.Create.maxUploadFileSize',
|
|
103
|
+
defaultMessage: 'Max file size acceptable is 5mb',
|
|
104
|
+
},
|
|
105
|
+
"Please upload Image": {
|
|
106
|
+
id: 'creatives.containers.Line.Create.pleaseUploadImage',
|
|
107
|
+
defaultMessage: 'Please upload Image',
|
|
108
|
+
},
|
|
109
|
+
"Upload Image": {
|
|
110
|
+
id: 'creatives.containers.Line.Create.uploadImage',
|
|
111
|
+
defaultMessage: 'Upload image',
|
|
112
|
+
},
|
|
113
|
+
"Line Template Created Successfully": {
|
|
114
|
+
id: 'creatives.containers.Line.Create.templateCreatedSuccessfully',
|
|
115
|
+
defaultMessage: 'Line template created successfully',
|
|
116
|
+
},
|
|
117
|
+
"Line Template Edited Successfully": {
|
|
118
|
+
id: 'creatives.containers.Line.Create.templateEditedSuccessfully',
|
|
119
|
+
defaultMessage: 'Line template edited successfully',
|
|
120
|
+
},
|
|
121
|
+
"somethingWentWrong": {
|
|
122
|
+
id: 'creatives.containers.Line.Create.somethingWentWrong',
|
|
123
|
+
defaultMessage: 'Something went wrong!!',
|
|
124
|
+
},
|
|
125
|
+
"Name and Description": {
|
|
126
|
+
id: 'creatives.containers.Line.Create.nameAndDescription',
|
|
127
|
+
defaultMessage: 'Name and description',
|
|
128
|
+
},
|
|
129
|
+
"Button 1": {
|
|
130
|
+
id: 'creatives.containers.Line.Create.button1',
|
|
131
|
+
defaultMessage: 'Button 1',
|
|
132
|
+
},
|
|
133
|
+
"Button 2": {
|
|
134
|
+
id: 'creatives.containers.Line.Create.button2',
|
|
135
|
+
defaultMessage: 'Button 2',
|
|
136
|
+
},
|
|
137
|
+
"File size cannot be more than 1mb": {
|
|
138
|
+
id: 'creatives.containers.Line.Create.uploadFileSizeError',
|
|
139
|
+
defaultMessage: 'File size cannot be more than 1mb',
|
|
140
|
+
},
|
|
141
|
+
"value cannot be empty.": {
|
|
142
|
+
id: 'creatives.containers.Line.Create.valueCantEmpty',
|
|
143
|
+
defaultMessage: 'value cannot be empty.',
|
|
144
|
+
},
|
|
145
|
+
"uploadingImage": {
|
|
146
|
+
id: 'creatives.containers.Line.Create.uploadingImage',
|
|
147
|
+
defaultMessage: 'Uploading image...',
|
|
148
|
+
},
|
|
149
|
+
"Photo Uploaded Successfully": {
|
|
150
|
+
id: 'creatives.containers.Line.Create.uploadSuccess',
|
|
151
|
+
defaultMessage: 'Photo uploaded successfully',
|
|
152
|
+
},
|
|
153
|
+
"Campaigns": {
|
|
154
|
+
id: 'creatives.containers.Line.Create.Campaigns',
|
|
155
|
+
defaultMessage: 'Campaigns',
|
|
156
|
+
},
|
|
157
|
+
"Creatives": {
|
|
158
|
+
id: 'creatives.containers.Line.Create.Creatives',
|
|
159
|
+
defaultMessage: 'Creatives',
|
|
160
|
+
},
|
|
161
|
+
"Line": {
|
|
162
|
+
id: 'creatives.containers.Line.Create.line',
|
|
163
|
+
defaultMessage: 'Line',
|
|
164
|
+
},
|
|
165
|
+
"Please upload an image to proceed": {
|
|
166
|
+
id: 'creatives.containers.Line.Create.image',
|
|
167
|
+
defaultMessage: 'Please upload an image to proceed',
|
|
168
|
+
},
|
|
169
|
+
"Maximum characters length exceeds": {
|
|
170
|
+
id: 'creatives.containers.Line.Create.maximumCharacterLengthExceeds',
|
|
171
|
+
defaultMessage: 'Maximum characters length exceeds',
|
|
172
|
+
},
|
|
173
|
+
"goBackConfirmation": {
|
|
174
|
+
id: 'creatives.containers.Line.Create.goBackConfirmation',
|
|
175
|
+
defaultMessage: "Going back will discard all the changes you've made. Continue?",
|
|
176
|
+
},
|
|
177
|
+
"alertMessage": {
|
|
178
|
+
id: 'creatives.containers.Line.Create.alertMessage',
|
|
179
|
+
defaultMessage: "Alert",
|
|
180
|
+
},
|
|
181
|
+
"templateNotConfigured": {
|
|
182
|
+
id: 'creatives.containers.Line.Create.templateNotConfigured',
|
|
183
|
+
defaultMessage: "template not configured,",
|
|
184
|
+
},
|
|
185
|
+
"savingTemplate": {
|
|
186
|
+
id: 'creatives.containers.Line.Create.savingTemplate',
|
|
187
|
+
defaultMessage: "Saving Template...",
|
|
188
|
+
},
|
|
189
|
+
});
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* Create reducer
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { fromJS } from 'immutable';
|
|
8
|
+
import * as types from './constants';
|
|
9
|
+
|
|
10
|
+
const initialState = fromJS({
|
|
11
|
+
createTemplateInProgress: false,
|
|
12
|
+
response: {},
|
|
13
|
+
uploadedAssetData: {},
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
function createReducer(state = initialState, action) {
|
|
17
|
+
switch (action.type) {
|
|
18
|
+
case types.DEFAULT_ACTION:
|
|
19
|
+
return state;
|
|
20
|
+
case types.CREATE_TEMPLATE_REQUEST:
|
|
21
|
+
return state
|
|
22
|
+
.set('createTemplateInProgress', true)
|
|
23
|
+
.set('createTemplateError', false)
|
|
24
|
+
.set('createTemplateErrorMessage', fromJS(""));
|
|
25
|
+
case types.CREATE_TEMPLATE_SUCCESS:
|
|
26
|
+
return state.set('createTemplateInProgress', false)
|
|
27
|
+
.set('response', action.data)
|
|
28
|
+
.set('createTemplateError', (action.statusCode !== undefined && action.statusCode > 300))
|
|
29
|
+
.set('createTemplateErrorMessage', fromJS(action.errorMsg));
|
|
30
|
+
case types.CREATE_TEMPLATE_FAILURE:
|
|
31
|
+
return state
|
|
32
|
+
.set('createTemplateInProgress', false)
|
|
33
|
+
.set('createTemplateError', true)
|
|
34
|
+
.set('createTemplateErrorMessage', fromJS(action.errorMsg));
|
|
35
|
+
case types.CLEAR_CREATE_RESPONSE_REQUEST:
|
|
36
|
+
return state.set('response', {});
|
|
37
|
+
case types.UPLOAD_ASSET_REQUEST:
|
|
38
|
+
return state
|
|
39
|
+
.set('uploadAssetSuccess', false)
|
|
40
|
+
.set('assetUploading', true);
|
|
41
|
+
case types.UPLOAD_ASSET_SUCCESS:
|
|
42
|
+
return state
|
|
43
|
+
.set('uploadAssetSuccess', (action.statusCode !== undefined && action.statusCode !== '' && action.statusCode < 300))
|
|
44
|
+
.set('assetUploading', false)
|
|
45
|
+
.set('uploadedAssetData', action.data);
|
|
46
|
+
case types.UPLOAD_ASSET_FAILURE:
|
|
47
|
+
return state
|
|
48
|
+
.set('uploadAssetSuccess', false)
|
|
49
|
+
.set('assetUploading', false);
|
|
50
|
+
case types.CLEAR_ASSET:
|
|
51
|
+
return state
|
|
52
|
+
.delete('uploadedAssetData');
|
|
53
|
+
// FOR EDIT
|
|
54
|
+
case types.EDIT_TEMPLATE_REQUEST:
|
|
55
|
+
return state
|
|
56
|
+
.set('editTemplateInProgress', true)
|
|
57
|
+
.set('editTemplateError', false)
|
|
58
|
+
.set('editTemplateErrorMessage', fromJS(""));
|
|
59
|
+
case types.EDIT_TEMPLATE_SUCCESS:
|
|
60
|
+
return state.set('editTemplateInProgress', false)
|
|
61
|
+
.set('editResponse', action.data)
|
|
62
|
+
.set('editTemplateError', (action.statusCode !== undefined && action.statusCode > 300))
|
|
63
|
+
.set('editTemplateErrorMessage', fromJS(action.errorMsg));
|
|
64
|
+
case types.EDIT_TEMPLATE_FAILURE:
|
|
65
|
+
return state
|
|
66
|
+
.set('editTemplateInProgress', false)
|
|
67
|
+
.set('editTemplateError', true)
|
|
68
|
+
.set('editTemplateErrorMessage', fromJS(action.errorMsg));
|
|
69
|
+
case types.GET_TEMPLATE_DETAILS_REQUEST:
|
|
70
|
+
return state.set('getTemplateDetailsInProgress', true);
|
|
71
|
+
case types.GET_TEMPLATE_DETAILS_SUCCESS:
|
|
72
|
+
return state.set('getTemplateDetailsInProgress', false)
|
|
73
|
+
.set('templateDetails', action.data);
|
|
74
|
+
case types.GET_TEMPLATE_DETAILS_FAILURE:
|
|
75
|
+
return state.set('getTemplateDetailsInProgress', false);
|
|
76
|
+
case types.CLEAR_EDIT_RESPONSE_REQUEST:
|
|
77
|
+
return state.set('editResponse', {});
|
|
78
|
+
case types.CLEAR_DATA:
|
|
79
|
+
return state
|
|
80
|
+
.delete('uploadedAssetData')
|
|
81
|
+
.delete('metaEntities')
|
|
82
|
+
.delete('templateDetails');
|
|
83
|
+
case types.GET_LINE_TEMPLATES_LIST_REQUEST:
|
|
84
|
+
return state
|
|
85
|
+
.set('fetchingDefaultTemplates', true);
|
|
86
|
+
case types.GET_LINE_TEMPLATES_LIST_SUCCESS:
|
|
87
|
+
return state
|
|
88
|
+
.set('fetchingDefaultTemplates', false)
|
|
89
|
+
.set('lineTemplates', fromJS(action.data));
|
|
90
|
+
case types.GET_LINE_TEMPLATES_LIST_FAILURE:
|
|
91
|
+
return state
|
|
92
|
+
.set('fetchingDefaultTemplates', false)
|
|
93
|
+
.set('errorFetchingDefaultTempalte', true);
|
|
94
|
+
default:
|
|
95
|
+
return state;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export default createReducer;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// Line Sagas
|
|
2
|
+
import {
|
|
3
|
+
call, put, takeLatest, all,
|
|
4
|
+
} from 'redux-saga/effects';
|
|
5
|
+
import * as Api from '../../../services/api';
|
|
6
|
+
import * as types from './constants';
|
|
7
|
+
|
|
8
|
+
// Individual exports for testing
|
|
9
|
+
export function* createTemplate(payload) {
|
|
10
|
+
let errorMsg;
|
|
11
|
+
let result;
|
|
12
|
+
try {
|
|
13
|
+
const {template, callback} = payload;
|
|
14
|
+
result = yield call(Api.createLineTemplate, template);
|
|
15
|
+
if (result.status.code === 500) {
|
|
16
|
+
errorMsg = result.message;
|
|
17
|
+
}
|
|
18
|
+
if (callback) {
|
|
19
|
+
callback(result?.response);
|
|
20
|
+
}
|
|
21
|
+
yield put({ type: types.CREATE_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
|
|
22
|
+
} catch (error) {
|
|
23
|
+
yield put({ type: types.CREATE_TEMPLATE_FAILURE, error, errorMsg });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function* uploadAsset(file, assetType, fileParams) {
|
|
27
|
+
try {
|
|
28
|
+
const result = yield call(Api.uploadFile, file, assetType, fileParams);
|
|
29
|
+
yield put({ type: types.UPLOAD_ASSET_SUCCESS, data: result.response.asset, statusCode: result.status ? result.status.code : '' });
|
|
30
|
+
} catch (error) {
|
|
31
|
+
yield put({ type: types.UPLOAD_ASSET_FAILURE, error });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function* watchCreateTemplate() {
|
|
36
|
+
|
|
37
|
+
yield takeLatest(types.CREATE_TEMPLATE_REQUEST, createTemplate);
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
function* watchUploadAsset() {
|
|
42
|
+
|
|
43
|
+
yield takeLatest(types.UPLOAD_ASSET_REQUEST, uploadAsset);
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// edit
|
|
49
|
+
|
|
50
|
+
export function* editTemplate(template) {
|
|
51
|
+
let errorMsg;
|
|
52
|
+
try {
|
|
53
|
+
|
|
54
|
+
const result = yield call(Api.createLineTemplate, template);
|
|
55
|
+
|
|
56
|
+
if (result.message || result.status.code === 500) {
|
|
57
|
+
errorMsg = result.message;
|
|
58
|
+
}
|
|
59
|
+
yield put({ type: types.EDIT_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
|
|
60
|
+
} catch (error) {
|
|
61
|
+
yield put({ type: types.EDIT_TEMPLATE_FAILURE, error, errorMsg });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function* getTemplateDetails(id) {
|
|
66
|
+
try {
|
|
67
|
+
|
|
68
|
+
const result = yield call(Api.getTemplateDetails, id);
|
|
69
|
+
// const sidebar = result.response.sidebar;
|
|
70
|
+
yield put({ type: types.GET_TEMPLATE_DETAILS_SUCCESS, data: result.response });
|
|
71
|
+
} catch (error) {
|
|
72
|
+
yield put({ type: types.GET_TEMPLATE_DETAILS_FAILURE, error });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function* getLineTemplatesList(params) {
|
|
77
|
+
try {
|
|
78
|
+
|
|
79
|
+
const result = yield call(Api.getAllTemplates, {channel: params.channel, queryParams: params.queryParams});
|
|
80
|
+
yield put({ type: types.GET_LINE_TEMPLATES_LIST_SUCCESS, data: result.response.templates, templateData: result.response.mapped});
|
|
81
|
+
} catch (error) {
|
|
82
|
+
yield put({ type: types.GET_LINE_TEMPLATES_LIST_FAILURE, error });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function* watchEditTemplate() {
|
|
87
|
+
yield takeLatest(types.EDIT_TEMPLATE_REQUEST, editTemplate);
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function* watchGetTemplateDetails() {
|
|
93
|
+
yield takeLatest(types.GET_TEMPLATE_DETAILS_REQUEST, getTemplateDetails);
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function* watchLineTemplatesList() {
|
|
99
|
+
yield takeLatest(types.GET_LINE_TEMPLATES_LIST_REQUEST, getLineTemplatesList);
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// All sagas to be loaded
|
|
105
|
+
export default [
|
|
106
|
+
watchCreateTemplate,
|
|
107
|
+
watchUploadAsset,
|
|
108
|
+
watchEditTemplate,
|
|
109
|
+
watchGetTemplateDetails,
|
|
110
|
+
watchLineTemplatesList,
|
|
111
|
+
];
|
|
112
|
+
|
|
113
|
+
export function* lineCreateSaga() {
|
|
114
|
+
yield all([
|
|
115
|
+
watchCreateTemplate(),
|
|
116
|
+
watchUploadAsset(),
|
|
117
|
+
watchEditTemplate(),
|
|
118
|
+
watchGetTemplateDetails(),
|
|
119
|
+
watchLineTemplatesList(),
|
|
120
|
+
]);
|
|
121
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createSelector } from 'reselect';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Direct selector to the create state domain
|
|
5
|
+
*/
|
|
6
|
+
const selectLineDomain = () => (state) => state.get('templates');
|
|
7
|
+
const selectLineMessageEditDomain = () => (state) => state.get('line');
|
|
8
|
+
//const selectLineDuplicateDomain = () => (state) => state.get('line');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Other specific selectors
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Default selector used by Create & Edit
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const makeSelectLine = () => createSelector(
|
|
20
|
+
selectLineDomain(),
|
|
21
|
+
(substate) => substate.toJS()
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const makeSelectCreateLine = () => createSelector(
|
|
25
|
+
selectLineMessageEditDomain(),
|
|
26
|
+
(substate) => substate.toJS()
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
// const makeSelectDuplicate = () => createSelector(
|
|
30
|
+
// selectLineDuplicateDomain(),
|
|
31
|
+
// (substate) => substate.toJS()
|
|
32
|
+
// );
|
|
33
|
+
|
|
34
|
+
export {
|
|
35
|
+
makeSelectLine, makeSelectCreateLine,
|
|
36
|
+
};
|
|
@@ -0,0 +1,202 @@
|
|
|
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('Line Template Sagas', () => {
|
|
9
|
+
describe('createTemplate Saga', () => {
|
|
10
|
+
const payload = {
|
|
11
|
+
template: { name: 'New Template' },
|
|
12
|
+
callback: jest.fn()
|
|
13
|
+
};
|
|
14
|
+
it('handles creating a template successfully', () => {
|
|
15
|
+
const fakeResponse = {
|
|
16
|
+
response: { id: 1, name: 'New Template' },
|
|
17
|
+
status: { code: 200 }
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
return expectSaga(sagas.createTemplate, payload)
|
|
21
|
+
.provide([
|
|
22
|
+
[call(Api.createLineTemplate, payload.template), fakeResponse]
|
|
23
|
+
])
|
|
24
|
+
.put({
|
|
25
|
+
type: types.CREATE_TEMPLATE_SUCCESS,
|
|
26
|
+
data: fakeResponse.response,
|
|
27
|
+
statusCode: 200,
|
|
28
|
+
errorMsg: undefined
|
|
29
|
+
})
|
|
30
|
+
.run()
|
|
31
|
+
.then(() => {
|
|
32
|
+
expect(payload.callback).toHaveBeenCalledWith(fakeResponse.response);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('handles failure when creating a template', () => {
|
|
37
|
+
const error = new Error('Failed to create template');
|
|
38
|
+
|
|
39
|
+
return expectSaga(sagas.createTemplate, payload)
|
|
40
|
+
.provide([
|
|
41
|
+
[call(Api.createLineTemplate, payload.template), throwError(error)]
|
|
42
|
+
])
|
|
43
|
+
.put({
|
|
44
|
+
type: types.CREATE_TEMPLATE_FAILURE,
|
|
45
|
+
error,
|
|
46
|
+
errorMsg: undefined
|
|
47
|
+
})
|
|
48
|
+
.run();
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
describe('uploadAsset Saga', () => {
|
|
53
|
+
const file = new Blob();
|
|
54
|
+
const assetType = 'image';
|
|
55
|
+
const fileParams = { param1: 'value1' };
|
|
56
|
+
|
|
57
|
+
it('handles successful asset upload', () => {
|
|
58
|
+
const fakeResponse = {
|
|
59
|
+
response: { asset: { id: 1, url: 'http://example.com/asset.jpg' } },
|
|
60
|
+
status: { code: '200' }
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return expectSaga(sagas.uploadAsset, file, assetType, fileParams)
|
|
64
|
+
.provide([
|
|
65
|
+
[call(Api.uploadFile, file, assetType, fileParams), fakeResponse]
|
|
66
|
+
])
|
|
67
|
+
.put({
|
|
68
|
+
type: types.UPLOAD_ASSET_SUCCESS,
|
|
69
|
+
data: fakeResponse.response.asset,
|
|
70
|
+
statusCode: '200'
|
|
71
|
+
})
|
|
72
|
+
.run();
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it('handles failure in asset upload', () => {
|
|
76
|
+
const error = new Error('Failed to upload asset');
|
|
77
|
+
|
|
78
|
+
return expectSaga(sagas.uploadAsset, file, assetType, fileParams)
|
|
79
|
+
.provide([
|
|
80
|
+
[call(Api.uploadFile, file, assetType, fileParams), throwError(error)]
|
|
81
|
+
])
|
|
82
|
+
.put({
|
|
83
|
+
type: types.UPLOAD_ASSET_FAILURE,
|
|
84
|
+
error
|
|
85
|
+
})
|
|
86
|
+
.run();
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
describe('editTemplate Saga', () => {
|
|
91
|
+
const template = { id: 1, name: 'Updated Template' };
|
|
92
|
+
|
|
93
|
+
it('handles successful template edit', () => {
|
|
94
|
+
const fakeResponse = {
|
|
95
|
+
response: template,
|
|
96
|
+
status: { code: 200 }
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
return expectSaga(sagas.editTemplate, template)
|
|
100
|
+
.provide([
|
|
101
|
+
[call(Api.createLineTemplate, template), fakeResponse]
|
|
102
|
+
])
|
|
103
|
+
.put({
|
|
104
|
+
type: types.EDIT_TEMPLATE_SUCCESS,
|
|
105
|
+
data: fakeResponse.response,
|
|
106
|
+
statusCode: 200,
|
|
107
|
+
errorMsg: undefined
|
|
108
|
+
})
|
|
109
|
+
.run();
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('handles failure in editing a template', () => {
|
|
113
|
+
const error = new Error('Edit failed');
|
|
114
|
+
|
|
115
|
+
return expectSaga(sagas.editTemplate, template)
|
|
116
|
+
.provide([
|
|
117
|
+
[call(Api.createLineTemplate, template), throwError(error)]
|
|
118
|
+
])
|
|
119
|
+
.put({
|
|
120
|
+
type: types.EDIT_TEMPLATE_FAILURE,
|
|
121
|
+
error,
|
|
122
|
+
errorMsg: undefined
|
|
123
|
+
})
|
|
124
|
+
.run();
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
describe('getTemplateDetails Saga', () => {
|
|
129
|
+
const id = '123';
|
|
130
|
+
|
|
131
|
+
it('handles fetching template details successfully', () => {
|
|
132
|
+
const fakeResponse = {
|
|
133
|
+
response: { id: 123, name: 'Detailed Template' }
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
return expectSaga(sagas.getTemplateDetails, id)
|
|
137
|
+
.provide([
|
|
138
|
+
[call(Api.getTemplateDetails, id), fakeResponse]
|
|
139
|
+
])
|
|
140
|
+
.put({
|
|
141
|
+
type: types.GET_TEMPLATE_DETAILS_SUCCESS,
|
|
142
|
+
data: fakeResponse.response
|
|
143
|
+
})
|
|
144
|
+
.run();
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it('handles failure in fetching template details', () => {
|
|
148
|
+
const error = new Error('Fetch failed');
|
|
149
|
+
|
|
150
|
+
return expectSaga(sagas.getTemplateDetails, id)
|
|
151
|
+
.provide([
|
|
152
|
+
[call(Api.getTemplateDetails, id), throwError(error)]
|
|
153
|
+
])
|
|
154
|
+
.put({
|
|
155
|
+
type: types.GET_TEMPLATE_DETAILS_FAILURE,
|
|
156
|
+
error
|
|
157
|
+
})
|
|
158
|
+
.run();
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
describe('getLineTemplatesList Saga', () => {
|
|
163
|
+
const params = { channel: 'line', queryParams: { sort: 'asc' } };
|
|
164
|
+
test.concurrent('handles fetching line templates list successfully', () => {
|
|
165
|
+
const fakeResponse = {
|
|
166
|
+
response: {
|
|
167
|
+
templates: [{ id: 1, name: 'Template One' }],
|
|
168
|
+
mapped: { id: 2, name: 'Mapped Template' }
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
return expectSaga(sagas.getLineTemplatesList, params)
|
|
172
|
+
.provide([
|
|
173
|
+
[call(Api.getAllTemplates, { channel: params.channel, queryParams: params.queryParams }), fakeResponse]
|
|
174
|
+
])
|
|
175
|
+
.put({
|
|
176
|
+
type: types.GET_LINE_TEMPLATES_LIST_SUCCESS,
|
|
177
|
+
data: fakeResponse.response.templates,
|
|
178
|
+
templateData: fakeResponse.response.mapped
|
|
179
|
+
})
|
|
180
|
+
.run();
|
|
181
|
+
});
|
|
182
|
+
test.concurrent('handles failure in fetching line templates list', () => {
|
|
183
|
+
const error = new Error('Fetch failed');
|
|
184
|
+
return expectSaga(sagas.getLineTemplatesList, params)
|
|
185
|
+
.provide([
|
|
186
|
+
[call(Api.getAllTemplates, { channel: params.channel, queryParams: params.queryParams }), throwError(error)]
|
|
187
|
+
])
|
|
188
|
+
.put({
|
|
189
|
+
type: types.GET_LINE_TEMPLATES_LIST_FAILURE,
|
|
190
|
+
error
|
|
191
|
+
})
|
|
192
|
+
.run();
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
describe('Combined lineCreateSaga', () => {
|
|
198
|
+
it('should initialize all line-related watcher sagas without error', () => {
|
|
199
|
+
return expectSaga(sagas.lineCreateSaga)
|
|
200
|
+
.run();
|
|
201
|
+
});
|
|
202
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
.mobile-push-row{
|
|
2
|
+
margin-bottom: 16px;
|
|
3
|
+
}
|
|
4
|
+
.image-container{
|
|
5
|
+
border: solid 1px #C2C2C2;
|
|
6
|
+
border-radius: 5px;
|
|
7
|
+
.image-placeholder{
|
|
8
|
+
line-height: 150px;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
.ant-tabs-bar{
|
|
12
|
+
margin-bottom: 0 !important;
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
flex-direction: row-reverse;
|
|
16
|
+
justify-content: flex-end;
|
|
17
|
+
}
|
|
18
|
+
.ant-tabs-tabpane{
|
|
19
|
+
padding: 16px 16px 16px 0;
|
|
20
|
+
border: solid 1px #D6D6D6;
|
|
21
|
+
}
|
|
22
|
+
.ant-radio-wrapper{
|
|
23
|
+
font-size: 14px;
|
|
24
|
+
font-family: 'open-sans';
|
|
25
|
+
}
|
|
26
|
+
.ant-radio-inner::after{
|
|
27
|
+
top: 3px;
|
|
28
|
+
left: 3px;
|
|
29
|
+
}
|
|
30
|
+
.ant-radio-inner{
|
|
31
|
+
border: 1px solid #d9d9d9;
|
|
32
|
+
}
|
|
33
|
+
.ant-radio-checked .ant-radio-inner{
|
|
34
|
+
border: 1px solid #47af46;
|
|
35
|
+
}
|