diff --git a/src/AppRoutes.js b/src/AppRoutes.js index 37bb27c25..5c5d8b2ae 100644 --- a/src/AppRoutes.js +++ b/src/AppRoutes.js @@ -6,7 +6,7 @@ import { Navigate, Route, createBrowserRouter, RouterProvider, createRoutesFromE import { TabLayout } from './layouts'; import Workspaces from './views/Workspaces'; import { getAllTabs } from './AppLayout'; -import { UserStatusGate } from './components'; +import { UserStatusGate } from './components/UserStatusGate'; const AppRoutes = () => { const providedUrl = sessionStorage.getItem('providedUrl'); diff --git a/src/components/ScenarioParameters/ScenarioParameters.js b/src/components/ScenarioParameters/ScenarioParameters.js index 09782dadb..8f5fc0210 100644 --- a/src/components/ScenarioParameters/ScenarioParameters.js +++ b/src/components/ScenarioParameters/ScenarioParameters.js @@ -1,7 +1,7 @@ // Copyright (c) Cosmo Tech. // Licensed under the MIT license. -import React, { useCallback, useContext, useEffect, useMemo } from 'react'; +import React, { useCallback, useEffect, useMemo } from 'react'; import rfdc from 'rfdc'; import { useFormContext } from 'react-hook-form'; import PropTypes from 'prop-types'; @@ -15,7 +15,9 @@ import { ACL_PERMISSIONS } from '../../services/config/accessControl'; import { ScenarioParametersTabsWrapper, ScenarioActions } from './components'; import { useTranslation } from 'react-i18next'; import { useScenarioParameters } from './ScenarioParametersHook'; -import { ScenarioParametersUtils, FileManagementUtils } from '../../utils'; +import { ScenarioResetValuesContext } from './ScenarioParametersContext'; +import { ScenarioParametersUtils } from '../../utils'; +import { FileManagementUtils } from '../../utils/FileManagementUtils'; const clone = rfdc(); @@ -48,8 +50,6 @@ const useStyles = makeStyles((theme) => ({ }, })); -const ScenarioResetValuesContext = React.createContext(); - const ScenarioParameters = ({ onToggleAccordion, isAccordionExpanded }) => { const classes = useStyles(); const { t } = useTranslation(); @@ -201,6 +201,3 @@ ScenarioParameters.propTypes = { }; export default ScenarioParameters; -export const useScenarioResetValues = () => { - return useContext(ScenarioResetValuesContext); -}; diff --git a/src/components/ScenarioParameters/ScenarioParametersContext.js b/src/components/ScenarioParameters/ScenarioParametersContext.js new file mode 100644 index 000000000..5a9ce9ec2 --- /dev/null +++ b/src/components/ScenarioParameters/ScenarioParametersContext.js @@ -0,0 +1,9 @@ +// Copyright (c) Cosmo Tech. +// Licensed under the MIT license. + +import React, { useContext } from 'react'; + +export const ScenarioResetValuesContext = React.createContext(); +export const useScenarioResetValues = () => { + return useContext(ScenarioResetValuesContext); +}; diff --git a/src/components/ScenarioParameters/components/ScenarioActions/components/DiscardChangesButton/DiscardChangesButton.js b/src/components/ScenarioParameters/components/ScenarioActions/components/DiscardChangesButton/DiscardChangesButton.js index 1645e1c1f..779a853a3 100644 --- a/src/components/ScenarioParameters/components/ScenarioActions/components/DiscardChangesButton/DiscardChangesButton.js +++ b/src/components/ScenarioParameters/components/ScenarioActions/components/DiscardChangesButton/DiscardChangesButton.js @@ -8,7 +8,7 @@ import CancelIcon from '@mui/icons-material/Cancel'; import { useTranslation } from 'react-i18next'; import { PermissionsGate } from '@cosmotech/ui'; import { useFormContext, useFormState } from 'react-hook-form'; -import { useScenarioResetValues } from '../../../../ScenarioParameters'; +import { useScenarioResetValues } from '../../../../ScenarioParametersContext'; import { useUserAppAndCurrentScenarioPermissions } from '../../../../../../hooks/SecurityHooks'; import { ACL_PERMISSIONS } from '../../../../../../services/config/accessControl'; import { TwoActionsDialogService } from '../../../../../../services/twoActionsDialog/twoActionsDialogService'; diff --git a/src/components/ScenarioParameters/components/ScenarioParametersInputs/GenericTable.js b/src/components/ScenarioParameters/components/ScenarioParametersInputs/GenericTable.js index 7e23c5dc6..4932c0844 100644 --- a/src/components/ScenarioParameters/components/ScenarioParametersInputs/GenericTable.js +++ b/src/components/ScenarioParameters/components/ScenarioParametersInputs/GenericTable.js @@ -11,7 +11,8 @@ import PropTypes from 'prop-types'; import { useSelector } from 'react-redux'; import { TableExportDialog } from './components'; import { gridLight, gridDark } from '../../../../theme/'; -import { ConfigUtils, TranslationUtils, FileManagementUtils } from '../../../../utils'; +import { ConfigUtils, TranslationUtils } from '../../../../utils'; +import { FileManagementUtils } from '../../../../utils/FileManagementUtils'; import { useOrganizationId } from '../../../../state/hooks/OrganizationHooks.js'; import { useWorkspaceId } from '../../../../state/hooks/WorkspaceHooks.js'; import { TableUtils } from '../../../../utils/TableUtils'; diff --git a/src/components/ScenarioParameters/components/ScenarioParametersInputs/GenericUploadFile.js b/src/components/ScenarioParameters/components/ScenarioParametersInputs/GenericUploadFile.js index e52fb31d4..637b85383 100644 --- a/src/components/ScenarioParameters/components/ScenarioParametersInputs/GenericUploadFile.js +++ b/src/components/ScenarioParameters/components/ScenarioParametersInputs/GenericUploadFile.js @@ -5,7 +5,8 @@ import React from 'react'; import { UploadFile, UPLOAD_FILE_STATUS_KEY } from '@cosmotech/ui'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; -import { ConfigUtils, TranslationUtils, FileManagementUtils } from '../../../../utils'; +import { ConfigUtils, TranslationUtils } from '../../../../utils'; +import { FileManagementUtils } from '../../../../utils/FileManagementUtils'; import { useOrganizationId } from '../../../../state/hooks/OrganizationHooks.js'; import { useWorkspaceId } from '../../../../state/hooks/WorkspaceHooks.js'; diff --git a/src/components/ScenarioParameters/components/ScenarioParametersTabs/ScenarioParameterInput.js b/src/components/ScenarioParameters/components/ScenarioParametersTabs/ScenarioParameterInput.js index 748aab089..d3780f6eb 100644 --- a/src/components/ScenarioParameters/components/ScenarioParametersTabs/ScenarioParameterInput.js +++ b/src/components/ScenarioParameters/components/ScenarioParametersTabs/ScenarioParameterInput.js @@ -7,7 +7,7 @@ import { ConfigUtils } from '../../../../utils/ConfigUtils'; import { VAR_TYPES_COMPONENTS_MAPPING } from '../../../../utils/scenarioParameters/VarTypesComponentsMapping'; import PropTypes from 'prop-types'; import { useStore } from 'react-redux'; -import { useScenarioResetValues } from '../../ScenarioParameters'; +import { useScenarioResetValues } from '../../ScenarioParametersContext'; const ScenarioParameterInput = ({ parameterData, context }) => { const subType = ConfigUtils.getParameterAttribute(parameterData, 'subType'); diff --git a/src/components/ScenarioParameters/components/ScenarioParametersTabs/ScenarioParametersTabsWrapper.js b/src/components/ScenarioParameters/components/ScenarioParametersTabs/ScenarioParametersTabsWrapper.js index e41fe2b51..bf155b429 100644 --- a/src/components/ScenarioParameters/components/ScenarioParametersTabs/ScenarioParametersTabsWrapper.js +++ b/src/components/ScenarioParameters/components/ScenarioParametersTabs/ScenarioParametersTabsWrapper.js @@ -4,7 +4,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ScenarioParametersTab from './ScenarioParametersTab'; -import { ScenarioParametersTabs } from '../index'; +import ScenarioParametersTabs from './ScenarioParametersTabs'; import { ConfigUtils } from '../../../../utils'; // eslint-disable-next-line max-len import { CUSTOM_PARAMETERS_GROUPS_COMPONENTS_MAPPING } from '../../../../utils/scenarioParameters/custom/ParametersGroupsComponentsMapping'; diff --git a/src/components/index.js b/src/components/index.js index afe3c055a..3572135f5 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -3,7 +3,6 @@ export { ScenarioParameters } from './ScenarioParameters'; export { PermissionsGate } from './PermissionsGate'; -export { UserStatusGate } from './UserStatusGate'; export { default as AboutContent } from './AboutContent'; export { SessionTimeoutDialog } from './SessionTimeoutDialog'; export { TechnicalInfoContent } from './TechnicalInfoContent'; diff --git a/src/hooks/ScenarioParametersHooks.js b/src/hooks/ScenarioParametersHooks.js index 43b0fa536..048f3ebfc 100644 --- a/src/hooks/ScenarioParametersHooks.js +++ b/src/hooks/ScenarioParametersHooks.js @@ -7,7 +7,8 @@ import { useSolution } from '../state/hooks/SolutionHooks'; import { useCurrentScenarioData, useScenarios } from '../state/hooks/ScenarioHooks'; import { useAddDatasetToStore } from '../state/hooks/DatasetHooks'; import { useCallback, useMemo } from 'react'; -import { FileManagementUtils, ScenarioParametersUtils } from '../utils'; +import { ScenarioParametersUtils } from '../utils'; +import { FileManagementUtils } from '../utils/FileManagementUtils'; import { useFormContext } from 'react-hook-form'; const getRunTemplateParametersIds = (runTemplatesParametersIdsDict, runTemplateId) => { diff --git a/src/services/config/Menu.js b/src/services/config/Menu.js index 340667bab..b89b6f342 100644 --- a/src/services/config/Menu.js +++ b/src/services/config/Menu.js @@ -1,7 +1,8 @@ // Copyright (c) Cosmo Tech. // Licensed under the MIT license. -import { AboutContent, TechnicalInfoContent } from '../../components'; +import AboutContent from '../../components/AboutContent'; +import { TechnicalInfoContent } from '../../components/TechnicalInfoContent'; // If you do not want to display About entry in help menu, set About to null export const About = AboutContent; diff --git a/src/utils/FileManagementUtils.js b/src/utils/FileManagementUtils.js index 1f89efbb9..95b117fc0 100644 --- a/src/utils/FileManagementUtils.js +++ b/src/utils/FileManagementUtils.js @@ -8,9 +8,12 @@ import DatasetService from '../services/dataset/DatasetService'; import WorkspaceService from '../services/workspace/WorkspaceService'; import { AppInsights } from '../services/AppInsights'; import { DATASET_ID_VARTYPE, VALID_MIME_TYPES } from '../services/config/ApiConstants'; -import { ConfigUtils, DatasetsUtils, ScenarioParametersUtils, SecurityUtils } from '.'; import applicationStore from '../state/Store.config'; import { dispatchSetApplicationErrorMessage } from '../state/dispatchers/app/ApplicationDispatcher'; +import { ConfigUtils } from './ConfigUtils'; +import { DatasetsUtils } from './DatasetsUtils'; +import { ScenarioParametersUtils } from './scenarioParameters/ScenarioParametersUtils'; +import { SecurityUtils } from './SecurityUtils'; const appInsights = AppInsights.getInstance(); const _applyUploadPreprocessToContent = (clientFileDescriptor) => { diff --git a/src/utils/__test__/FileManagementUtils.spec.js b/src/utils/__test__/FileManagementUtils.spec.js index 2b4644fee..548119ae3 100644 --- a/src/utils/__test__/FileManagementUtils.spec.js +++ b/src/utils/__test__/FileManagementUtils.spec.js @@ -1,7 +1,7 @@ // Copyright (c) Cosmo Tech. // Licensed under the MIT license. -import { FileManagementUtils } from '../.'; +import { FileManagementUtils } from '../FileManagementUtils'; describe('isFileValidFormat', () => { test.each` diff --git a/src/utils/index.js b/src/utils/index.js index 0f002d358..772b4f345 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -13,6 +13,5 @@ export { ScenariosUtils } from './ScenariosUtils'; export { ScenarioParametersUtils } from './scenarioParameters/ScenarioParametersUtils'; export { SecurityUtils } from './SecurityUtils'; export { WorkspacesUtils } from './WorkspacesUtils'; -export { FileManagementUtils } from './FileManagementUtils'; export { Notifier, useSubscribeToNotifier } from './notifiers'; export { ParameterConstraintsUtils } from './ParameterConstraintsUtils'; diff --git a/src/utils/scenarioParameters/ScenarioParametersUtils.js b/src/utils/scenarioParameters/ScenarioParametersUtils.js index 3b7023101..42706198c 100644 --- a/src/utils/scenarioParameters/ScenarioParametersUtils.js +++ b/src/utils/scenarioParameters/ScenarioParametersUtils.js @@ -4,7 +4,7 @@ import rfdc from 'rfdc'; import { VAR_TYPES_DEFAULT_VALUES } from './DefaultValues'; import { DATASET_ID_VARTYPE } from '../../services/config/ApiConstants'; -import { ConfigUtils } from '..'; +import { ConfigUtils } from '../ConfigUtils'; const clone = rfdc(); diff --git a/src/views/DatasetManager/components/CreateDatasetButton/components/CreateDatasetWizard/CreateDatasetWizard.js b/src/views/DatasetManager/components/CreateDatasetButton/components/CreateDatasetWizard/CreateDatasetWizard.js index eeb8310ce..e41c3a2fa 100644 --- a/src/views/DatasetManager/components/CreateDatasetButton/components/CreateDatasetWizard/CreateDatasetWizard.js +++ b/src/views/DatasetManager/components/CreateDatasetButton/components/CreateDatasetWizard/CreateDatasetWizard.js @@ -19,7 +19,8 @@ import { } from '@mui/material'; import { BasicEnumInput, BasicTextInput, UploadFile } from '@cosmotech/ui'; import { Controller, FormProvider, useForm } from 'react-hook-form'; -import { DatasetsUtils, FileManagementUtils } from '../../../../../../utils'; +import { DatasetsUtils } from '../../../../../../utils'; +import { FileManagementUtils } from '../../../../../../utils/FileManagementUtils'; import { useTranslation } from 'react-i18next'; import { useCreateDataset } from '../../../../../../state/hooks/DatasetHooks'; import { DATASET_SOURCE_TYPE } from '../../../../../../services/config/ApiConstants'; diff --git a/src/views/Scenario/components/ScenarioDashboardCard/ScenarioDashboardCard.js b/src/views/Scenario/components/ScenarioDashboardCard/ScenarioDashboardCard.js index 9f98dfb4c..65ae4abc7 100644 --- a/src/views/Scenario/components/ScenarioDashboardCard/ScenarioDashboardCard.js +++ b/src/views/Scenario/components/ScenarioDashboardCard/ScenarioDashboardCard.js @@ -6,7 +6,7 @@ import { Accordion, AccordionSummary, AccordionDetails, Button, Card, Grid, Pape import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import WarningAmberOutlinedIcon from '@mui/icons-material/WarningAmberOutlined'; import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined'; -import { ScenarioPowerBiReport } from '../index'; +import ScenarioPowerBiReport from '../ScenarioPowerBiReport'; import { useScenarioDashboardCard } from './ScenarioDashboardCardHook'; import { useTranslation } from 'react-i18next'; diff --git a/src/views/Scenario/components/ScenarioDashboardCard/ScenarioDashboardCard.spec.js b/src/views/Scenario/components/ScenarioDashboardCard/ScenarioDashboardCard.spec.js index 5537dcf5d..cbe9642a4 100644 --- a/src/views/Scenario/components/ScenarioDashboardCard/ScenarioDashboardCard.spec.js +++ b/src/views/Scenario/components/ScenarioDashboardCard/ScenarioDashboardCard.spec.js @@ -12,12 +12,11 @@ beforeEach(() => { jest.resetModules(); }); -jest.mock('../index', () => ({ - __esModule: true, - ScenarioPowerBiReport: () => { - return
; - }, -})); +// Mind the double arrow functions to mock the default export of a React component +jest.mock('../ScenarioPowerBiReport', () => { + const ScenarioPowerBiReport = () => ; + return ScenarioPowerBiReport; +}); jest.mock('./ScenarioDashboardCardHook', () => ({ useScenarioDashboardCard: jest.fn(), diff --git a/tests/samples/reduxState.js b/tests/samples/reduxState.js index 2c8a68f68..7b3762f8a 100644 --- a/tests/samples/reduxState.js +++ b/tests/samples/reduxState.js @@ -1,16 +1,16 @@ // Copyright (c) Cosmo Tech. // Licensed under the MIT license. -import { - DEFAULT_APPLICATION, - DEFAULT_ORGANIZATION_DATA, - DEFAULT_SCENARIOS_LIST_DATA, - DEFAULT_SOLUTION_DATA, - DEFAULT_DATASETS_LIST_DATA, - SCENARIODATA_WITH_USERS, - WORKSPACEDATA_WITH_USERS, - USER_AUTH_ADMIN, -} from '.'; +// Copyright (c) Cosmo Tech. +// Licensed under the MIT license. + +import { DEFAULT_APPLICATION } from './application'; +import { SCENARIODATA_WITH_USERS, DEFAULT_SCENARIOS_LIST_DATA } from './scenarios'; +import { WORKSPACEDATA_WITH_USERS } from './workspace'; +import { USER_AUTH_ADMIN } from './auth'; +import { DEFAULT_ORGANIZATION_DATA } from './organizations'; +import { DEFAULT_DATASETS_LIST_DATA } from './datasets'; +import { DEFAULT_SOLUTION_DATA } from './solution'; export const DEFAULT_REDUX_STATE = { application: DEFAULT_APPLICATION,