Skip to content

Commit cbe857e

Browse files
authored
Merge pull request #4080 from RedisInsight/bugfix/feature/RI-6268
#RI-6309 - 6313 - defect fixing
2 parents bce69e9 + 2ea29b1 commit cbe857e

File tree

10 files changed

+75
-12
lines changed

10 files changed

+75
-12
lines changed

redisinsight/ui/src/pages/home/HomePage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ enum OpenDialogName {
4848

4949
const HomePage = () => {
5050
const [openDialog, setOpenDialog] = useState<Nullable<OpenDialogName>>(null)
51-
const initialDbTypeRef = useRef<AddDbType>(AddDbType.manual)
51+
const initialDbTypeRef = useRef<AddDbType>(AddDbType.cloud)
5252

5353
const dispatch = useDispatch()
5454

redisinsight/ui/src/pages/home/components/cloud-connection/cloud-connection-form/CloudConnectionForm.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ const CloudConnectionForm = (props: Props) => {
172172
return null
173173
}
174174

175-
const CloudApiForm = () => (
175+
const CloudApiForm = (
176176
<div className={styles.cloudApi} data-testid="add-db_cloud-api">
177177
<MessageCloudApiKeys />
178178
<EuiSpacer />
@@ -237,7 +237,7 @@ const CloudConnectionForm = (props: Props) => {
237237
<EuiSpacer />
238238
</FeatureFlagComponent>
239239
{type === CloudConnectionOptions.Account && (<OAuthAutodiscovery source={OAuthSocialSource.DiscoveryForm} />)}
240-
{type === CloudConnectionOptions.ApiKeys && (<CloudApiForm />)}
240+
{type === CloudConnectionOptions.ApiKeys && CloudApiForm}
241241
</div>
242242
)
243243
}

redisinsight/ui/src/pages/home/components/database-panel-dialog/DatabasePanelDialog.spec.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ describe('DatabasePanelDialog', () => {
1111
expect(render(<DatabasePanelDialog {...instance(mockedProps)} />)).toBeTruthy()
1212
})
1313

14+
it('should change tab to manual and render proper form', () => {
15+
render(<DatabasePanelDialog {...instance(mockedProps)} isOpen onClose={jest.fn()} />)
16+
17+
fireEvent.click(screen.getByTestId('add-database_tab_manual'))
18+
19+
expect(screen.getByTestId('add-db_manual')).toBeInTheDocument()
20+
})
21+
1422
it('should change tab to cloud and render proper form', () => {
1523
render(<DatabasePanelDialog {...instance(mockedProps)} isOpen onClose={jest.fn()} />)
1624

redisinsight/ui/src/pages/home/components/database-panel-dialog/DatabasePanelDialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const DatabasePanelDialog = (props: Props) => {
5050
isOpen,
5151
editMode,
5252
onClose,
53-
initConnectionType = AddDbType.manual
53+
initConnectionType = AddDbType.cloud
5454
} = props
5555

5656
const [typeSelected, setTypeSelected] = useState<InstanceType>(

redisinsight/ui/src/pages/home/components/database-panel-dialog/styles.module.scss

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,16 @@
9696
.euiFormRow, .euiFormControlLayout {
9797
max-width: none;
9898

99+
.euiFormControlLayout:not(.euiFormControlLayout--compressed) {
100+
height: 42px !important;
101+
}
102+
99103
.euiSuperSelectControl:not(.euiSuperSelectControl--compressed),
100104
.euiSelect:not(.euiSelect--compressed),
101-
.euiFormControlLayout:not(.euiFormControlLayout--compressed),
102105
.euiFieldText:not(.euiFieldText--compressed),
103106
.euiFieldNumber:not(.euiFieldNumber--compressed),
104107
.euiFieldPassword {
105-
height: 43px !important;
108+
height: 40px !important;
106109
}
107110
}
108111

redisinsight/ui/src/pages/home/components/form/Messages.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React from 'react'
22
import { EuiLink, EuiText } from '@elastic/eui'
33
import { APPLICATION_NAME } from 'uiSrc/constants'
44

5+
import { getUtmExternalLink } from 'uiSrc/utils/links'
56
import styles from '../styles.module.scss'
67

78
const MessageCloudApiKeys = () => (
@@ -27,7 +28,7 @@ const MessageStandalone = () => (
2728
. &nbsp;
2829
<EuiLink
2930
color="text"
30-
href="https://docs.redis.com/latest/ri/using-redisinsight/add-instance/"
31+
href={getUtmExternalLink('https://redis.io/docs/latest/develop/connect/insight#connection-management', { campaign: 'redisinsight' })}
3132
className={styles.link}
3233
external={false}
3334
target="_blank"
@@ -46,7 +47,7 @@ const MessageSentinel = () => (
4647
. &nbsp;
4748
<EuiLink
4849
color="text"
49-
href="https://redis.io/docs/management/sentinel/"
50+
href={getUtmExternalLink('https://redis.io/docs/latest/operate/oss_and_stack/management/sentinel/', { campaign: 'redisinsight' })}
5051
className={styles.link}
5152
external={false}
5253
target="_blank"
@@ -65,7 +66,7 @@ const MessageEnterpriceSoftware = () => (
6566
. &nbsp;
6667
<EuiLink
6768
color="text"
68-
href="https://redis.io/redis-enterprise-software/overview/?utm_source=redis&utm_medium=app&utm_campaign=redisinsight"
69+
href={getUtmExternalLink('https://redis.io/redis-enterprise-software/overview/', { campaign: 'redisinsight' })}
6970
className={styles.link}
7071
external={false}
7172
target="_blank"

redisinsight/ui/src/pages/home/components/import-database/ImportDatabase.spec.tsx

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { cloneDeep } from 'lodash'
33
import { act, cleanup, fireEvent, mockedStore, render, screen } from 'uiSrc/utils/test-utils'
44

55
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
6-
import { importInstancesFromFile, importInstancesSelector } from 'uiSrc/slices/instances/instances'
6+
import { importInstancesFromFile, importInstancesSelector, resetImportInstances } from 'uiSrc/slices/instances/instances'
77
import ImportDatabase from './ImportDatabase'
88

99
jest.mock('uiSrc/slices/instances/instances', () => ({
@@ -49,7 +49,7 @@ describe('ImportDatabase', () => {
4949
type: 'application/JSON',
5050
})
5151

52-
await act(() => {
52+
await act(async () => {
5353
fireEvent.change(
5454
screen.getByTestId('import-file-modal-filepicker'),
5555
{
@@ -71,6 +71,26 @@ describe('ImportDatabase', () => {
7171
(sendEventTelemetry as jest.Mock).mockRestore()
7272
})
7373

74+
it('should call proper actions on retry', async () => {
75+
(importInstancesSelector as jest.Mock).mockImplementation(() => ({
76+
loading: false,
77+
data: null,
78+
error: 'Error message'
79+
}))
80+
81+
render(
82+
<div>
83+
<ImportDatabase onClose={jest.fn()} />
84+
<div id="footerDatabaseForm" />
85+
</div>
86+
)
87+
88+
fireEvent.click(screen.getByTestId('btn-retry'))
89+
90+
const expectedActions = [resetImportInstances()]
91+
expect(store.getActions()).toEqual(expectedActions)
92+
})
93+
7494
it('should render error message when 0 success databases added', () => {
7595
(importInstancesSelector as jest.Mock).mockImplementation(() => ({
7696
loading: false,

redisinsight/ui/src/pages/home/components/import-database/ImportDatabase.tsx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ const ImportDatabase = (props: Props) => {
4444

4545
useEffect(() => {
4646
setDomReady(true)
47+
48+
return () => {
49+
dispatch(resetImportInstances())
50+
}
4751
}, [])
4852

4953
const onFileChange = (files: FileList | null) => {
@@ -66,6 +70,11 @@ const ImportDatabase = (props: Props) => {
6670
}
6771
}
6872

73+
const onClickRetry = () => {
74+
dispatch(resetImportInstances())
75+
onFileChange(null)
76+
}
77+
6978
const onSubmit = () => {
7079
if (files) {
7180
const formData = new FormData()
@@ -83,6 +92,23 @@ const ImportDatabase = (props: Props) => {
8392
const footerEl = document.getElementById('footerDatabaseForm')
8493
if (!domReady || !footerEl) return null
8594

95+
if (error) {
96+
return ReactDOM.createPortal(
97+
<div className="footerAddDatabase">
98+
<EuiButton
99+
fill
100+
size="s"
101+
color="secondary"
102+
onClick={onClickRetry}
103+
data-testid="btn-retry"
104+
>
105+
Retry
106+
</EuiButton>
107+
</div>,
108+
footerEl
109+
)
110+
}
111+
86112
if (data) {
87113
return ReactDOM.createPortal(
88114
<div className="footerAddDatabase">

redisinsight/ui/src/pages/home/components/import-database/styles.module.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,8 @@
3232
}
3333
}
3434
}
35+
36+
.result {
37+
text-align: center;
38+
margin-top: 32px;
39+
}

redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/ManualConnectionForm.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ const ManualConnectionForm = (props: Props) => {
223223
}
224224

225225
return (
226-
<div className="relative">
226+
<div className="relative" data-testid="add-db_manual">
227227
{isEditMode && !isCloneMode && server?.buildType !== BuildType.RedisStack && (
228228
<CloneConnection id={id} setIsCloneMode={setIsCloneMode} />
229229
)}

0 commit comments

Comments
 (0)