diff --git a/src/components/Home/ConsumptionView.spec.tsx b/src/components/Home/ConsumptionView.spec.tsx index 704192b3e8ed75db2cd2b97c32bc85cc5e9e7520..1fe128cadf0d202e2d308e2c282741e79a2fc053 100644 --- a/src/components/Home/ConsumptionView.spec.tsx +++ b/src/components/Home/ConsumptionView.spec.tsx @@ -7,6 +7,7 @@ import React from 'react' import * as reactRedux from 'react-redux' import { Provider } from 'react-redux' import * as chartActions from 'store/chart/chart.slice' +import { mockCustomPopup } from '../../../tests/__mocks__/customPopup.mock' import { mockTestProfile1 } from '../../../tests/__mocks__/profileType.mock' import { createMockEcolyoStore, @@ -314,7 +315,10 @@ describe('ConsumptionView component', () => { fluidStatus: updatedStatus, releaseNotes: mockInitialEcolyoState.global.releaseNotes, }, - modal: { partnersIssueModal: mockedPartnersIssueModal }, + modal: { + partnersIssueModal: mockedPartnersIssueModal, + customPopupModal: mockCustomPopup, + }, }) useDispatchSpy.mockReturnValue(jest.fn()) mockUpdateProfile.mockResolvedValue(mockTestProfile1) diff --git a/src/components/Home/ConsumptionView.tsx b/src/components/Home/ConsumptionView.tsx index baa2de7e732b7acab84bb7e4def60d4ff12de6ce..133e524a8df89357478c3c191de0eda89781ce94 100644 --- a/src/components/Home/ConsumptionView.tsx +++ b/src/components/Home/ConsumptionView.tsx @@ -21,8 +21,8 @@ import { useNavigate } from 'react-router-dom' import ProfileService from 'services/profile.service' import { AppActionsTypes, AppStore } from 'store' import { setCurrentTimeStep, setShowOfflineData } from 'store/chart/chart.slice' -import { setCustomPopup, showReleaseNotes } from 'store/global/global.actions' -import { openPartnersModal } from 'store/modal/modal.slice' +import { showReleaseNotes } from 'store/global/global.actions' +import { openPartnersModal, setCustomPopup } from 'store/modal/modal.slice' import { getKonnectorUpdateError, getTodayDate, @@ -43,8 +43,8 @@ const ConsumptionView: React.FC<ConsumptionViewProps> = ({ const isMulti = fluidType === FluidType.MULTIFLUID const { chart: { currentTimeStep, loading, showOfflineData }, - global: { fluidStatus, releaseNotes, customPopupModal }, - modal: { partnersIssueModal }, + global: { fluidStatus, releaseNotes }, + modal: { partnersIssueModal, customPopupModal }, } = useSelector((state: AppStore) => state.ecolyo) const [openReleaseNoteModal, setOpenReleaseNoteModal] = useState<boolean>( diff --git a/src/components/Splash/SplashRoot.tsx b/src/components/Splash/SplashRoot.tsx index a4c7e2f6470b64ee8c15a39ff4f09189410c2411..69efd04518d0a0b4aaeab98845f41bde7819d889 100644 --- a/src/components/Splash/SplashRoot.tsx +++ b/src/components/Splash/SplashRoot.tsx @@ -44,7 +44,6 @@ import { } from 'store/challenge/challenge.actions' import { setSelectedDate } from 'store/chart/chart.slice' import { - setCustomPopup, setFluidStatus, showReleaseNotes, toggleAnalysisNotification, @@ -53,7 +52,7 @@ import { toggleChallengeExplorationNotification, updateTermValidation, } from 'store/global/global.actions' -import { openPartnersModal } from 'store/modal/modal.slice' +import { openPartnersModal, setCustomPopup } from 'store/modal/modal.slice' import { updateProfile } from 'store/profile/profile.actions' import { updateProfileEcogestureSuccess } from 'store/profileEcogesture/profileEcogesture.actions' import { updateProfileType } from 'store/profileType/profileType.actions' diff --git a/src/models/global.model.ts b/src/models/global.model.ts index 1d4edf10f092d53335e3f06ba1804cf1c83e9115..30118eeb38bb9f93663a277824778e5b2c92f39d 100644 --- a/src/models/global.model.ts +++ b/src/models/global.model.ts @@ -1,7 +1,6 @@ import { FluidType } from 'enum/fluid.enum' import { ScreenType } from 'enum/screen.enum' import { TermsStatus } from 'models' -import { CustomPopup } from './customPopup.model' import { FluidStatus } from './fluid.model' import { PartnersInfo } from './partnersInfo.model' import { ReleaseNotes } from './releaseNotes.model' @@ -17,7 +16,6 @@ export interface GlobalState { termsStatus: TermsStatus fluidStatus: FluidStatus[] fluidTypes: FluidType[] - customPopupModal: CustomPopup shouldRefreshConsent: boolean sgeConnect: SgeStore partnersInfo: PartnersInfo diff --git a/src/models/modal.model.ts b/src/models/modal.model.ts index 94560f57f3731a77b4346322251c9bd161f02f0b..0dbb67b01b0ebc564477a51773902c2434199297 100644 --- a/src/models/modal.model.ts +++ b/src/models/modal.model.ts @@ -1,4 +1,7 @@ +import { CustomPopup } from 'models/customPopup.model' + export interface ModalState { + customPopupModal: CustomPopup isConnectionModalOpen: boolean isFeedbacksOpen: boolean partnersIssueModal: { diff --git a/src/store/global/global.action.spec.ts b/src/store/global/global.action.spec.ts index 2a75a86c38b9fc84f2a84591df9c2d6e738ac9a7..255bdc56ca394e2e97bf2970aded58109bd10a7f 100644 --- a/src/store/global/global.action.spec.ts +++ b/src/store/global/global.action.spec.ts @@ -1,22 +1,19 @@ import { ScreenType } from 'enum/screen.enum' -import { mockCustomPopup } from '../../../tests/__mocks__/customPopup.mock' import { mockInitialGlobalState } from '../../../tests/__mocks__/store' import { - changeScreenType, CHANGE_SCREEN_TYPE, GlobalActionTypes, - setCustomPopup, - setFluidStatus, - SET_CUSTOM_POPUP, SET_FLUID_STATUS, - toggleAnalysisNotification, - toggleChallengeActionNotification, - toggleChallengeDuelNotification, - toggleChallengeExplorationNotification, TOGGLE_ANALYSIS_NOTIFICATION, TOGGLE_CHALLENGE_ACTION_NOTIFICATION, TOGGLE_CHALLENGE_DUEL_NOTIFICATION, TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION, + changeScreenType, + setFluidStatus, + toggleAnalysisNotification, + toggleChallengeActionNotification, + toggleChallengeDuelNotification, + toggleChallengeExplorationNotification, } from './global.actions' describe('global actions', () => { @@ -79,13 +76,4 @@ describe('global actions', () => { } expect(setFluidStatus(fluidStatus)).toEqual(expectedAction) }) - - it('should set customPopup', () => { - const payload = mockCustomPopup - const expectedAction: GlobalActionTypes = { - type: SET_CUSTOM_POPUP, - payload, - } - expect(setCustomPopup(payload)).toEqual(expectedAction) - }) }) diff --git a/src/store/global/global.actions.ts b/src/store/global/global.actions.ts index 5abc17651f59e95b3e2fd815c80a18d934e6cdb6..77a9fda4ef0157c3e7e4d90de942a82214d31260 100644 --- a/src/store/global/global.actions.ts +++ b/src/store/global/global.actions.ts @@ -1,14 +1,12 @@ import { FluidType } from 'enum/fluid.enum' import { ScreenType } from 'enum/screen.enum' import { FluidConnection, FluidStatus, TermsStatus } from 'models' -import { CustomPopup } from 'models/customPopup.model' import { PartnersInfo } from 'models/partnersInfo.model' import { Notes } from 'models/releaseNotes.model' import { SgeStore } from 'models/sgeStore.model' import { defaultAction } from 'store' export const CHANGE_SCREEN_TYPE = 'CHANGE_SCREEN_TYPE' -export const SET_CUSTOM_POPUP = 'SET_CUSTOM_POPUP' export const SET_FLUID_STATUS = 'SET_FLUID_STATUS' export const SET_PARTNERS_INFO = 'SET_PARTNERS_INFO' export const SET_SHOULD_REFRESH_CONSENT = 'SET_SHOULD_REFRESH_CONSENT' @@ -78,10 +76,6 @@ interface ShowReleaseNotes { type: typeof SHOW_RELEASE_NOTES payload?: { show: boolean; notes: Notes[]; redirectLink?: string } } -interface SetCustomPopup { - type: typeof SET_CUSTOM_POPUP - payload: CustomPopup -} interface SetShouldRefreshConsent { type: typeof SET_SHOULD_REFRESH_CONSENT @@ -178,13 +172,6 @@ export function setPartnersInfo(partnersInfo: PartnersInfo): SetPartnersInfo { } } -export function setCustomPopup(customPopupModal: CustomPopup): SetCustomPopup { - return { - type: SET_CUSTOM_POPUP, - payload: customPopupModal, - } -} - export function setShouldRefreshConsent( shouldRefreshConsent: boolean ): SetShouldRefreshConsent { @@ -211,7 +198,6 @@ export type GlobalActionTypes = | UpdatedFluidConnection | UpdateTermValidation | ShowReleaseNotes - | SetCustomPopup | SetShouldRefreshConsent | UpdateSGEConnect | SetPartnersInfo diff --git a/src/store/global/global.reducer.spec.ts b/src/store/global/global.reducer.spec.ts index accdd07d15c231ed76387f74970504f0c71447cb..b97675431307e3b08589a453d901050d830b00f8 100644 --- a/src/store/global/global.reducer.spec.ts +++ b/src/store/global/global.reducer.spec.ts @@ -5,13 +5,11 @@ import { DateTime } from 'luxon' import { FluidStatus } from 'models' import { defaultAction } from 'store' import { accountsData } from '../../../tests/__mocks__/accountsData.mock' -import { mockCustomPopup } from '../../../tests/__mocks__/customPopup.mock' import { konnectorsData } from '../../../tests/__mocks__/konnectorsData.mock' import { mockInitialGlobalState } from '../../../tests/__mocks__/store' import { triggersData } from '../../../tests/__mocks__/triggersData.mock' import { CHANGE_SCREEN_TYPE, - SET_CUSTOM_POPUP, SET_FLUID_STATUS, TOGGLE_ANALYSIS_NOTIFICATION, TOGGLE_CHALLENGE_ACTION_NOTIFICATION, @@ -212,17 +210,4 @@ describe('global reducer', () => { }) expect(state).toEqual(mockInitialGlobalState) }) - - it('should handle SET_CUSTOM_POPUP with payload', () => { - const state = { - ...mockInitialGlobalState, - customPopupModal: mockCustomPopup, - } - expect( - globalReducer(mockInitialGlobalState, { - type: SET_CUSTOM_POPUP, - payload: mockCustomPopup, - }).customPopupModal - ).toBe(state.customPopupModal) - }) }) diff --git a/src/store/global/global.reducer.ts b/src/store/global/global.reducer.ts index a8281e5b6b8c48217aad109bf5bb7dbc4a4668ab..7736b81b29f6bba534254812fbc998440020df79 100644 --- a/src/store/global/global.reducer.ts +++ b/src/store/global/global.reducer.ts @@ -7,7 +7,6 @@ import { Reducer } from 'redux' import { CHANGE_SCREEN_TYPE, GlobalActionTypes, - SET_CUSTOM_POPUP, SET_FLUID_STATUS, SET_PARTNERS_INFO, SET_SHOULD_REFRESH_CONSENT, @@ -109,12 +108,6 @@ const initialState: GlobalState = { }, ], fluidTypes: [], - customPopupModal: { - popupEnabled: false, - title: '', - description: '', - endDate: '', - }, partnersInfo: { egl_failure: false, enedis_failure: false, @@ -195,9 +188,6 @@ export const globalReducer: Reducer<GlobalState, GlobalActionTypes> = ( case SET_PARTNERS_INFO: return updateState({ partnersInfo: action.payload }) - case SET_CUSTOM_POPUP: - return updateState({ customPopupModal: action.payload }) - case SET_SHOULD_REFRESH_CONSENT: return updateState({ shouldRefreshConsent: action.payload }) diff --git a/src/store/modal/modal.slice.spec.ts b/src/store/modal/modal.slice.spec.ts index 86d3907091c70b75b779e23e38928ba0f3b08219..644eaffa2934c85ba2290160954034015ba22daa 100644 --- a/src/store/modal/modal.slice.spec.ts +++ b/src/store/modal/modal.slice.spec.ts @@ -1,10 +1,12 @@ import { ModalState } from 'models' +import { mockCustomPopup } from '../../../tests/__mocks__/customPopup.mock' import { mockInitialModalState } from '../../../tests/__mocks__/store' import { modalSlice, openConnectionModal, openFeedbackModal, openPartnersModal, + setCustomPopup, } from './modal.slice' describe('modal reducer', () => { @@ -13,8 +15,8 @@ describe('modal reducer', () => { expect(initialState).toEqual(mockInitialModalState) }) - describe('Feedback Modal', () => { - it('should handle openFeedbackModal with payload', () => { + describe('openFeedbackModal', () => { + it('should handle openFeedbackModal', () => { const state = modalSlice.reducer( mockInitialModalState, openFeedbackModal(true) @@ -26,7 +28,7 @@ describe('modal reducer', () => { }) }) - describe('PartnersInfo', () => { + describe('openPartnersModal', () => { const partnersModalAllTrue = { egl: true, enedis: true, @@ -90,4 +92,17 @@ describe('modal reducer', () => { }) }) }) + + describe('customPopup', () => { + it('should handle setCustomPopup', () => { + const state = modalSlice.reducer( + mockInitialModalState, + setCustomPopup(mockCustomPopup) + ) + expect(state).toEqual({ + ...mockInitialModalState, + customPopupModal: mockCustomPopup, + }) + }) + }) }) diff --git a/src/store/modal/modal.slice.ts b/src/store/modal/modal.slice.ts index e530d3fa425596caac13647151df51ae84889df9..8f4afd48cf616ef370e1bfc7f235bef4a666aca2 100644 --- a/src/store/modal/modal.slice.ts +++ b/src/store/modal/modal.slice.ts @@ -1,7 +1,13 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit' -import { ModalState } from 'models' +import { CustomPopup, ModalState } from 'models' const initialState: ModalState = { + customPopupModal: { + popupEnabled: false, + title: '', + description: '', + endDate: '', + }, isConnectionModalOpen: false, isFeedbacksOpen: false, partnersIssueModal: { @@ -18,8 +24,12 @@ type OpenPartnersModalAction = PayloadAction<{ enedis: boolean grdf: boolean }> +type SetCustomPopup = PayloadAction<CustomPopup> -export type ModalActionTypes = OpenFeedbackModalAction | OpenPartnersModalAction +export type ModalActionTypes = + | OpenFeedbackModalAction + | OpenPartnersModalAction + | SetCustomPopup export const modalSlice = createSlice({ name: 'modal', @@ -34,8 +44,15 @@ export const modalSlice = createSlice({ openConnectionModal: (state, action: OpenConnectionModalAction) => { state.isConnectionModalOpen = action.payload }, + setCustomPopup: (state, action: SetCustomPopup) => { + state.customPopupModal = action.payload + }, }, }) -export const { openFeedbackModal, openPartnersModal, openConnectionModal } = - modalSlice.actions +export const { + openFeedbackModal, + openPartnersModal, + setCustomPopup, + openConnectionModal, +} = modalSlice.actions diff --git a/tests/__mocks__/store.ts b/tests/__mocks__/store.ts index 73304af29d27e82ea0b62a4781948c343951bdee..02fac12142e08ec8641245a055796d79c2fb189a 100644 --- a/tests/__mocks__/store.ts +++ b/tests/__mocks__/store.ts @@ -43,12 +43,6 @@ export const mockInitialGlobalState: GlobalState = { accepted: true, versionType: 'init', }, - customPopupModal: { - popupEnabled: false, - title: '', - description: '', - endDate: '', - }, partnersInfo: { egl_failure: false, enedis_failure: false, @@ -283,6 +277,12 @@ export const mockInitialChartState: ChartState = { } export const mockInitialModalState: ModalState = { + customPopupModal: { + popupEnabled: false, + title: '', + description: '', + endDate: '', + }, isConnectionModalOpen: false, isFeedbacksOpen: false, partnersIssueModal: {