From f209fa2d58c679597b700cbd0b84a72ae8d312bc Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Fri, 4 Nov 2022 19:45:03 +0100 Subject: [PATCH] Migrated sidebar reducer to RTK --- src/common/reducers/sidebar.ts | 25 +++++++++++-------------- src/reducers/index.ts | 2 +- test/common/reducer/sidebar.test.ts | 19 ++++++------------- 3 files changed, 18 insertions(+), 28 deletions(-) diff --git a/src/common/reducers/sidebar.ts b/src/common/reducers/sidebar.ts index d90b0d5a..c9f57a4c 100644 --- a/src/common/reducers/sidebar.ts +++ b/src/common/reducers/sidebar.ts @@ -1,25 +1,22 @@ -import { Action } from 'redux'; -import { buildActionCreator, buildReducer } from '../../utils/helpers/redux'; - -export const SIDEBAR_PRESENT = 'shlink/common/SIDEBAR_PRESENT'; -export const SIDEBAR_NOT_PRESENT = 'shlink/common/SIDEBAR_NOT_PRESENT'; +import { createSlice } from '@reduxjs/toolkit'; export interface Sidebar { sidebarPresent: boolean; } -type SidebarRenderedAction = Action; -type SidebarNotRenderedAction = Action; - const initialState: Sidebar = { sidebarPresent: false, }; -export default buildReducer({ - [SIDEBAR_PRESENT]: () => ({ sidebarPresent: true }), - [SIDEBAR_NOT_PRESENT]: () => ({ sidebarPresent: false }), -}, initialState); +const { actions, reducer } = createSlice({ + name: 'sidebarReducer', + initialState, + reducers: { + sidebarPresent: () => ({ sidebarPresent: true }), + sidebarNotPresent: () => ({ sidebarPresent: false }), + }, +}); -export const sidebarPresent = buildActionCreator(SIDEBAR_PRESENT); +export const { sidebarPresent, sidebarNotPresent } = actions; -export const sidebarNotPresent = buildActionCreator(SIDEBAR_NOT_PRESENT); +export const sidebarReducer = reducer; diff --git a/src/reducers/index.ts b/src/reducers/index.ts index 06d51d85..35c3e5d7 100644 --- a/src/reducers/index.ts +++ b/src/reducers/index.ts @@ -19,7 +19,7 @@ import mercureInfoReducer from '../mercure/reducers/mercureInfo'; import settingsReducer from '../settings/reducers/settings'; import visitsOverviewReducer from '../visits/reducers/visitsOverview'; import { appUpdatesReducer } from '../app/reducers/appUpdates'; -import sidebarReducer from '../common/reducers/sidebar'; +import { sidebarReducer } from '../common/reducers/sidebar'; import { ShlinkState } from '../container/types'; export default (container: IContainer) => combineReducers({ diff --git a/test/common/reducer/sidebar.test.ts b/test/common/reducer/sidebar.test.ts index ecaa95da..db59f510 100644 --- a/test/common/reducer/sidebar.test.ts +++ b/test/common/reducer/sidebar.test.ts @@ -1,31 +1,24 @@ -import { Mock } from 'ts-mockery'; -import reducer, { - Sidebar, - SIDEBAR_NOT_PRESENT, - SIDEBAR_PRESENT, - sidebarNotPresent, - sidebarPresent, -} from '../../../src/common/reducers/sidebar'; +import { sidebarReducer, sidebarNotPresent, sidebarPresent } from '../../../src/common/reducers/sidebar'; describe('sidebarReducer', () => { describe('reducer', () => { it.each([ - [SIDEBAR_PRESENT, { sidebarPresent: true }], - [SIDEBAR_NOT_PRESENT, { sidebarPresent: false }], + [sidebarPresent.toString(), { sidebarPresent: true }], + [sidebarNotPresent.toString(), { sidebarPresent: false }], ])('returns expected on %s', (type, expected) => { - expect(reducer(Mock.all(), { type })).toEqual(expected); + expect(sidebarReducer(undefined, { type })).toEqual(expected); }); }); describe('sidebarPresent', () => { it('returns expected action', () => { - expect(sidebarPresent()).toEqual({ type: SIDEBAR_PRESENT }); + expect(sidebarPresent()).toEqual({ type: sidebarPresent.toString() }); }); }); describe('sidebarNotPresent', () => { it('returns expected action', () => { - expect(sidebarNotPresent()).toEqual({ type: SIDEBAR_NOT_PRESENT }); + expect(sidebarNotPresent()).toEqual({ type: sidebarNotPresent.toString() }); }); }); });