From 738b65e013250772da2161a7a966448ce506c643 Mon Sep 17 00:00:00 2001 From: Priscila Moneo Date: Wed, 17 Jun 2026 15:39:17 -0300 Subject: [PATCH 1/7] fix: page templates date field required Signed-off-by: Priscila Moneo --- .../page-templates/page-template-list-page.js | 1 + .../page-template-popup/index.js | 10 +++--- .../page-template-media-request-module.js | 34 +++++++++++------- .../page-template-modules-form.js | 13 +++++-- src/utils/__tests__/page-template.test.js | 36 ++++++++++++++++++- src/utils/constants.js | 4 +++ src/utils/page-template.js | 3 +- 7 files changed, 79 insertions(+), 22 deletions(-) diff --git a/src/pages/sponsors-global/page-templates/page-template-list-page.js b/src/pages/sponsors-global/page-templates/page-template-list-page.js index 0b4b05d21..5f0bc4d53 100644 --- a/src/pages/sponsors-global/page-templates/page-template-list-page.js +++ b/src/pages/sponsors-global/page-templates/page-template-list-page.js @@ -285,6 +285,7 @@ const PageTemplateListPage = ({ pageTemplate={pageTemplate} onClose={handleClosePageDialog} onSave={handleSavePageTemplate} + isGlobal /> )} {openCloneDialog && ( diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/index.js b/src/pages/sponsors-global/page-templates/page-template-popup/index.js index 91a7b2068..46636cea3 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/index.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/index.js @@ -41,7 +41,8 @@ const PageTemplatePopup = ({ summitId, sponsorId, sponsorshipIds, - title + title, + isGlobal }) => { const popupTitle = title ?? @@ -82,7 +83,7 @@ const PageTemplatePopup = ({ kind: yup.string().equals([PAGES_MODULE_KINDS.MEDIA]), name: yup.string().required(T.translate("validation.required")), type: yup.string().required(T.translate("validation.required")), - upload_deadline: yup.date().required(T.translate("validation.required")), + upload_deadline: yup.date().nullable(), description: yup.string().required(T.translate("validation.required")), max_file_size: yup.number().when("type", { is: PAGE_MODULES_MEDIA_TYPES.FILE, @@ -301,7 +302,7 @@ const PageTemplatePopup = ({ - + @@ -323,7 +324,8 @@ PageTemplatePopup.propTypes = { sponsorshipIds: PropTypes.array, summitId: PropTypes.number, sponsorId: PropTypes.number, - title: PropTypes.string + title: PropTypes.string, + isGlobal: PropTypes.bool }; export default PageTemplatePopup; diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js b/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js index 72f11853e..610959506 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js @@ -8,10 +8,14 @@ import MuiFormikDatepicker from "openstack-uicore-foundation/lib/components/mui/ import MuiFormikTextField from "../../../../../components/mui/formik-inputs/mui-formik-textfield"; import MuiFormikRadioGroup from "../../../../../components/mui/formik-inputs/mui-formik-radio-group"; import MuiFormikFilesizeField from "../../../../../components/mui/formik-inputs/mui-formik-file-size-field"; -import { PAGE_MODULES_MEDIA_TYPES } from "../../../../../utils/constants"; +import { + COLUMN_6, + COLUMN_12, + PAGE_MODULES_MEDIA_TYPES +} from "../../../../../utils/constants"; import MuiFormikSelect from "../../../../../components/mui/formik-inputs/mui-formik-select"; -const MediaRequestModule = ({ baseName, index, mediaFileTypes }) => { +const MediaRequestModule = ({ baseName, index, mediaFileTypes, isGlobal }) => { const { values } = useFormikContext(); const buildFieldName = (field) => `${baseName}[${index}].${field}`; @@ -47,7 +51,7 @@ const MediaRequestModule = ({ baseName, index, mediaFileTypes }) => { - + {T.translate("page_template_list.page_crud.name")} @@ -57,15 +61,17 @@ const MediaRequestModule = ({ baseName, index, mediaFileTypes }) => { margin="none" /> - - - {T.translate("page_template_list.page_crud.upload_deadline")} - - - + {!isGlobal && ( + + + {T.translate("page_template_list.page_crud.upload_deadline")} + + + + )} {mediaType === PAGE_MODULES_MEDIA_TYPES.FILE && ( <> @@ -129,7 +135,9 @@ const MediaRequestModule = ({ baseName, index, mediaFileTypes }) => { MediaRequestModule.propTypes = { baseName: PropTypes.string.isRequired, - index: PropTypes.number.isRequired + index: PropTypes.number.isRequired, + mediaFileTypes: PropTypes.array.isRequired, + isGlobal: PropTypes.bool }; const mapStateToProps = ({ mediaUploadState }) => ({ diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js b/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js index 67bf40ecc..0ee76ecc0 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js @@ -25,7 +25,7 @@ import DocumentDownloadModule from "./modules/page-template-document-download-mo import MediaRequestModule from "./modules/page-template-media-request-module"; import { getAllMediaFileTypes } from "../../../../actions/media-file-type-actions"; -const PageModules = ({ name = "modules", getAllMediaFileTypes }) => { +const PageModules = ({ name = "modules", getAllMediaFileTypes, isGlobal }) => { const { values, setFieldValue, errors, submitCount } = useFormikContext(); const modules = getIn(values, name) || []; const moduleErrors = getIn(errors, name); @@ -129,7 +129,13 @@ const PageModules = ({ name = "modules", getAllMediaFileTypes }) => { case PAGES_MODULE_KINDS.DOCUMENT: return ; case PAGES_MODULE_KINDS.MEDIA: - return ; + return ( + + ); default: return null; } @@ -225,7 +231,8 @@ const PageModules = ({ name = "modules", getAllMediaFileTypes }) => { }; PageModules.propTypes = { - name: PropTypes.string + name: PropTypes.string, + isGlobal: PropTypes.bool }; const mapStateToProps = () => ({}); diff --git a/src/utils/__tests__/page-template.test.js b/src/utils/__tests__/page-template.test.js index 60d402b48..68b7b4a81 100644 --- a/src/utils/__tests__/page-template.test.js +++ b/src/utils/__tests__/page-template.test.js @@ -93,6 +93,30 @@ describe("normalizePageTemplateModules", () => { const [result] = normalizePageTemplateModules([module]); expect(result.max_file_size).toBe(2048); }); + + it("should omit upload_deadline from payload when null (global template)", () => { + const module = { + kind: PAGES_MODULE_KINDS.MEDIA, + type: PAGE_MODULES_MEDIA_TYPES.FILE, + upload_deadline: null, + file_type_id: 3, + max_file_size: 1024 + }; + const [result] = normalizePageTemplateModules([module]); + expect(result).not.toHaveProperty("upload_deadline"); + }); + + it("should omit upload_deadline from payload when undefined", () => { + const module = { + kind: PAGES_MODULE_KINDS.MEDIA, + type: PAGE_MODULES_MEDIA_TYPES.FILE, + upload_deadline: undefined, + file_type_id: 3, + max_file_size: 1024 + }; + const [result] = normalizePageTemplateModules([module]); + expect(result).not.toHaveProperty("upload_deadline"); + }); }); describe("MEDIA kind — INPUT type", () => { @@ -116,7 +140,17 @@ describe("normalizePageTemplateModules", () => { type: PAGE_MODULES_MEDIA_TYPES.INPUT }; const [result] = normalizePageTemplateModules([module]); - expect(result.upload_deadline).toBeUndefined(); + expect(result).not.toHaveProperty("upload_deadline"); + }); + + it("should omit upload_deadline from payload when null (global template)", () => { + const module = { + kind: PAGES_MODULE_KINDS.MEDIA, + type: PAGE_MODULES_MEDIA_TYPES.INPUT, + upload_deadline: null + }; + const [result] = normalizePageTemplateModules([module]); + expect(result).not.toHaveProperty("upload_deadline"); }); }); diff --git a/src/utils/constants.js b/src/utils/constants.js index 1bef8e23f..846f53c8e 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -156,8 +156,12 @@ export const TEN_THOUSAND = 10000; export const COLUMN_4 = 4; +export const COLUMN_6 = 6; + export const COLUMN_8 = 8; +export const COLUMN_12 = 12; + export const DEFAULT_Z_INDEX = 1; export const HIGH_Z_INDEX = 9999; diff --git a/src/utils/page-template.js b/src/utils/page-template.js index c57d8d831..775be4541 100644 --- a/src/utils/page-template.js +++ b/src/utils/page-template.js @@ -46,6 +46,8 @@ export const normalizePageTemplateModules = (modules = [], timeZone = null) => normalizedModule.upload_deadline = timeZone ? moment.tz(module.upload_deadline, timeZone).unix() : moment.utc(module.upload_deadline).unix(); + } else { + delete normalizedModule.upload_deadline; } if (module.file_type_id) { @@ -81,4 +83,3 @@ export const normalizePageTemplateModules = (modules = [], timeZone = null) => return normalizedModule; }); - \ No newline at end of file From eaf16d163bf82f93af6501df4c5210232078865d Mon Sep 17 00:00:00 2001 From: Priscila Moneo Date: Thu, 25 Jun 2026 12:36:27 -0300 Subject: [PATCH 2/7] fix: feedback from PR Signed-off-by: Priscila Moneo --- .../page-templates/page-template-popup/index.js | 7 ++++++- .../modules/page-template-media-request-module.js | 13 +++++++++---- .../page-template-modules-form.js | 11 ++++++++--- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/index.js b/src/pages/sponsors-global/page-templates/page-template-popup/index.js index 46636cea3..a2a6cee1b 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/index.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/index.js @@ -83,7 +83,11 @@ const PageTemplatePopup = ({ kind: yup.string().equals([PAGES_MODULE_KINDS.MEDIA]), name: yup.string().required(T.translate("validation.required")), type: yup.string().required(T.translate("validation.required")), - upload_deadline: yup.date().nullable(), + upload_deadline: yup.date().when("$isGlobal", { + is: true, + then: (s) => s.nullable(), + otherwise: (s) => s.required(T.translate("validation.required")) + }), description: yup.string().required(T.translate("validation.required")), max_file_size: yup.number().when("type", { is: PAGE_MODULES_MEDIA_TYPES.FILE, @@ -120,6 +124,7 @@ const PageTemplatePopup = ({ const formik = useFormik({ initialValues: pageTemplate, + validationContext: { isGlobal }, validationSchema: yup.object().shape({ code: yup.string().required(T.translate("validation.required")), name: yup.string().required(T.translate("validation.required")), diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js b/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js index 610959506..11c1444fd 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js @@ -15,7 +15,12 @@ import { } from "../../../../../utils/constants"; import MuiFormikSelect from "../../../../../components/mui/formik-inputs/mui-formik-select"; -const MediaRequestModule = ({ baseName, index, mediaFileTypes, isGlobal }) => { +const MediaRequestModule = ({ + baseName, + index, + mediaFileTypes, + showUploadDeadline +}) => { const { values } = useFormikContext(); const buildFieldName = (field) => `${baseName}[${index}].${field}`; @@ -51,7 +56,7 @@ const MediaRequestModule = ({ baseName, index, mediaFileTypes, isGlobal }) => { - + {T.translate("page_template_list.page_crud.name")} @@ -61,7 +66,7 @@ const MediaRequestModule = ({ baseName, index, mediaFileTypes, isGlobal }) => { margin="none" /> - {!isGlobal && ( + {showUploadDeadline && ( {T.translate("page_template_list.page_crud.upload_deadline")} @@ -137,7 +142,7 @@ MediaRequestModule.propTypes = { baseName: PropTypes.string.isRequired, index: PropTypes.number.isRequired, mediaFileTypes: PropTypes.array.isRequired, - isGlobal: PropTypes.bool + showUploadDeadline: PropTypes.bool }; const mapStateToProps = ({ mediaUploadState }) => ({ diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js b/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js index 0ee76ecc0..1acd5b9e2 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js @@ -25,7 +25,11 @@ import DocumentDownloadModule from "./modules/page-template-document-download-mo import MediaRequestModule from "./modules/page-template-media-request-module"; import { getAllMediaFileTypes } from "../../../../actions/media-file-type-actions"; -const PageModules = ({ name = "modules", getAllMediaFileTypes, isGlobal }) => { +const PageModules = ({ + name = "modules", + getAllMediaFileTypes, + isGlobal = false +}) => { const { values, setFieldValue, errors, submitCount } = useFormikContext(); const modules = getIn(values, name) || []; const moduleErrors = getIn(errors, name); @@ -133,7 +137,7 @@ const PageModules = ({ name = "modules", getAllMediaFileTypes, isGlobal }) => { ); default: @@ -232,7 +236,8 @@ const PageModules = ({ name = "modules", getAllMediaFileTypes, isGlobal }) => { PageModules.propTypes = { name: PropTypes.string, - isGlobal: PropTypes.bool + isGlobal: PropTypes.bool, + getAllMediaFileTypes: PropTypes.func.isRequired }; const mapStateToProps = () => ({}); From 8a168d02935fb050501167162ee74d49e94268cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Tue, 14 Jul 2026 17:28:55 -0300 Subject: [PATCH 3/7] fix: adjust validation for isGlobal prop on upload_deadline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- .../page-template-popup/index.js | 173 ++++++++++-------- 1 file changed, 94 insertions(+), 79 deletions(-) diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/index.js b/src/pages/sponsors-global/page-templates/page-template-popup/index.js index a2a6cee1b..c43258e2e 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/index.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/index.js @@ -17,7 +17,7 @@ import { } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import CloseIcon from "@mui/icons-material/Close"; -import { FormikProvider, useFormik } from "formik"; +import { FormikProvider, useFormik, yupToFormErrors } from "formik"; import * as yup from "yup"; import MuiDropdownCheckbox from "openstack-uicore-foundation/lib/components/mui/dropdown-checkbox"; import MuiFormikTextField from "../../../../components/mui/formik-inputs/mui-formik-textfield"; @@ -33,6 +33,74 @@ import { import MuiFormikSelectGroup from "../../../../components/mui/formik-inputs/mui-formik-select-group"; import { querySponsorAddons } from "../../../../actions/sponsor-actions"; +const infoModuleSchema = yup.object().shape({ + kind: yup.string().equals([PAGES_MODULE_KINDS.INFO]), + content: yup.string().required(T.translate("validation.required")) +}); + +const documentModuleSchema = yup.object().shape({ + kind: yup.string().equals([PAGES_MODULE_KINDS.DOCUMENT]), + name: yup.string().required(T.translate("validation.required")), + description: yup.string().required(T.translate("validation.required")), + external_url: yup.string().when("type", { + is: PAGE_MODULES_DOWNLOAD.URL, + then: (schema) => schema.required(T.translate("validation.required")), + otherwise: (schema) => schema.nullable() + }), + file: yup.array().when("type", { + is: PAGE_MODULES_DOWNLOAD.FILE, + then: (schema) => + schema + .nullable() + .required(T.translate("validation.file_required")) + .min(1, T.translate("validation.file_required")), + otherwise: (schema) => schema.nullable() + }) +}); + +const mediaModuleSchema = yup.object().shape({ + kind: yup.string().equals([PAGES_MODULE_KINDS.MEDIA]), + name: yup.string().required(T.translate("validation.required")), + type: yup.string().required(T.translate("validation.required")), + upload_deadline: yup.date().when("$isGlobal", { + is: true, + then: (s) => s.nullable(), + otherwise: (s) => s.required(T.translate("validation.required")) + }), + description: yup.string().required(T.translate("validation.required")), + max_file_size: yup.number().when("type", { + is: PAGE_MODULES_MEDIA_TYPES.FILE, + then: (schema) => + schema + .min(BYTES_PER_MB, T.translate("validation.non_negative")) + .required(T.translate("validation.required")) + .test( + "mib-aligned", + T.translate("validation.mib_aligned"), + (value) => value == null || value % BYTES_PER_MB === 0 + ), + otherwise: (schema) => schema.nullable() + }), + file_type_id: yup.number().when("type", { + is: PAGE_MODULES_MEDIA_TYPES.FILE, + then: (schema) => schema.required(T.translate("validation.required")), + otherwise: (schema) => schema.nullable() + }) +}); + +const moduleSchema = yup.lazy((value) => { + switch (value?.kind) { + case PAGES_MODULE_KINDS.INFO: + return infoModuleSchema; + case PAGES_MODULE_KINDS.DOCUMENT: + return documentModuleSchema; + case PAGES_MODULE_KINDS.MEDIA: + return mediaModuleSchema; + default: + return yup.object(); + } +}); + const PageTemplatePopup = ({ pageTemplate, onClose, @@ -54,87 +122,34 @@ const PageTemplatePopup = ({ const showAllowedAddons = summitId && sponsorId && sponsorshipIds?.length > 0; - const infoModuleSchema = yup.object().shape({ - kind: yup.string().equals([PAGES_MODULE_KINDS.INFO]), - content: yup.string().required(T.translate("validation.required")) - }); - - const documentModuleSchema = yup.object().shape({ - kind: yup.string().equals([PAGES_MODULE_KINDS.DOCUMENT]), - name: yup.string().required(T.translate("validation.required")), - description: yup.string().required(T.translate("validation.required")), - external_url: yup.string().when("type", { - is: PAGE_MODULES_DOWNLOAD.URL, - then: (schema) => schema.required(T.translate("validation.required")), - otherwise: (schema) => schema.nullable() - }), - file: yup.array().when("type", { - is: PAGE_MODULES_DOWNLOAD.FILE, - then: (schema) => - schema - .nullable() - .required(T.translate("validation.file_required")) - .min(1, T.translate("validation.file_required")), - otherwise: (schema) => schema.nullable() - }) - }); - - const mediaModuleSchema = yup.object().shape({ - kind: yup.string().equals([PAGES_MODULE_KINDS.MEDIA]), - name: yup.string().required(T.translate("validation.required")), - type: yup.string().required(T.translate("validation.required")), - upload_deadline: yup.date().when("$isGlobal", { - is: true, - then: (s) => s.nullable(), - otherwise: (s) => s.required(T.translate("validation.required")) - }), - description: yup.string().required(T.translate("validation.required")), - max_file_size: yup.number().when("type", { - is: PAGE_MODULES_MEDIA_TYPES.FILE, - then: (schema) => - schema - .min(BYTES_PER_MB, T.translate("validation.non_negative")) - .required(T.translate("validation.required")) - .test( - "mib-aligned", - T.translate("validation.mib_aligned"), - (value) => value == null || value % BYTES_PER_MB === 0 - ), - otherwise: (schema) => schema.nullable() - }), - file_type_id: yup.number().when("type", { - is: PAGE_MODULES_MEDIA_TYPES.FILE, - then: (schema) => schema.required(T.translate("validation.required")), - otherwise: (schema) => schema.nullable() - }) - }); - - const moduleSchema = yup.lazy((value) => { - switch (value?.kind) { - case PAGES_MODULE_KINDS.INFO: - return infoModuleSchema; - case PAGES_MODULE_KINDS.DOCUMENT: - return documentModuleSchema; - case PAGES_MODULE_KINDS.MEDIA: - return mediaModuleSchema; - default: - return yup.object(); - } - }); + const validationSchema = React.useMemo( + () => + yup.object().shape({ + code: yup.string().required(T.translate("validation.required")), + name: yup.string().required(T.translate("validation.required")), + ...(showSponsorships && { + sponsorship_types: yup + .array() + .min(1, T.translate("validation.required")) + }), + modules: yup.array().of(moduleSchema) + }), + [showSponsorships] + ); const formik = useFormik({ initialValues: pageTemplate, - validationContext: { isGlobal }, - validationSchema: yup.object().shape({ - code: yup.string().required(T.translate("validation.required")), - name: yup.string().required(T.translate("validation.required")), - ...(showSponsorships && { - sponsorship_types: yup - .array() - .min(1, T.translate("validation.required")) - }), - modules: yup.array().of(moduleSchema) - }), + validate: (values) => { + try { + validationSchema.validateSync(values, { + abortEarly: false, + context: { isGlobal } + }); + return {}; + } catch (err) { + return yupToFormErrors(err); + } + }, enableReinitialize: true, onSubmit: (values) => { const modulesWithOrder = values.modules.map((m, idx) => ({ From 49f0b0a0d291f2592a4c11b45c42df282ec60991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Fri, 17 Jul 2026 17:51:12 -0300 Subject: [PATCH 4/7] fix: adjust tests, imports from uicore, popup pattern and validations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- .../page-templates/page-template-list-page.js | 4 +- .../page-template-module-form.test.js | 58 ++-- .../__tests__/page-template-popup.test.js | 247 ++++++++++++++++++ .../page-template-popup/index.js | 55 +++- .../page-template-document-download-module.js | 4 +- .../modules/page-template-info-module.js | 9 +- .../page-template-media-request-module.js | 23 +- .../page-template-modules-form.js | 4 +- .../__tests__/show-pages-list-page.test.js | 4 +- .../sponsors/show-pages-list-page/index.js | 4 +- .../__tests__/sponsor-pages-tab.test.js | 4 +- .../tabs/sponsor-pages-tab/index.js | 68 +++-- 12 files changed, 398 insertions(+), 86 deletions(-) rename src/pages/sponsors-global/page-templates/page-template-popup/{ => __tests__}/page-template-module-form.test.js (90%) create mode 100644 src/pages/sponsors-global/page-templates/page-template-popup/__tests__/page-template-popup.test.js diff --git a/src/pages/sponsors-global/page-templates/page-template-list-page.js b/src/pages/sponsors-global/page-templates/page-template-list-page.js index 5f0bc4d53..68f019e60 100644 --- a/src/pages/sponsors-global/page-templates/page-template-list-page.js +++ b/src/pages/sponsors-global/page-templates/page-template-list-page.js @@ -114,9 +114,7 @@ const PageTemplateListPage = ({ setOpenCloneDialog(true); }; - const handleSavePageTemplate = (entity) => { - savePageTemplate(entity).then(() => setOpenPageDialog(false)); - }; + const handleSavePageTemplate = (entity) => savePageTemplate(entity); const handleArchive = (item) => item.is_archived diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/page-template-module-form.test.js b/src/pages/sponsors-global/page-templates/page-template-popup/__tests__/page-template-module-form.test.js similarity index 90% rename from src/pages/sponsors-global/page-templates/page-template-popup/page-template-module-form.test.js rename to src/pages/sponsors-global/page-templates/page-template-popup/__tests__/page-template-module-form.test.js index ab792f581..8a8604bcc 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/page-template-module-form.test.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/__tests__/page-template-module-form.test.js @@ -6,23 +6,26 @@ import { Provider } from "react-redux"; import configureStore from "redux-mock-store"; import thunk from "redux-thunk"; import "@testing-library/jest-dom"; -import PageModules from "./page-template-modules-form"; -import showConfirmDialog from "../../../../components/mui/showConfirmDialog"; +import showConfirmDialog from "openstack-uicore-foundation/lib/components/mui/show-confirm-dialog"; +import PageModules from "../page-template-modules-form"; import { PAGES_MODULE_KINDS, PAGE_MODULES_MEDIA_TYPES -} from "../../../../utils/constants"; +} from "../../../../../utils/constants"; const mockStore = configureStore([thunk]); // Mocks -jest.mock("../../../../components/mui/showConfirmDialog", () => jest.fn()); -jest.mock("../../../../actions/media-file-type-actions", () => ({ +jest.mock( + "openstack-uicore-foundation/lib/components/mui/show-confirm-dialog", + () => jest.fn() +); +jest.mock("../../../../../actions/media-file-type-actions", () => ({ getAllMediaFileTypes: jest.fn(() => () => Promise.resolve()) })); jest.mock( - "../../../../components/inputs/formik-text-editor", + "openstack-uicore-foundation/lib/components/mui/formik-inputs/texteditor", () => function MockFormikTextEditor({ name }) { return