Skip to content

Commit 2e18576

Browse files
committed
#RI-5084 - fix loading key details from context
1 parent 55ee4b7 commit 2e18576

File tree

5 files changed

+81
-4
lines changed

5 files changed

+81
-4
lines changed

redisinsight/ui/src/pages/instance/InstancePage.spec.tsx

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,28 @@ import React from 'react'
33
import { BrowserRouter } from 'react-router-dom'
44
import { instance, mock } from 'ts-mockito'
55

6-
import { cleanup, mockedStore, render } from 'uiSrc/utils/test-utils'
6+
import { cleanup, mockedStore, render, act } from 'uiSrc/utils/test-utils'
77
import { BrowserStorageItem } from 'uiSrc/constants'
88
import { localStorageService } from 'uiSrc/services'
99
import { appFeatureFlagsFeaturesSelector } from 'uiSrc/slices/app/features'
10+
import { resetKeys, resetPatternKeysData } from 'uiSrc/slices/browser/keys'
11+
import { setMonitorInitialState } from 'uiSrc/slices/cli/monitor'
12+
import { setInitialPubSubState } from 'uiSrc/slices/pubsub/pubsub'
13+
import { setBulkActionsInitialState } from 'uiSrc/slices/browser/bulkActions'
14+
import { setAppContextConnectedInstanceId, setAppContextInitialState, setDbConfig } from 'uiSrc/slices/app/context'
15+
import { clearSearchingCommand, resetCliHelperSettings, setCliEnteringCommand } from 'uiSrc/slices/cli/cli-settings'
16+
import { resetRedisearchKeysData, setRedisearchInitialState } from 'uiSrc/slices/browser/redisearch'
17+
import { setClusterDetailsInitialState } from 'uiSrc/slices/analytics/clusterDetails'
18+
import { setDatabaseAnalysisInitialState } from 'uiSrc/slices/analytics/dbAnalysis'
19+
import { setInitialAnalyticsSettings } from 'uiSrc/slices/analytics/settings'
20+
import { resetRecommendationsHighlighting } from 'uiSrc/slices/recommendations/recommendations'
21+
import { setTriggeredFunctionsInitialState } from 'uiSrc/slices/triggeredFunctions/triggeredFunctions'
22+
import {
23+
getDatabaseConfigInfo,
24+
setConnectedInfoInstance,
25+
setConnectedInstance,
26+
setDefaultInstance
27+
} from 'uiSrc/slices/instances/instances'
1028
import InstancePage, { getDefaultSizes, Props } from './InstancePage'
1129

1230
const mockedProps = mock<Props>()
@@ -27,6 +45,15 @@ jest.mock('uiSrc/slices/app/features', () => ({
2745
}),
2846
}))
2947

48+
jest.mock('uiSrc/slices/app/context', () => ({
49+
...jest.requireActual('uiSrc/slices/app/context'),
50+
appContextSelector: jest.fn().mockReturnValue({
51+
contextInstanceId: 'prevId'
52+
}),
53+
}))
54+
55+
const INSTANCE_ID_MOCK = 'instanceId'
56+
3057
let store: typeof mockedStore
3158
beforeEach(() => {
3259
cleanup()
@@ -102,4 +129,43 @@ describe('InstancePage', () => {
102129
defaultSizes
103130
)
104131
})
132+
133+
it('should call proper actions with resetting context', async () => {
134+
await act(() => {
135+
render(
136+
<BrowserRouter>
137+
<InstancePage {...instance(mockedProps)} />
138+
</BrowserRouter>
139+
)
140+
})
141+
142+
const resetContextActions = [
143+
resetKeys(),
144+
setMonitorInitialState(),
145+
setInitialPubSubState(),
146+
setBulkActionsInitialState(),
147+
setAppContextInitialState(),
148+
resetPatternKeysData(),
149+
resetCliHelperSettings(),
150+
resetRedisearchKeysData(),
151+
setClusterDetailsInitialState(),
152+
setDatabaseAnalysisInitialState(),
153+
setInitialAnalyticsSettings(),
154+
setRedisearchInitialState(),
155+
resetRecommendationsHighlighting(),
156+
setTriggeredFunctionsInitialState(),
157+
]
158+
159+
const expectedActions = [
160+
setDefaultInstance(),
161+
setConnectedInstance(),
162+
getDatabaseConfigInfo(),
163+
setConnectedInfoInstance(),
164+
...resetContextActions,
165+
setAppContextConnectedInstanceId(INSTANCE_ID_MOCK),
166+
setDbConfig(undefined),
167+
]
168+
169+
expect(store.getActions().slice(0, expectedActions.length)).toEqual(expectedActions)
170+
})
105171
})

redisinsight/ui/src/pages/instance/InstancePage.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ import {
1919
setAppContextInitialState,
2020
setDbConfig,
2121
} from 'uiSrc/slices/app/context'
22-
import { resetPatternKeysData } from 'uiSrc/slices/browser/keys'
22+
import { resetKeys, resetPatternKeysData } from 'uiSrc/slices/browser/keys'
2323
import { BrowserStorageItem, FeatureFlags } from 'uiSrc/constants'
2424
import { localStorageService } from 'uiSrc/services'
2525
import { FeatureFlagComponent } from 'uiSrc/components'
2626
import { resetOutput } from 'uiSrc/slices/cli/cli-output'
27-
import { cliSettingsSelector } from 'uiSrc/slices/cli/cli-settings'
27+
import { cliSettingsSelector, resetCliHelperSettings } from 'uiSrc/slices/cli/cli-settings'
2828
import BottomGroupComponents from 'uiSrc/components/bottom-group-components/BottomGroupComponents'
2929
import LiveTimeRecommendations from 'uiSrc/components/live-time-recommendations'
3030
import { monitorSelector, setMonitorInitialState } from 'uiSrc/slices/cli/monitor'
@@ -39,7 +39,7 @@ import InstancePageRouter from './InstancePageRouter'
3939
import styles from './styles.module.scss'
4040

4141
export interface Props {
42-
routes: any[];
42+
routes: any[]
4343
}
4444

4545
export const firstPanelId = 'main-component'
@@ -105,11 +105,13 @@ const InstancePage = ({ routes = [] }: Props) => {
105105
}, [])
106106

107107
const resetContext = () => {
108+
dispatch(resetKeys())
108109
dispatch(setMonitorInitialState())
109110
dispatch(setInitialPubSubState())
110111
dispatch(setBulkActionsInitialState())
111112
dispatch(setAppContextInitialState())
112113
dispatch(resetPatternKeysData())
114+
dispatch(resetCliHelperSettings())
113115
dispatch(resetRedisearchKeysData())
114116
dispatch(setClusterDetailsInitialState())
115117
dispatch(setDatabaseAnalysisInitialState())

redisinsight/ui/src/slices/instances/instances.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { setAppContextInitialState } from 'uiSrc/slices/app/context'
99
import successMessages from 'uiSrc/components/notifications/success-messages'
1010
import { checkRediStack, getApiErrorMessage, isStatusSuccessful, Nullable } from 'uiSrc/utils'
1111
import { INFINITE_MESSAGES, InfiniteMessagesIds } from 'uiSrc/components/notifications/components'
12+
import { resetKeys } from 'uiSrc/slices/browser/keys'
1213
import { Database as DatabaseInstanceResponse } from 'apiSrc/modules/database/models/database'
1314
import { RedisNodeInfoResponse } from 'apiSrc/modules/database/dto/redis-info.dto'
1415
import { ExportDatabase } from 'apiSrc/modules/database/models/export-database'
@@ -442,6 +443,7 @@ function autoCreateAndConnectToInstanceActionSuccess(
442443
const state = stateInit()
443444
const isConnectedId = state.app?.context?.contextInstanceId === id
444445
if (!isConnectedId) {
446+
dispatch(resetKeys())
445447
dispatch(setAppContextInitialState())
446448
dispatch(setConnectedInstanceId(id ?? ''))
447449
}
@@ -532,6 +534,7 @@ export function deleteInstancesAction(instances: Instance[], onSuccess?: () => v
532534

533535
if (databasesIds.includes(state.app.context.contextInstanceId)) {
534536
dispatch(resetConnectedInstance())
537+
dispatch(resetKeys())
535538
dispatch(setAppContextInitialState())
536539
}
537540
onSuccess?.()

redisinsight/ui/src/slices/oauth/cloud.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
} from 'uiSrc/components/notifications/components'
1313
import successMessages from 'uiSrc/components/notifications/success-messages'
1414
import { getCloudSsoUtmParams } from 'uiSrc/utils/oauth/cloudSsoUtm'
15+
import { resetKeys } from 'uiSrc/slices/browser/keys'
1516
import { CloudUser } from 'apiSrc/modules/cloud/user/models'
1617
import { CloudJobInfo } from 'apiSrc/modules/cloud/job/models'
1718
import { CloudSubscriptionPlanResponse } from 'apiSrc/modules/cloud/subscription/dto'
@@ -238,6 +239,7 @@ export function createFreeDbSuccess(id: string, history: any) {
238239
return async (dispatch: AppDispatch) => {
239240
try {
240241
const onConnect = () => {
242+
dispatch(resetKeys())
241243
dispatch(setAppContextInitialState())
242244
dispatch(setConnectedInstanceId(id ?? ''))
243245
dispatch(removeInfiniteNotification(InfiniteMessagesIds.oAuthSuccess))

redisinsight/ui/src/slices/tests/instances/instances.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import successMessages from 'uiSrc/components/notifications/success-messages'
1212
import { checkRediStack } from 'uiSrc/utils'
1313
import { INFINITE_MESSAGES } from 'uiSrc/components/notifications/components'
1414
import { setAppContextInitialState } from 'uiSrc/slices/app/context'
15+
import { resetKeys } from 'uiSrc/slices/browser/keys'
1516
import reducer, {
1617
initialState,
1718
instancesSelector,
@@ -1032,6 +1033,7 @@ describe('instances slice', () => {
10321033
// Assert
10331034
const expectedActions = [
10341035
defaultInstanceChanging(),
1036+
resetKeys(),
10351037
setAppContextInitialState(),
10361038
setConnectedInstanceId(mockId),
10371039
setDefaultInstance(),
@@ -1701,6 +1703,7 @@ describe('instances slice', () => {
17011703
// Assert
17021704
const expectedActions = [
17031705
addInfiniteNotification(INFINITE_MESSAGES.AUTO_CREATING_DATABASE()),
1706+
resetKeys(),
17041707
setAppContextInitialState(),
17051708
setConnectedInstanceId(mockId),
17061709
setDefaultInstance(),
@@ -1742,6 +1745,7 @@ describe('instances slice', () => {
17421745
// Assert
17431746
const expectedActions = [
17441747
addInfiniteNotification(INFINITE_MESSAGES.AUTO_CREATING_DATABASE()),
1748+
resetKeys(),
17451749
setAppContextInitialState(),
17461750
setConnectedInstanceId(mockId),
17471751
setDefaultInstance(),

0 commit comments

Comments
 (0)