@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,80 @@
|
|
|
1
|
+
import { call, put, takeLatest, all } from 'redux-saga/effects';
|
|
2
|
+
import * as Api from '../../../services/api';
|
|
3
|
+
import * as types from './constants';
|
|
4
|
+
|
|
5
|
+
export function* getAllAssets({assetType , queryParams}) {
|
|
6
|
+
try {
|
|
7
|
+
const result = yield call(Api.getAllAssets, {assetType, queryParams});
|
|
8
|
+
yield put({ type: types.GET_ALL_ASSETS_SUCCESS, data: result?.response, isReset: queryParams.page === 1 });
|
|
9
|
+
} catch (error) {
|
|
10
|
+
yield put({ type: types.GET_ALL_ASSETS_FAILURE, error });
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function* uploadAsset(file, assetType, fileParams) {
|
|
15
|
+
try {
|
|
16
|
+
const result = yield call(Api.uploadFile, file, assetType, fileParams);
|
|
17
|
+
yield put({ type: types.UPLOAD_ASSET_SUCCESS, data: result.response.asset, statusCode: result.status ? result.status.code : '' });
|
|
18
|
+
} catch (error) {
|
|
19
|
+
yield put({ type: types.UPLOAD_ASSET_FAILURE, error });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function* deleteAssetById(assetId, assetType) {
|
|
24
|
+
try {
|
|
25
|
+
const result = yield call(Api.deleteAssetById, assetId, assetType);
|
|
26
|
+
|
|
27
|
+
yield put({ type: types.DELETE_ASSET_SUCCESS, data: result.response });
|
|
28
|
+
} catch (error) {
|
|
29
|
+
yield put({ type: types.DELETE_ASSET_FAILURE, error });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function* fetchUserList() {
|
|
34
|
+
try {
|
|
35
|
+
const result = yield call(Api.getUserList);
|
|
36
|
+
yield put({
|
|
37
|
+
type: types.GET_USER_LIST_SUCCESS,
|
|
38
|
+
data: result?.data?.result,
|
|
39
|
+
});
|
|
40
|
+
} catch (error) {
|
|
41
|
+
yield put({
|
|
42
|
+
type: types.GET_USER_LIST_FAILURE,
|
|
43
|
+
data: error,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
function* watchGetAllAssets() {
|
|
50
|
+
yield takeLatest(types.GET_ALL_ASSETS_REQUEST, getAllAssets);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function* watchDeleteAssetById() {
|
|
54
|
+
yield takeLatest(types.DELETE_ASSET_REQUEST, deleteAssetById);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function* watchUploadAsset() {
|
|
58
|
+
yield takeLatest(types.UPLOAD_ASSET_REQUEST, uploadAsset);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function* watchGetUserList() {
|
|
62
|
+
yield takeLatest(types.GET_USER_LIST_REQUEST, fetchUserList);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// All sagas to be loaded
|
|
66
|
+
export default [
|
|
67
|
+
watchGetAllAssets,
|
|
68
|
+
watchUploadAsset,
|
|
69
|
+
watchDeleteAssetById,
|
|
70
|
+
watchGetUserList,
|
|
71
|
+
];
|
|
72
|
+
|
|
73
|
+
export function* gallerySaga() {
|
|
74
|
+
yield all([
|
|
75
|
+
watchGetAllAssets(),
|
|
76
|
+
watchUploadAsset(),
|
|
77
|
+
watchDeleteAssetById(),
|
|
78
|
+
watchGetUserList(),
|
|
79
|
+
]);
|
|
80
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { createSelector } from 'reselect';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Direct selector to the gallery state domain
|
|
5
|
+
*/
|
|
6
|
+
const selectGalleryDomain = () => (state) => state.get('gallery');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Other specific selectors
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Default selector used by Gallery
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const makeSelectGallery = () => createSelector(
|
|
18
|
+
selectGalleryDomain(),
|
|
19
|
+
(substate) => substate.toJS()
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export default makeSelectGallery;
|
|
23
|
+
export {
|
|
24
|
+
selectGalleryDomain,
|
|
25
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as actions from '../actions';
|
|
2
|
+
import * as types from '../constants';
|
|
3
|
+
|
|
4
|
+
describe('Gallery actions', () => {
|
|
5
|
+
describe('uploadAsset', () => {
|
|
6
|
+
test.concurrent('has a type of UPLOAD_ASSET_REQUEST', () => {
|
|
7
|
+
const expected = {
|
|
8
|
+
type: types.UPLOAD_ASSET_REQUEST,
|
|
9
|
+
file: 'test',
|
|
10
|
+
assetType: 'IMAGE',
|
|
11
|
+
};
|
|
12
|
+
expect(actions.uploadAsset('test', 'IMAGE')).toEqual(expected);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
describe('getAllAssets', () => {
|
|
17
|
+
test.concurrent('has a type of GET_ALL_ASSETS_REQUEST', () => {
|
|
18
|
+
const expected = {
|
|
19
|
+
type: types.GET_ALL_ASSETS_REQUEST,
|
|
20
|
+
assetType: 'IMAGE',
|
|
21
|
+
};
|
|
22
|
+
expect(actions.getAllAssets('IMAGE')).toEqual(expected);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
|
|
2
|
+
import { fromJS } from 'immutable';
|
|
3
|
+
import galleryReducer from '../reducer';
|
|
4
|
+
import * as types from '../constants';
|
|
5
|
+
import * as actions from '../actions';
|
|
6
|
+
|
|
7
|
+
describe('galleryReducer', () => {
|
|
8
|
+
describe('Initial State should match snapshot', () => {
|
|
9
|
+
it.concurrent('returns the initial state', () => {
|
|
10
|
+
expect(galleryReducer(undefined, {})).toMatchSnapshot();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe('Request for all assets', () => {
|
|
15
|
+
const initialState = fromJS({
|
|
16
|
+
assetList: [],
|
|
17
|
+
fetchingAllAssets: false,
|
|
18
|
+
fetchAllAssetSuccess: false,
|
|
19
|
+
});
|
|
20
|
+
const requestAction = actions.getAllAssets('IMAGE');
|
|
21
|
+
const stateOnRequest = galleryReducer(initialState, requestAction);
|
|
22
|
+
const successStateExpected = {
|
|
23
|
+
assetList: [
|
|
24
|
+
{
|
|
25
|
+
_id: '5678fdghfh',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
_id: '5678fdghfh5',
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
fetchingAllAssets: false,
|
|
32
|
+
fetchAllAssetSuccess: true,
|
|
33
|
+
};
|
|
34
|
+
const successAction = {
|
|
35
|
+
type: types.GET_ALL_ASSETS_SUCCESS,
|
|
36
|
+
data: {
|
|
37
|
+
assets: [
|
|
38
|
+
{
|
|
39
|
+
_id: '5678fdghfh',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
_id: '5678fdghfh5',
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
const stateOnSuccess = galleryReducer(initialState, successAction);
|
|
48
|
+
const failureAction = {
|
|
49
|
+
type: types.GET_ALL_ASSETS_FAILURE,
|
|
50
|
+
error: 'Some error Occurred',
|
|
51
|
+
};
|
|
52
|
+
const stateOnFailure = galleryReducer(initialState, failureAction);
|
|
53
|
+
it.concurrent('should set fetching_schedule_message to true on request', () => {
|
|
54
|
+
expect(stateOnRequest.toJS()).toEqual({ assetList: [], fetchingAllAssets: true, fetchAllAssetSuccess: false });
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it.concurrent('should set assetList from response on success', () => {
|
|
58
|
+
expect(stateOnSuccess.toJS()).toEqual(successStateExpected);
|
|
59
|
+
});
|
|
60
|
+
it.concurrent('should set fetching_schedule_message to false on GET_ALL_ASSETS_FAILURE', () => {
|
|
61
|
+
expect(stateOnFailure.toJS()).toEqual({assetList: [], fetchingAllAssets: false, fetchAllAssetSuccess: false});
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
describe('Upload Assets', () => {
|
|
66
|
+
const initialState = fromJS({
|
|
67
|
+
assetUploading: false,
|
|
68
|
+
});
|
|
69
|
+
const requestAction = actions.uploadAsset({}, 'IMAGE', {});
|
|
70
|
+
const stateOnRequest = galleryReducer(initialState, requestAction);
|
|
71
|
+
const successStateExpected = {
|
|
72
|
+
assetUploading: false,
|
|
73
|
+
uploadAssetSuccess: false,
|
|
74
|
+
uploadedAssetData: undefined,
|
|
75
|
+
};
|
|
76
|
+
const successAction = {
|
|
77
|
+
type: types.UPLOAD_ASSET_SUCCESS,
|
|
78
|
+
};
|
|
79
|
+
const stateOnSuccess = galleryReducer(initialState, successAction);
|
|
80
|
+
const failureAction = {
|
|
81
|
+
type: types.UPLOAD_ASSET_FAILURE,
|
|
82
|
+
error: 'Some error Occurred',
|
|
83
|
+
};
|
|
84
|
+
const stateOnFailure = galleryReducer(initialState, failureAction);
|
|
85
|
+
it.concurrent('should set assetUploading to true and uploadAssetSuccess to false on request', () => {
|
|
86
|
+
expect(stateOnRequest.toJS()).toEqual({ uploadAssetSuccess: false, assetUploading: true });
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it.concurrent('should set assetUploading to false and uploadAssetSuccess to true on success', () => {
|
|
90
|
+
expect(stateOnSuccess.toJS()).toEqual(successStateExpected);
|
|
91
|
+
});
|
|
92
|
+
it.concurrent('should set assetUploading to false and uploadAssetSuccess to false on UPLOAD_ASSET_FAILURE', () => {
|
|
93
|
+
expect(stateOnFailure.toJS()).toEqual({ uploadAssetSuccess: false, assetUploading: false });
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
});
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { expectSaga } from 'redux-saga-test-plan';
|
|
2
|
+
import { call } 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('Asset and User Management Sagas', () => {
|
|
9
|
+
jest.setTimeout(1000);
|
|
10
|
+
|
|
11
|
+
describe('getAllAssets Saga', () => {
|
|
12
|
+
const mockAssets = [{ id: 1, url: 'http://example.com/asset.jpg' }];
|
|
13
|
+
const mockError = new Error('Fetch failed');
|
|
14
|
+
const assetType = 'image';
|
|
15
|
+
const queryParams = { page: 1 };
|
|
16
|
+
|
|
17
|
+
it.concurrent('handles fetching all assets successfully', () => {
|
|
18
|
+
const result = {
|
|
19
|
+
response: { data: { data: mockAssets } },
|
|
20
|
+
};
|
|
21
|
+
return expectSaga(sagas.getAllAssets, { assetType, queryParams })
|
|
22
|
+
.provide([
|
|
23
|
+
[call(Api.getAllAssets, { assetType, queryParams }), result],
|
|
24
|
+
])
|
|
25
|
+
.put({
|
|
26
|
+
type: 'app/Gallery/GET_ALL_ASSETS_SUCCESS',
|
|
27
|
+
data: { data: { data: mockAssets } },
|
|
28
|
+
isReset: true,
|
|
29
|
+
})
|
|
30
|
+
.run(500);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it.concurrent('handles failure in fetching all assets', () => expectSaga(sagas.getAllAssets, { assetType, queryParams })
|
|
34
|
+
.provide([
|
|
35
|
+
[call(Api.getAllAssets, { assetType, queryParams }), throwError(mockError)],
|
|
36
|
+
])
|
|
37
|
+
.put({
|
|
38
|
+
type: 'app/Gallery/GET_ALL_ASSETS_FAILURE',
|
|
39
|
+
error: mockError,
|
|
40
|
+
})
|
|
41
|
+
.run(500));
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
describe('uploadAsset Saga', () => {
|
|
45
|
+
const file = new Blob();
|
|
46
|
+
const assetType = 'image';
|
|
47
|
+
const fileParams = { param1: 'value1' };
|
|
48
|
+
|
|
49
|
+
it.concurrent('handles successful asset upload', () => {
|
|
50
|
+
const fakeResponse = {
|
|
51
|
+
response: { asset: { id: 1, url: 'http://example.com/asset.jpg' } },
|
|
52
|
+
status: { code: 200 },
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
return expectSaga(sagas.uploadAsset, file, assetType, fileParams)
|
|
56
|
+
.provide([
|
|
57
|
+
[call(Api.uploadFile, file, assetType, fileParams), fakeResponse],
|
|
58
|
+
])
|
|
59
|
+
.put({
|
|
60
|
+
type: types.UPLOAD_ASSET_SUCCESS,
|
|
61
|
+
data: fakeResponse.response.asset,
|
|
62
|
+
statusCode: 200,
|
|
63
|
+
})
|
|
64
|
+
.run();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it.concurrent('handles failure in asset upload', () => {
|
|
68
|
+
const error = new Error('Failed to upload asset');
|
|
69
|
+
|
|
70
|
+
return expectSaga(sagas.uploadAsset, file, assetType, fileParams)
|
|
71
|
+
.provide([
|
|
72
|
+
[call(Api.uploadFile, file, assetType, fileParams), throwError(error)],
|
|
73
|
+
])
|
|
74
|
+
.put({
|
|
75
|
+
type: types.UPLOAD_ASSET_FAILURE,
|
|
76
|
+
error,
|
|
77
|
+
})
|
|
78
|
+
.run();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
describe('deleteAssetById Saga', () => {
|
|
83
|
+
const assetId = '123';
|
|
84
|
+
const assetType = 'image';
|
|
85
|
+
|
|
86
|
+
it.concurrent('handles deleting an asset successfully', () => {
|
|
87
|
+
const fakeResponse = {
|
|
88
|
+
response: 'Asset deleted successfully',
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
return expectSaga(sagas.deleteAssetById, assetId, assetType)
|
|
92
|
+
.provide([
|
|
93
|
+
[call(Api.deleteAssetById, assetId, assetType), fakeResponse],
|
|
94
|
+
])
|
|
95
|
+
.put({
|
|
96
|
+
type: types.DELETE_ASSET_SUCCESS,
|
|
97
|
+
data: fakeResponse.response,
|
|
98
|
+
})
|
|
99
|
+
.run();
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it.concurrent('handles failure in deleting an asset', () => {
|
|
103
|
+
const error = new Error('Deletion failed');
|
|
104
|
+
|
|
105
|
+
return expectSaga(sagas.deleteAssetById, assetId, assetType)
|
|
106
|
+
.provide([
|
|
107
|
+
[call(Api.deleteAssetById, assetId, assetType), throwError(error)]
|
|
108
|
+
])
|
|
109
|
+
.put({
|
|
110
|
+
type: types.DELETE_ASSET_FAILURE,
|
|
111
|
+
error,
|
|
112
|
+
})
|
|
113
|
+
.run();
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
describe('fetchUserList Saga', () => {
|
|
118
|
+
it.concurrent('handles fetching user list successfully', () => {
|
|
119
|
+
const fakeResponse = {
|
|
120
|
+
data: {
|
|
121
|
+
result: [{ id: 1, name: 'User One' }],
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
return expectSaga(sagas.fetchUserList)
|
|
126
|
+
.provide([
|
|
127
|
+
[call(Api.getUserList), fakeResponse],
|
|
128
|
+
])
|
|
129
|
+
.put({
|
|
130
|
+
type: types.GET_USER_LIST_SUCCESS,
|
|
131
|
+
data: fakeResponse.data.result,
|
|
132
|
+
})
|
|
133
|
+
.run();
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it.concurrent('handles failure in fetching user list', () => {
|
|
137
|
+
const error = new Error('Fetch failed');
|
|
138
|
+
|
|
139
|
+
return expectSaga(sagas.fetchUserList)
|
|
140
|
+
.provide([
|
|
141
|
+
[call(Api.getUserList), throwError(error)],
|
|
142
|
+
])
|
|
143
|
+
.put({
|
|
144
|
+
type: types.GET_USER_LIST_FAILURE,
|
|
145
|
+
data: error,
|
|
146
|
+
})
|
|
147
|
+
.run();
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
// Test combined saga
|
|
153
|
+
describe('Combined gallerySaga', () => {
|
|
154
|
+
it.concurrent('should initialize all gallery-related watcher sagas without error', () => expectSaga(sagas.gallerySaga)
|
|
155
|
+
.run());
|
|
156
|
+
});
|
|
157
|
+
});
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Created by vivek on 22/5/17.
|
|
3
|
+
*/
|
|
4
|
+
import * as types from './constants';
|
|
5
|
+
|
|
6
|
+
export function authenticate(user) {
|
|
7
|
+
return {
|
|
8
|
+
type: types.LOGIN_REQUEST,
|
|
9
|
+
user,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function logout() {
|
|
14
|
+
return {
|
|
15
|
+
type: types.LOGOUT_REQUEST,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function changeOrg(orgID) {
|
|
20
|
+
return {
|
|
21
|
+
type: types.SWITCH_ORG_REQUEST,
|
|
22
|
+
orgID,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function addMessageToQueue(message) {
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
type: types.ADD_MESSAGE,
|
|
30
|
+
message,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function removeMessageFromQueue(messageIndex) {
|
|
35
|
+
return {
|
|
36
|
+
type: types.REMOVE_MESSAGE,
|
|
37
|
+
messageIndex,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function getUserData(callback) {
|
|
42
|
+
return {
|
|
43
|
+
type: types.GET_USER_DATA_REQUEST,
|
|
44
|
+
callback,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function fetchSchemaForEntity(queryParams) {
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
type: types.GET_SCHEMA_FOR_ENTITY_REQUEST, queryParams,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function removeEntitySchema() {
|
|
56
|
+
return {
|
|
57
|
+
type: types.ROMOVE_ENTITY_SCHEMA,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function setInjectedTags(injectedTags) {
|
|
62
|
+
return {
|
|
63
|
+
type: types.SET_INJECTED_TAGS, injectedTags,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const DEFAULT_LOCALE = 'en';
|
|
2
|
+
export const SWITCH_ORG_REQUEST = 'cap/SWITCH_ORG_REQUEST';
|
|
3
|
+
export const SWITCH_ORG_SUCCESS = 'cap/SWITCH_ORG_SUCCESS';
|
|
4
|
+
export const SWITCH_ORG_FAILURE = 'cap/SWITCH_ORG_FAILURE';
|
|
5
|
+
export const LOGIN_REQUEST = 'cap/LOGIN_REQUEST';
|
|
6
|
+
export const LOGIN_SUCCESS = 'cap/LOGIN_SUCCESS';
|
|
7
|
+
export const LOGIN_FAILURE = 'cap/LOGIN_FAILURE';
|
|
8
|
+
|
|
9
|
+
export const LOGOUT_REQUEST = 'cap/LOGOUT_REQUEST';
|
|
10
|
+
export const LOGOUT_SUCCESS = 'cap/LOGOUT_SUCCESS';
|
|
11
|
+
export const LOGOUT_FAILURE = 'cap/LOGOUT_FAILURE';
|
|
12
|
+
export const ADD_MESSAGE = 'cap/ADD_MESSAGE';
|
|
13
|
+
export const REMOVE_MESSAGE = 'cap/REMOVE_MESSAGE';
|
|
14
|
+
export const GET_USER_DATA_REQUEST = 'cap/GET_USER_DATA_REQUEST';
|
|
15
|
+
export const GET_USER_DATA_SUCCESS = 'cap/GET_USER_DATA_SUCCESS';
|
|
16
|
+
export const GET_USER_DATA_FAILURE = 'cap/GET_USER_DATA_FAILURE';
|
|
17
|
+
|
|
18
|
+
export const GET_SCHEMA_FOR_ENTITY_FAILURE = 'cap/GET_SCHEMA_FOR_ENTITY_FAILURE';
|
|
19
|
+
export const GET_SCHEMA_FOR_ENTITY_REQUEST = 'cap/GET_SCHEMA_FOR_ENTITY_REQUEST';
|
|
20
|
+
export const GET_SCHEMA_FOR_ENTITY_SUCCESS = 'cap/GET_SCHEMA_FOR_ENTITY_SUCCESS';
|
|
21
|
+
export const ROMOVE_ENTITY_SCHEMA = 'cap/ROMOVE_ENTITY_SCHEMA';
|
|
22
|
+
export const CLEAR_META_ENTITIES = 'cap/CLEAR_META_ENTITIES';
|
|
23
|
+
export const HIDE_TAGS = 'cap/HIDE_TAGS';
|
|
24
|
+
|
|
25
|
+
export const SET_INJECTED_TAGS = 'cap/SET_INJECTED_TAGS';
|