@capillarytech/creatives-library 8.0.242-alpha.10 → 8.0.242-alpha.11
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/assets/Android.png +0 -0
- package/assets/iOS.png +0 -0
- package/config/app.js +1 -1
- package/constants/unified.js +2 -2
- package/initialReducer.js +0 -2
- package/package.json +1 -1
- package/services/api.js +5 -10
- package/services/tests/api.test.js +0 -18
- package/translations/en.json +4 -3
- package/utils/common.js +6 -5
- package/utils/commonUtils.js +1 -14
- package/utils/imageUrlUpload.js +141 -0
- package/utils/tests/commonUtil.test.js +0 -224
- package/utils/transformTemplateConfig.js +10 -0
- package/v2Components/CapDeviceContent/index.js +56 -61
- package/v2Components/CapImageUpload/constants.js +2 -0
- package/v2Components/CapImageUpload/index.js +65 -16
- package/v2Components/CapImageUpload/index.scss +4 -1
- package/v2Components/CapImageUpload/messages.js +5 -1
- package/v2Components/CapImageUrlUpload/constants.js +26 -0
- package/v2Components/CapImageUrlUpload/index.js +365 -0
- package/v2Components/CapImageUrlUpload/index.scss +35 -0
- package/v2Components/CapImageUrlUpload/messages.js +47 -0
- package/v2Components/CapTagList/index.js +1 -6
- package/v2Components/CapTagListWithInput/index.js +1 -5
- package/v2Components/CapTagListWithInput/messages.js +1 -1
- package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
- package/v2Components/ErrorInfoNote/index.js +72 -412
- package/v2Components/ErrorInfoNote/messages.js +0 -22
- package/v2Components/ErrorInfoNote/style.scss +2 -279
- package/v2Components/HtmlEditor/HTMLEditor.js +91 -220
- package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1132
- package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +12 -17
- package/v2Components/HtmlEditor/_htmlEditor.scss +45 -107
- package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
- package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +101 -13
- package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +139 -148
- package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
- package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
- package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +0 -9
- package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
- package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
- package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
- package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
- package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
- package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
- package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
- package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +6 -3
- package/v2Components/HtmlEditor/components/PreviewPane/index.js +11 -10
- package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +72 -70
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -49
- package/v2Components/HtmlEditor/constants.js +20 -29
- package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
- package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
- package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
- package/v2Components/HtmlEditor/index.js +1 -1
- package/v2Components/HtmlEditor/messages.js +85 -95
- package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +101 -99
- package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
- package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -34
- package/v2Components/MobilePushPreviewV2/index.js +7 -32
- package/v2Components/TemplatePreview/_templatePreview.scss +24 -44
- package/v2Components/TemplatePreview/index.js +32 -47
- package/v2Components/TemplatePreview/messages.js +0 -4
- package/v2Components/TestAndPreviewSlidebox/index.js +25 -31
- package/v2Containers/App/constants.js +5 -0
- package/v2Containers/BeeEditor/index.js +80 -82
- package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +4 -3
- package/v2Containers/CreativesContainer/SlideBoxContent.js +118 -148
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +3 -9
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +2 -2
- package/v2Containers/CreativesContainer/constants.js +2 -1
- package/v2Containers/CreativesContainer/index.js +41 -173
- package/v2Containers/CreativesContainer/messages.js +4 -4
- package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +210 -0
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +354 -38
- package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -36
- package/v2Containers/Email/actions.js +0 -7
- package/v2Containers/Email/constants.js +1 -5
- package/v2Containers/Email/index.js +0 -13
- package/v2Containers/Email/messages.js +0 -32
- package/v2Containers/Email/reducer.js +1 -12
- package/v2Containers/Email/sagas.js +6 -41
- package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
- package/v2Containers/EmailWrapper/components/EmailWrapperView.js +7 -193
- package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
- package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
- package/v2Containers/EmailWrapper/constants.js +0 -2
- package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +67 -436
- package/v2Containers/EmailWrapper/index.js +23 -99
- package/v2Containers/EmailWrapper/messages.js +1 -61
- package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
- package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -111
- package/v2Containers/InApp/actions.js +0 -7
- package/v2Containers/InApp/constants.js +4 -20
- package/v2Containers/InApp/index.js +357 -801
- package/v2Containers/InApp/index.scss +3 -4
- package/v2Containers/InApp/messages.js +3 -7
- package/v2Containers/InApp/reducer.js +3 -21
- package/v2Containers/InApp/sagas.js +9 -29
- package/v2Containers/InApp/selectors.js +5 -25
- package/v2Containers/InApp/tests/index.test.js +50 -154
- package/v2Containers/InApp/tests/reducer.test.js +0 -34
- package/v2Containers/InApp/tests/sagas.test.js +9 -61
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +12 -12
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +8 -8
- package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +100 -77
- package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +72 -63
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +184 -150
- package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +16 -12
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +32 -28
- package/v2Containers/TagList/index.js +1 -67
- package/v2Containers/Templates/ChannelTypeIllustration.js +13 -1
- package/v2Containers/Templates/_templates.scss +202 -56
- package/v2Containers/Templates/actions.js +2 -1
- package/v2Containers/Templates/constants.js +1 -0
- package/v2Containers/Templates/index.js +278 -128
- package/v2Containers/Templates/messages.js +24 -4
- package/v2Containers/Templates/reducer.js +2 -0
- package/v2Containers/Templates/tests/index.test.js +10 -0
- package/v2Containers/TemplatesV2/index.js +8 -1
- package/v2Containers/TemplatesV2/messages.js +4 -0
- package/v2Containers/WebPush/Create/components/BrandIconSection.js +108 -0
- package/v2Containers/WebPush/Create/components/ButtonForm.js +172 -0
- package/v2Containers/WebPush/Create/components/ButtonItem.js +101 -0
- package/v2Containers/WebPush/Create/components/ButtonList.js +145 -0
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +164 -0
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +463 -0
- package/v2Containers/WebPush/Create/components/FormActions.js +54 -0
- package/v2Containers/WebPush/Create/components/FormActions.test.js +163 -0
- package/v2Containers/WebPush/Create/components/MediaSection.js +142 -0
- package/v2Containers/WebPush/Create/components/MediaSection.test.js +341 -0
- package/v2Containers/WebPush/Create/components/MessageSection.js +103 -0
- package/v2Containers/WebPush/Create/components/MessageSection.test.js +268 -0
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +87 -0
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +210 -0
- package/v2Containers/WebPush/Create/components/TemplateNameSection.js +54 -0
- package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +143 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +86 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +16 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +41 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +54 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +37 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +21 -0
- package/v2Containers/WebPush/Create/components/_buttons.scss +246 -0
- package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +554 -0
- package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +607 -0
- package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +633 -0
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +666 -0
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +74 -0
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +78 -0
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +138 -0
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +406 -0
- package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +30 -0
- package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +151 -0
- package/v2Containers/WebPush/Create/hooks/useImageUpload.js +104 -0
- package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +538 -0
- package/v2Containers/WebPush/Create/hooks/useTagManagement.js +122 -0
- package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +633 -0
- package/v2Containers/WebPush/Create/index.js +1056 -0
- package/v2Containers/WebPush/Create/index.scss +134 -0
- package/v2Containers/WebPush/Create/messages.js +203 -0
- package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +228 -0
- package/v2Containers/WebPush/Create/preview/NotificationContainer.js +294 -0
- package/v2Containers/WebPush/Create/preview/PreviewContent.js +90 -0
- package/v2Containers/WebPush/Create/preview/PreviewControls.js +305 -0
- package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +23 -0
- package/v2Containers/WebPush/Create/preview/WebPushPreview.js +150 -0
- package/v2Containers/WebPush/Create/preview/assets/Light.svg +53 -0
- package/v2Containers/WebPush/Create/preview/assets/Top.svg +5 -0
- package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +9 -0
- package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +9 -0
- package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
- package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
- package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +106 -0
- package/v2Containers/WebPush/Create/preview/assets/iOS.svg +26 -0
- package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +9 -0
- package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +9 -0
- package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +18 -0
- package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +29 -0
- package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +9 -0
- package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +9 -0
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +47 -0
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +141 -0
- package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +45 -0
- package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +68 -0
- package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +61 -0
- package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +99 -0
- package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +733 -0
- package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +571 -0
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +81 -0
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +81 -0
- package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +50 -0
- package/v2Containers/WebPush/Create/preview/constants.js +637 -0
- package/v2Containers/WebPush/Create/preview/notification-container.scss +79 -0
- package/v2Containers/WebPush/Create/preview/preview.scss +351 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +370 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +12 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +12 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +12 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +47 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +11 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +11 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +11 -0
- package/v2Containers/WebPush/Create/preview/styles/_base.scss +207 -0
- package/v2Containers/WebPush/Create/preview/styles/_ios.scss +153 -0
- package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +107 -0
- package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +101 -0
- package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +229 -0
- package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +909 -0
- package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +1081 -0
- package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +723 -0
- package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +943 -0
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +131 -0
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +112 -0
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +144 -0
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +129 -0
- package/v2Containers/WebPush/Create/utils/payloadBuilder.js +94 -0
- package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +390 -0
- package/v2Containers/WebPush/Create/utils/previewUtils.js +89 -0
- package/v2Containers/WebPush/Create/utils/urlValidation.js +115 -0
- package/v2Containers/WebPush/Create/utils/urlValidation.test.js +449 -0
- package/v2Containers/WebPush/Create/utils/validation.js +75 -0
- package/v2Containers/WebPush/Create/utils/validation.test.js +283 -0
- package/v2Containers/WebPush/actions.js +60 -0
- package/v2Containers/WebPush/constants.js +128 -0
- package/v2Containers/WebPush/index.js +2 -0
- package/v2Containers/WebPush/reducer.js +104 -0
- package/v2Containers/WebPush/sagas.js +119 -0
- package/v2Containers/WebPush/selectors.js +65 -0
- package/v2Containers/WebPush/tests/reducer.test.js +863 -0
- package/v2Containers/WebPush/tests/sagas.test.js +566 -0
- package/v2Containers/WebPush/tests/selectors.test.js +843 -0
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +528 -431
- package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -254
- package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -362
- package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
- package/v2Containers/BeePopupEditor/constants.js +0 -10
- package/v2Containers/BeePopupEditor/index.js +0 -193
- package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
- package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1046
- package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
- package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
- package/v2Containers/InApp/tests/selectors.test.js +0 -612
- package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -162
- package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
- package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -9
- package/v2Containers/InAppWrapper/constants.js +0 -16
- package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
- package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
- package/v2Containers/InAppWrapper/index.js +0 -148
- package/v2Containers/InAppWrapper/messages.js +0 -49
- package/v2Containers/InappAdvance/index.js +0 -1099
- package/v2Containers/InappAdvance/index.scss +0 -10
- package/v2Containers/InappAdvance/tests/index.test.js +0 -448
|
@@ -18,10 +18,9 @@
|
|
|
18
18
|
margin-top: $CAP_SPACE_16;
|
|
19
19
|
font-weight: 500;
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
margin-top: $CAP_SPACE_08;
|
|
21
|
+
|
|
22
|
+
.inapp-template-device-tab {
|
|
23
|
+
margin-top: $CAP_SPACE_24;
|
|
25
24
|
}
|
|
26
25
|
}
|
|
27
26
|
#inapp-template-name-input {
|
|
@@ -45,11 +45,11 @@ export default defineMessages({
|
|
|
45
45
|
},
|
|
46
46
|
inAppCreateNotification: {
|
|
47
47
|
id: `${prefix}.inAppCreateNotification`,
|
|
48
|
-
defaultMessage: "
|
|
48
|
+
defaultMessage: "{name} template created successfully",
|
|
49
49
|
},
|
|
50
50
|
inAppEditNotification: {
|
|
51
|
-
id: `${prefix}.
|
|
52
|
-
defaultMessage: "
|
|
51
|
+
id: `${prefix}.inAppCreateNotification`,
|
|
52
|
+
defaultMessage: "{name} template edited successfully",
|
|
53
53
|
},
|
|
54
54
|
templateNameMinCharacters: {
|
|
55
55
|
id: `${prefix}.templateNameMinCharacters`,
|
|
@@ -111,8 +111,4 @@ export default defineMessages({
|
|
|
111
111
|
defaultMessage:
|
|
112
112
|
"Footer",
|
|
113
113
|
},
|
|
114
|
-
keepContentSameForBoth: {
|
|
115
|
-
id: `${prefix}.keepContentSameForBoth`,
|
|
116
|
-
defaultMessage: 'Keep content same for both',
|
|
117
|
-
},
|
|
118
114
|
});
|
|
@@ -15,19 +15,12 @@ import {
|
|
|
15
15
|
INAPP_EDIT_TEMPLATE_REQUEST,
|
|
16
16
|
INAPP_EDIT_TEMPLATE_SUCCESS,
|
|
17
17
|
INAPP_EDIT_TEMPLATE_FAILURE,
|
|
18
|
-
GET_BEE_POPUP_BUILDER_TOKEN_REQUEST,
|
|
19
|
-
GET_BEE_POPUP_BUILDER_TOKEN_SUCCESS,
|
|
20
|
-
GET_BEE_POPUP_BUILDER_TOKEN_FAILURE,
|
|
21
18
|
} from './constants';
|
|
22
19
|
|
|
23
20
|
const initialState = fromJS({
|
|
24
21
|
uploadedAssetData: {},
|
|
25
22
|
createTemplateInProgress: false,
|
|
26
23
|
editTemplateInProgress: false,
|
|
27
|
-
beePopupBuilderTokenFetching: false,
|
|
28
|
-
beePopupBuilderToken: {},
|
|
29
|
-
beePopupBuilderTokenError: false,
|
|
30
|
-
beePopupBuilderTokenErrorMessage: '',
|
|
31
24
|
});
|
|
32
25
|
|
|
33
26
|
function inAppReducer(state = initialState, action) {
|
|
@@ -87,9 +80,9 @@ function inAppReducer(state = initialState, action) {
|
|
|
87
80
|
return state
|
|
88
81
|
.set(
|
|
89
82
|
'uploadAssetSuccess',
|
|
90
|
-
action.statusCode !== undefined
|
|
91
|
-
|
|
92
|
-
|
|
83
|
+
action.statusCode !== undefined &&
|
|
84
|
+
action.statusCode !== '' &&
|
|
85
|
+
action.statusCode < 300,
|
|
93
86
|
)
|
|
94
87
|
.set('assetUploading', false)
|
|
95
88
|
.set(
|
|
@@ -108,17 +101,6 @@ function inAppReducer(state = initialState, action) {
|
|
|
108
101
|
? `uploadedAssetData${action.templateType}`
|
|
109
102
|
: 'uploadedAssetData',
|
|
110
103
|
);
|
|
111
|
-
case GET_BEE_POPUP_BUILDER_TOKEN_REQUEST:
|
|
112
|
-
return state.set('beePopupBuilderTokenFetching', true);
|
|
113
|
-
case GET_BEE_POPUP_BUILDER_TOKEN_SUCCESS:
|
|
114
|
-
return state
|
|
115
|
-
.set('beePopupBuilderTokenFetching', false)
|
|
116
|
-
.set('beePopupBuilderToken', action.data);
|
|
117
|
-
case GET_BEE_POPUP_BUILDER_TOKEN_FAILURE:
|
|
118
|
-
return state
|
|
119
|
-
.set('beePopupBuilderTokenFetching', false)
|
|
120
|
-
.set('beePopupBuilderTokenError', true)
|
|
121
|
-
.set('beePopupBuilderTokenErrorMessage', fromJS(action.error));
|
|
122
104
|
default:
|
|
123
105
|
return state;
|
|
124
106
|
}
|
|
@@ -15,9 +15,6 @@ import {
|
|
|
15
15
|
GET_INAPP_TEMPLATE_DETAILS_SUCCESS,
|
|
16
16
|
GET_INAPP_TEMPLATE_DETAILS_FAILURE,
|
|
17
17
|
GET_INAPP_TEMPLATE_DETAILS_REQUEST,
|
|
18
|
-
GET_BEE_POPUP_BUILDER_TOKEN_REQUEST,
|
|
19
|
-
GET_BEE_POPUP_BUILDER_TOKEN_SUCCESS,
|
|
20
|
-
GET_BEE_POPUP_BUILDER_TOKEN_FAILURE,
|
|
21
18
|
} from './constants';
|
|
22
19
|
import { INAPP } from '../CreativesContainer/constants';
|
|
23
20
|
|
|
@@ -39,6 +36,8 @@ export function* watchUploadInAppAsset() {
|
|
|
39
36
|
UPLOAD_INAPP_ASSET_REQUEST,
|
|
40
37
|
uploadInAppAsset,
|
|
41
38
|
);
|
|
39
|
+
|
|
40
|
+
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
export function* inAppTemplateCreate({ payload, callback }) {
|
|
@@ -75,6 +74,8 @@ export function* watchCreateTemplate() {
|
|
|
75
74
|
INAPP_TEMPLATE_CREATE_REQUEST,
|
|
76
75
|
inAppTemplateCreate,
|
|
77
76
|
);
|
|
77
|
+
|
|
78
|
+
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
// FOR EDIT
|
|
@@ -104,6 +105,8 @@ export function* editTemplate({ payload, callback }) {
|
|
|
104
105
|
}
|
|
105
106
|
export function* watchEditTemplate() {
|
|
106
107
|
yield takeLatest(INAPP_EDIT_TEMPLATE_REQUEST, editTemplate);
|
|
108
|
+
|
|
109
|
+
|
|
107
110
|
}
|
|
108
111
|
|
|
109
112
|
export function* getTemplateDetails({ id, callback }) {
|
|
@@ -129,29 +132,8 @@ export function* watchGetTemplateDetails() {
|
|
|
129
132
|
GET_INAPP_TEMPLATE_DETAILS_REQUEST,
|
|
130
133
|
getTemplateDetails,
|
|
131
134
|
);
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
export function* getBeePopupBuilderToken() {
|
|
135
|
-
try {
|
|
136
|
-
const result = yield call(Api.getBeePopupBuilderToken);
|
|
137
|
-
if (result.success) {
|
|
138
|
-
yield put({
|
|
139
|
-
type: GET_BEE_POPUP_BUILDER_TOKEN_SUCCESS,
|
|
140
|
-
data: result.response,
|
|
141
|
-
});
|
|
142
|
-
} else {
|
|
143
|
-
yield put({ type: GET_BEE_POPUP_BUILDER_TOKEN_FAILURE, error: result.message });
|
|
144
|
-
}
|
|
145
|
-
} catch (error) {
|
|
146
|
-
yield put({ type: GET_BEE_POPUP_BUILDER_TOKEN_FAILURE, error });
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
export function* watchGetBeePopupBuilderToken() {
|
|
151
|
-
yield takeLatest(
|
|
152
|
-
GET_BEE_POPUP_BUILDER_TOKEN_REQUEST,
|
|
153
|
-
getBeePopupBuilderToken,
|
|
154
|
-
);
|
|
135
|
+
|
|
136
|
+
|
|
155
137
|
}
|
|
156
138
|
|
|
157
139
|
export default [
|
|
@@ -159,7 +141,6 @@ export default [
|
|
|
159
141
|
watchGetTemplateDetails,
|
|
160
142
|
watchUploadInAppAsset,
|
|
161
143
|
watchEditTemplate,
|
|
162
|
-
watchGetBeePopupBuilderToken,
|
|
163
144
|
];
|
|
164
145
|
|
|
165
146
|
export function* v2InAppSagas() {
|
|
@@ -168,6 +149,5 @@ export function* v2InAppSagas() {
|
|
|
168
149
|
watchGetTemplateDetails(),
|
|
169
150
|
watchUploadInAppAsset(),
|
|
170
151
|
watchEditTemplate(),
|
|
171
|
-
watchGetBeePopupBuilderToken(),
|
|
172
152
|
]);
|
|
173
|
-
}
|
|
153
|
+
}
|
|
@@ -3,30 +3,10 @@ import { createSelector } from 'reselect';
|
|
|
3
3
|
const selectInAppDomain = () => (state) => state.get('inapp');
|
|
4
4
|
const selectAccountDomain = () => (state) => state.get('templates');
|
|
5
5
|
|
|
6
|
-
const makeSelectInApp = () =>
|
|
6
|
+
const makeSelectInApp = () =>
|
|
7
|
+
createSelector(selectInAppDomain(), (substate) => substate?.toJS());
|
|
7
8
|
|
|
8
|
-
const makeSelectAccount = () =>
|
|
9
|
+
const makeSelectAccount = () =>
|
|
10
|
+
createSelector(selectAccountDomain(), (substate) => substate.toJS());
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
selectInAppDomain(),
|
|
12
|
-
(substate) => substate.get('beePopupBuilderTokenFetching'),
|
|
13
|
-
);
|
|
14
|
-
|
|
15
|
-
const makeSelectBeePopupBuilderToken = () => createSelector(
|
|
16
|
-
selectInAppDomain(),
|
|
17
|
-
(substate) => substate.get('beePopupBuilderToken'),
|
|
18
|
-
);
|
|
19
|
-
|
|
20
|
-
const makeSelectGetTemplateDetailsInProgress = () => createSelector(
|
|
21
|
-
selectInAppDomain(),
|
|
22
|
-
(substate) => substate.get('getTemplateDetailsInProgress'),
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export {
|
|
27
|
-
makeSelectInApp,
|
|
28
|
-
makeSelectAccount,
|
|
29
|
-
makeSelectBeePopupBuilderTokenFetching,
|
|
30
|
-
makeSelectBeePopupBuilderToken,
|
|
31
|
-
makeSelectGetTemplateDetailsInProgress,
|
|
32
|
-
};
|
|
12
|
+
export { makeSelectInApp, makeSelectAccount };
|
|
@@ -6,7 +6,7 @@ import { configureStore } from '@capillarytech/vulcan-react-sdk/utils';
|
|
|
6
6
|
import history from '../../../utils/history';
|
|
7
7
|
import { initialReducer } from '../../../initialReducer';
|
|
8
8
|
import { InApp } from '../index';
|
|
9
|
-
import { render, screen, fireEvent, within
|
|
9
|
+
import { render, screen, fireEvent, within } from '../../../utils/test-utils';
|
|
10
10
|
import {
|
|
11
11
|
editData,
|
|
12
12
|
accountData,
|
|
@@ -17,27 +17,11 @@ import {
|
|
|
17
17
|
import { metaEntities, getDefaultTags, injectedTags } from '../../Zalo/tests/mockData';
|
|
18
18
|
import { getCtaObject } from '../utils';
|
|
19
19
|
|
|
20
|
-
// Mock redux-auth-wrapper to prevent location.pathname.replace errors
|
|
21
|
-
jest.mock('redux-auth-wrapper/history4/redirect', () => ({
|
|
22
|
-
connectedRouterRedirect: jest.fn((config) => (Component) => Component),
|
|
23
|
-
}));
|
|
24
|
-
|
|
25
20
|
const mockActions = {
|
|
26
21
|
getTemplateInfoById: jest.fn(),
|
|
27
22
|
resetEditTemplate: jest.fn(),
|
|
28
|
-
getTemplateDetails: jest.fn(
|
|
29
|
-
// Simulate successful template details fetch to prevent loading state
|
|
30
|
-
// The callback is setSpin function, call it with false to stop spinner
|
|
31
|
-
if (callback && typeof callback === 'function') {
|
|
32
|
-
// Use setTimeout to ensure it's called after render
|
|
33
|
-
setTimeout(() => {
|
|
34
|
-
callback(false);
|
|
35
|
-
}, 0);
|
|
36
|
-
}
|
|
37
|
-
}),
|
|
23
|
+
getTemplateDetails: jest.fn(),
|
|
38
24
|
editTemplate: jest.fn(),
|
|
39
|
-
createInAppTemplate: jest.fn(),
|
|
40
|
-
clearCreateResponse: jest.fn(),
|
|
41
25
|
};
|
|
42
26
|
const mockGlobalActions = {
|
|
43
27
|
fetchSchemaForEntity: jest.fn(),
|
|
@@ -75,65 +59,33 @@ describe('Test activity inApp container', () => {
|
|
|
75
59
|
accountData,
|
|
76
60
|
isFullMode: true,
|
|
77
61
|
params: { id: 'test'},
|
|
78
|
-
defaultData: {}, // Ensure no HTML editor type
|
|
79
|
-
isEditInApp: false, // Ensure not in edit mode to avoid loading check
|
|
80
62
|
});
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
fireEvent.click(within(androidTab).getByText(/android/i));
|
|
103
|
-
const msgBox = screen.queryAllByPlaceholderText(/Please input in-app notification message content/i);
|
|
104
|
-
if (msgBox.length > 0) {
|
|
105
|
-
msgBox[0].focus();
|
|
106
|
-
fireEvent.change(msgBox[0], { target: { value: 'val' }});
|
|
107
|
-
}
|
|
108
|
-
} else if (beeEditor) {
|
|
109
|
-
// BEE editor UI - component is rendered, which is sufficient for this test
|
|
110
|
-
// The actual edit functionality is tested in InappAdvanced tests
|
|
111
|
-
expect(beeEditor).toBeInTheDocument();
|
|
112
|
-
return; // Exit early since BEE editor doesn't have the old UI elements
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// Find update button - might be in BEE editor or old UI
|
|
116
|
-
const updateBtn = screen.queryByRole('button', {
|
|
63
|
+
const inputBox = await screen.findAllByPlaceholderText(
|
|
64
|
+
'Enter template name',
|
|
65
|
+
);
|
|
66
|
+
fireEvent.change(inputBox[0], { target: { value: 'Hello, welcome' } });
|
|
67
|
+
inputBox[0].focus();
|
|
68
|
+
const iosTab = screen.getByRole('tab', {
|
|
69
|
+
name: /ios/i,
|
|
70
|
+
});
|
|
71
|
+
fireEvent.click(within(iosTab).getByText(/ios/i));
|
|
72
|
+
const androidTab = screen.getByRole('tab', {
|
|
73
|
+
name: /android/i,
|
|
74
|
+
});
|
|
75
|
+
fireEvent.click(within(androidTab).getByText(/android/i));
|
|
76
|
+
const inputNameBox = await screen.findAllByPlaceholderText(
|
|
77
|
+
'Enter template name',
|
|
78
|
+
);
|
|
79
|
+
fireEvent.change(inputNameBox[0], { target: { value: 'Hello, welcome' } });
|
|
80
|
+
const msgBox = screen.getAllByPlaceholderText(/Please input in-app notification message content/i);
|
|
81
|
+
msgBox[0].focus();
|
|
82
|
+
fireEvent.change(msgBox[0], { target: { value: 'val' }});
|
|
83
|
+
const updateBtn = screen.getByRole('button', {
|
|
117
84
|
name: /update/i,
|
|
118
85
|
});
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
fireEvent.click(updateBtn);
|
|
123
|
-
// BEE editor might call editTemplate, old UI definitely should
|
|
124
|
-
await waitFor(() => {
|
|
125
|
-
expect(mockActions.editTemplate).toHaveBeenCalled();
|
|
126
|
-
}, { timeout: 3000 });
|
|
127
|
-
} else {
|
|
128
|
-
// If no update button found, verify component rendered by checking for any rendered content
|
|
129
|
-
// This test verifies the component renders correctly with editData
|
|
130
|
-
// Check for any visible text or elements that indicate the component rendered
|
|
131
|
-
const hasAnyContent = beeEditor || iosTab || androidTab ||
|
|
132
|
-
screen.queryByText(/done/i) ||
|
|
133
|
-
screen.queryByText(/creative layout/i) ||
|
|
134
|
-
screen.queryByRole('button');
|
|
135
|
-
expect(hasAnyContent).toBeTruthy();
|
|
136
|
-
}
|
|
86
|
+
expect(updateBtn).toBeEnabled();
|
|
87
|
+
fireEvent.click(updateBtn);
|
|
88
|
+
expect(mockActions.editTemplate).toHaveBeenCalled();
|
|
137
89
|
});
|
|
138
90
|
it('test case for inApp template configuration', async () => {
|
|
139
91
|
renderComponent({
|
|
@@ -145,40 +97,19 @@ describe('Test activity inApp container', () => {
|
|
|
145
97
|
isFullMode: false,
|
|
146
98
|
params: { id: 'test'},
|
|
147
99
|
getFormData: jest.fn(),
|
|
148
|
-
defaultData: {}, // Ensure no HTML editor type
|
|
149
|
-
isEditInApp: false, // Ensure not in edit mode to avoid loading check
|
|
150
100
|
});
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const hasCreateButton = screen.queryByText(/create/i);
|
|
158
|
-
const hasLayoutOption = screen.queryByText(/creative layout/i);
|
|
159
|
-
expect(hasTabs || hasBeeEditor || hasDoneButton || hasCreateButton || hasLayoutOption).toBeTruthy();
|
|
160
|
-
}, { timeout: 5000 });
|
|
161
|
-
|
|
162
|
-
const iosTab = screen.queryByRole('tab', { name: /ios/i });
|
|
163
|
-
const androidTab = screen.queryByRole('tab', { name: /android/i });
|
|
164
|
-
|
|
165
|
-
if (iosTab && androidTab) {
|
|
166
|
-
fireEvent.click(within(iosTab).getByText(/ios/i));
|
|
167
|
-
fireEvent.click(within(androidTab).getByText(/android/i));
|
|
168
|
-
const msgBox = screen.getAllByPlaceholderText(/Please input in-app notification message content/i);
|
|
169
|
-
if (msgBox.length > 0) {
|
|
170
|
-
msgBox[0].focus();
|
|
171
|
-
fireEvent.change(msgBox[0], { target: { value: 'val' }});
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
// In create mode (isFullMode: false, no editData), button should be "Done"
|
|
176
|
-
// But if templateData is provided, it might be in edit mode, so check for either
|
|
177
|
-
const doneBtn = screen.queryByRole('button', {
|
|
178
|
-
name: /done/i,
|
|
179
|
-
}) || screen.queryByRole('button', {
|
|
180
|
-
name: /update/i,
|
|
101
|
+
const iosTab = screen.getByRole('tab', {
|
|
102
|
+
name: /ios/i,
|
|
103
|
+
});
|
|
104
|
+
fireEvent.click(within(iosTab).getByText(/ios/i));
|
|
105
|
+
const androidTab = screen.getByRole('tab', {
|
|
106
|
+
name: /android/i,
|
|
181
107
|
});
|
|
108
|
+
fireEvent.click(within(androidTab).getByText(/android/i));
|
|
109
|
+
const msgBox = screen.getAllByPlaceholderText(/Please input in-app notification message content/i);
|
|
110
|
+
msgBox[0].focus();
|
|
111
|
+
fireEvent.change(msgBox[0], { target: { value: 'val' }});
|
|
112
|
+
const doneBtn = screen.getByText(/done/i);
|
|
182
113
|
expect(doneBtn).toBeEnabled();
|
|
183
114
|
});
|
|
184
115
|
it('test case for inApp template copy content flow', async () => {
|
|
@@ -200,57 +131,22 @@ describe('Test activity inApp container', () => {
|
|
|
200
131
|
accountData,
|
|
201
132
|
isFullMode: true,
|
|
202
133
|
params: { id: 'test'},
|
|
203
|
-
defaultData: {}, // Ensure no HTML editor type
|
|
204
|
-
isEditInApp: false, // Ensure not in edit mode to avoid loading check
|
|
205
134
|
});
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
const hasTabs = screen.queryByRole('tab', { name: /ios/i });
|
|
210
|
-
const hasBeeEditor = screen.queryByTestId('bee-popup-editor-ANDROID');
|
|
211
|
-
const hasLayoutOption = screen.queryByText(/top banner/i);
|
|
212
|
-
const hasUpdateButton = screen.queryByText(/update/i);
|
|
213
|
-
const hasCreateButton = screen.queryByText(/create/i);
|
|
214
|
-
const hasLayoutHeading = screen.queryByText(/creative layout/i);
|
|
215
|
-
expect(hasTabs || hasBeeEditor || hasLayoutOption || hasUpdateButton || hasCreateButton || hasLayoutHeading).toBeTruthy();
|
|
216
|
-
}, { timeout: 5000 });
|
|
217
|
-
|
|
218
|
-
// Try to find layout option (might be in HTML editor mode)
|
|
219
|
-
const layoutOption = screen.queryByText(/top banner/i);
|
|
220
|
-
if (layoutOption) {
|
|
221
|
-
fireEvent.click(layoutOption);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// Try to find copy link (old UI with CapDeviceContent)
|
|
225
|
-
const copyLink = screen.queryByRole('link', {
|
|
135
|
+
const layoutOption = screen.getByText(/top banner/i);
|
|
136
|
+
fireEvent.click(layoutOption);
|
|
137
|
+
const copyLink = screen.getByRole('link', {
|
|
226
138
|
name: /copy title and content from ios/i,
|
|
227
139
|
});
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
});
|
|
239
|
-
if (copyLinkIos) {
|
|
240
|
-
fireEvent.click(copyLinkIos);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
expect(copyLink).toBeInTheDocument();
|
|
244
|
-
} else {
|
|
245
|
-
// If copy link doesn't exist (BEE editor or HTML editor), just verify component rendered
|
|
246
|
-
// This test verifies the component renders correctly with editData and location
|
|
247
|
-
const beeEditor = screen.queryByTestId('bee-popup-editor-ANDROID');
|
|
248
|
-
const htmlEditor = screen.queryByTestId('inapp-html-editor');
|
|
249
|
-
const tabs = screen.queryByRole('tab');
|
|
250
|
-
const hasAnyButton = screen.queryByRole('button');
|
|
251
|
-
const hasAnyText = screen.queryByText(/done/i) || screen.queryByText(/update/i) || screen.queryByText(/creative layout/i);
|
|
252
|
-
expect(beeEditor || htmlEditor || tabs || hasAnyButton || hasAnyText).toBeTruthy();
|
|
253
|
-
}
|
|
140
|
+
fireEvent.click(copyLink);
|
|
141
|
+
const iosTab = screen.getByRole('tab', {
|
|
142
|
+
name: /ios/i,
|
|
143
|
+
});
|
|
144
|
+
fireEvent.click(within(iosTab).getByText(/ios/i));
|
|
145
|
+
const copyLinkIos = screen.getByRole('link', {
|
|
146
|
+
name: /copy title and content from android/i,
|
|
147
|
+
});
|
|
148
|
+
fireEvent.click(copyLinkIos);
|
|
149
|
+
expect(copyLink).toBeInTheDocument();
|
|
254
150
|
});
|
|
255
151
|
});
|
|
256
152
|
describe('test for getCtaObject function', () => {
|
|
@@ -260,38 +260,4 @@ describe("zalo reducer", () => {
|
|
|
260
260
|
expect(inAppReducer(state, action)).toEqual(expectedResult);
|
|
261
261
|
});
|
|
262
262
|
});
|
|
263
|
-
describe("Reducer : GET_BEE_POPUP_BUILDER_TOKEN_REQUEST", () => {
|
|
264
|
-
it.concurrent("should handle GET_BEE_POPUP_BUILDER_TOKEN_REQUEST action", () => {
|
|
265
|
-
const state = fromJS({
|
|
266
|
-
beePopupBuilderTokenFetching: false,
|
|
267
|
-
});
|
|
268
|
-
const expectedResult = state.set("beePopupBuilderTokenFetching", true);
|
|
269
|
-
expect(inAppReducer(state, actions.getBeePopupBuilderToken({}))).toEqual(expectedResult);
|
|
270
|
-
});
|
|
271
|
-
it.concurrent("should handle GET_BEE_POPUP_BUILDER_TOKEN_SUCCESS action", () => {
|
|
272
|
-
const state = fromJS({
|
|
273
|
-
beePopupBuilderTokenFetching: false,
|
|
274
|
-
beePopupBuilderToken: 'data',
|
|
275
|
-
});
|
|
276
|
-
const action = {
|
|
277
|
-
type: types.GET_BEE_POPUP_BUILDER_TOKEN_SUCCESS,
|
|
278
|
-
data: 'data',
|
|
279
|
-
};
|
|
280
|
-
const expectedResult = state.set("beePopupBuilderTokenFetching", false).set("beePopupBuilderToken", 'data');
|
|
281
|
-
expect(inAppReducer(state, action)).toEqual(expectedResult);
|
|
282
|
-
});
|
|
283
|
-
it.concurrent("should handle GET_BEE_POPUP_BUILDER_TOKEN_FAILURE action", () => {
|
|
284
|
-
const state = fromJS({
|
|
285
|
-
beePopupBuilderTokenFetching: false,
|
|
286
|
-
beePopupBuilderTokenError: true,
|
|
287
|
-
beePopupBuilderTokenErrorMessage: 'error',
|
|
288
|
-
});
|
|
289
|
-
const action = {
|
|
290
|
-
type: types.GET_BEE_POPUP_BUILDER_TOKEN_FAILURE,
|
|
291
|
-
error: 'error',
|
|
292
|
-
};
|
|
293
|
-
const expectedResult = state.set("beePopupBuilderTokenFetching", false).set("beePopupBuilderTokenError", true).set("beePopupBuilderTokenErrorMessage", fromJS('error'));
|
|
294
|
-
expect(inAppReducer(state, action)).toEqual(expectedResult);
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
263
|
});
|
|
@@ -4,10 +4,12 @@ import {
|
|
|
4
4
|
import { createMockTask } from 'redux-saga/utils';
|
|
5
5
|
import { expectSaga } from 'redux-saga-test-plan';
|
|
6
6
|
import * as sagas from '../sagas';
|
|
7
|
-
import { v2InAppSagas } from '../sagas';
|
|
8
7
|
import * as Api from '../../../services/api';
|
|
9
8
|
import * as types from '../constants';
|
|
10
9
|
import { INAPP } from '../../CreativesContainer/constants';
|
|
10
|
+
import {
|
|
11
|
+
v2InAppSagas,
|
|
12
|
+
} from "../sagas";
|
|
11
13
|
|
|
12
14
|
describe('test for uploadInAppAsset function', () => {
|
|
13
15
|
it('should dispatch UPLOAD_INAPP_ASSET_SUCCESS action with asset data, status code, and template type', () => {
|
|
@@ -395,65 +397,11 @@ describe('test for getTemplateDetails', () => {
|
|
|
395
397
|
});
|
|
396
398
|
});
|
|
397
399
|
|
|
398
|
-
describe('test for getBeePopupBuilderToken', () => {
|
|
399
|
-
it('should call getBeePopupBuilderToken when GET_BEE_POPUP_BUILDER_TOKEN_REQUEST action is dispatched', () => {
|
|
400
|
-
const watcher = sagas.watchGetBeePopupBuilderToken();
|
|
401
|
-
const gen = watcher.next().value;
|
|
402
|
-
expect(gen).toEqual(takeLatest(types.GET_BEE_POPUP_BUILDER_TOKEN_REQUEST, sagas.getBeePopupBuilderToken));
|
|
403
|
-
});
|
|
404
|
-
it('should cancel the watcher watchGetBeePopupBuilderToken', () => {
|
|
405
|
-
const gen = sagas.watchGetBeePopupBuilderToken();
|
|
406
|
-
const mockTask = createMockTask();
|
|
407
|
-
expect(gen.next().value).toEqual(takeLatest(types.GET_BEE_POPUP_BUILDER_TOKEN_REQUEST, sagas.getBeePopupBuilderToken));
|
|
408
|
-
expect(gen.next(mockTask).done).toBe(true);
|
|
409
|
-
expect(mockTask.isRunning()).toBe(true);
|
|
410
|
-
expect(gen.next().value).toEqual(undefined);
|
|
411
|
-
});
|
|
412
|
-
it('should handle GET_BEE_POPUP_BUILDER_TOKEN_SUCCESS', () => {
|
|
413
|
-
const payload = {}; // Add your payload for testing
|
|
414
|
-
const mockResult = {
|
|
415
|
-
success: true,
|
|
416
|
-
status: {
|
|
417
|
-
code: 200,
|
|
418
|
-
},
|
|
419
|
-
response: { /* mock response */ },
|
|
420
|
-
};
|
|
421
|
-
const iterator = sagas.getBeePopupBuilderToken({ payload, callback: jest.fn() });
|
|
422
|
-
expect(iterator.next().value).toEqual(call(Api.getBeePopupBuilderToken));
|
|
423
|
-
expect(iterator.next(mockResult).value).toEqual(
|
|
424
|
-
put({ type: types.GET_BEE_POPUP_BUILDER_TOKEN_SUCCESS, data: mockResult.response })
|
|
425
|
-
);
|
|
426
|
-
expect(iterator.next().done).toBe(true);
|
|
427
|
-
});
|
|
428
|
-
it('should handle GET_BEE_POPUP_BUILDER_TOKEN_FAILURE', () => {
|
|
429
|
-
const payload = {};
|
|
430
|
-
const error = new Error('Test error');
|
|
431
|
-
const iterator = sagas.getBeePopupBuilderToken({ payload });
|
|
432
|
-
expect(iterator.next().value).toEqual(call(Api.getBeePopupBuilderToken));
|
|
433
|
-
expect(iterator.throw(error).value).toEqual(
|
|
434
|
-
put({ type: types.GET_BEE_POPUP_BUILDER_TOKEN_FAILURE, error })
|
|
435
|
-
);
|
|
436
|
-
expect(iterator.next().done).toBe(true);
|
|
437
|
-
});
|
|
438
|
-
it('should handle error case', () => {
|
|
439
|
-
const payload = {};
|
|
440
|
-
const mockResult = {
|
|
441
|
-
success: false,
|
|
442
|
-
status: {
|
|
443
|
-
code: 400,
|
|
444
|
-
},
|
|
445
|
-
message: 'Test error',
|
|
446
|
-
};
|
|
447
|
-
const iterator = sagas.getBeePopupBuilderToken({ payload });
|
|
448
|
-
expect(iterator.next().value).toEqual(call(Api.getBeePopupBuilderToken));
|
|
449
|
-
expect(iterator.next(mockResult).value).toEqual(
|
|
450
|
-
put({ type: types.GET_BEE_POPUP_BUILDER_TOKEN_FAILURE, error: mockResult.message })
|
|
451
|
-
);
|
|
452
|
-
expect(iterator.next().done).toBe(true);
|
|
453
|
-
});
|
|
454
|
-
});
|
|
455
400
|
|
|
456
401
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
402
|
+
|
|
403
|
+
describe("v2InAppSagas Combined", () => {
|
|
404
|
+
it("should initialize all v2InAppSagas-related watcher sagas without error", () => {
|
|
405
|
+
return expectSaga(v2InAppSagas).run();
|
|
406
|
+
});
|
|
407
|
+
});
|