Skip to content

Commit ef95c5b

Browse files
Merge pull request #4050 from RedisInsight/fe/feature/RI-6280-improve-rdi-telemetry
RI-6280 added rdi telemetry, new button style to insert template btn
2 parents f11fc07 + 399e9cc commit ef95c5b

File tree

13 files changed

+153
-20
lines changed

13 files changed

+153
-20
lines changed

redisinsight/ui/src/components/navigation-menu/NavigationMenu.spec.tsx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { appInfoSelector } from 'uiSrc/slices/app/info'
66
import { cleanup, mockedStore, render, screen, fireEvent } from 'uiSrc/utils/test-utils'
77

88
import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances'
9+
import { appContextSelector } from 'uiSrc/slices/app/context'
910
import NavigationMenu from './NavigationMenu'
1011

1112
let store: typeof mockedStore
@@ -17,6 +18,13 @@ beforeEach(() => {
1718

1819
const mockAppInfoSelector = jest.requireActual('uiSrc/slices/app/info')
1920

21+
jest.mock('uiSrc/slices/app/context', () => ({
22+
...jest.requireActual('uiSrc/slices/app/context'),
23+
appContextSelector: jest.fn().mockReturnValue({
24+
workspace: 'database',
25+
}),
26+
}))
27+
2028
jest.mock('uiSrc/slices/app/info', () => ({
2129
...jest.requireActual('uiSrc/slices/app/info'),
2230
appInfoSelector: jest.fn().mockReturnValue({
@@ -31,6 +39,13 @@ jest.mock('uiSrc/slices/instances/instances', () => ({
3139
}),
3240
}))
3341

42+
jest.mock('uiSrc/slices/rdi/instances', () => ({
43+
...jest.requireActual('uiSrc/slices/rdi/instances'),
44+
connectedInstanceSelector: jest.fn().mockReturnValue({
45+
id: 'mockRdiId',
46+
}),
47+
}))
48+
3449
jest.mock('uiSrc/slices/app/features', () => ({
3550
...jest.requireActual('uiSrc/slices/app/features'),
3651
appFeatureFlagsFeaturesSelector: jest.fn().mockReturnValue({
@@ -157,4 +172,16 @@ describe('NavigationMenu', () => {
157172
expect(githubBtn?.getAttribute('href')).toEqual(EXTERNAL_LINKS.githubRepo)
158173
})
159174
})
175+
176+
it('should render private routes with connectedRdiInstanceId', () => {
177+
(appContextSelector as jest.Mock).mockImplementation(() => ({
178+
...appContextSelector,
179+
workspace: 'redisDataIntegration'
180+
}))
181+
182+
render(<NavigationMenu />)
183+
184+
expect(screen.getByTestId('pipeline-status-page-btn')).toBeTruthy()
185+
expect(screen.getByTestId('pipeline-management-page-btn')).toBeTruthy()
186+
})
160187
})

redisinsight/ui/src/pages/rdi/home/RdiPage.spec.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ describe('RdiPage', () => {
250250

251251
expect(createInstanceAction).toBeCalledWith(
252252
{ name: 'name', url: 'url', username: 'username', password: 'password' },
253+
expect.any(Function),
253254
expect.any(Function)
254255
)
255256
})

redisinsight/ui/src/pages/rdi/home/RdiPage.tsx

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
} from 'uiSrc/telemetry'
1919
import HomePageTemplate from 'uiSrc/templates/home-page-template'
2020
import { setTitle } from 'uiSrc/utils'
21+
import { Rdi as RdiInstanceResponse } from 'apiSrc/modules/rdi/models/rdi'
2122
import EmptyMessage from './empty-message/EmptyMessage'
2223
import ConnectionForm from './connection-form/ConnectionForm'
2324
import RdiHeader from './header/RdiHeader'
@@ -62,7 +63,26 @@ const RdiPage = () => {
6263
if (editInstance) {
6364
dispatch(editInstanceAction(editInstance.id, instance, onSuccess))
6465
} else {
65-
dispatch(createInstanceAction({ ...instance }, onSuccess))
66+
dispatch(createInstanceAction(
67+
{ ...instance },
68+
(data: RdiInstanceResponse) => {
69+
sendEventTelemetry({
70+
event: TelemetryEvent.RDI_ENDPOINT_ADDED,
71+
eventData: {
72+
rdiId: data.id,
73+
}
74+
})
75+
onSuccess()
76+
},
77+
(error) => {
78+
sendEventTelemetry({
79+
event: TelemetryEvent.RDI_ENDPOINT_ADD_FAILED,
80+
eventData: {
81+
error,
82+
}
83+
})
84+
}
85+
))
6686
}
6787

6888
sendEventTelemetry({

redisinsight/ui/src/pages/rdi/home/instance-list/RdiInstancesListWrapper.spec.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,4 +195,22 @@ describe('RdiInstancesListWrapper', () => {
195195
});
196196
(sendEventTelemetry as jest.Mock).mockRestore()
197197
})
198+
199+
it('should call proper telemetry on instance click', async () => {
200+
const sendEventTelemetryMock = jest.fn();
201+
(sendEventTelemetry as jest.Mock).mockImplementation(() => sendEventTelemetryMock)
202+
render(<RdiInstancesListWrapper {...instance(mockedProps)} />)
203+
204+
await act(() => {
205+
fireEvent.click(screen.getByTestId('rdi-alias-1'))
206+
})
207+
208+
expect(sendEventTelemetry).toBeCalledWith({
209+
event: TelemetryEvent.OPEN_RDI_CLICKED,
210+
eventData: {
211+
rdiId: '1',
212+
}
213+
});
214+
(sendEventTelemetry as jest.Mock).mockRestore()
215+
})
198216
})

redisinsight/ui/src/pages/rdi/home/instance-list/RdiInstancesListWrapper.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ const RdiInstancesListWrapper = ({ width, onEditInstance, editedInstance, onDele
6969
}, [width])
7070

7171
const handleCheckConnectToInstance = (id: string) => {
72+
sendEventTelemetry({
73+
event: TelemetryEvent.OPEN_RDI_CLICKED,
74+
eventData: {
75+
rdiId: id,
76+
}
77+
})
7278
dispatch(checkConnectToRdiInstanceAction(
7379
id,
7480
(id: string) => history.push(Pages.rdiPipeline(id)),

redisinsight/ui/src/pages/rdi/pipeline-management/components/template-button/TemplateButton.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ const TemplateButton = ({ setFieldValue, value }: TemplateButtonProps) => {
4848
<EuiButton
4949
fill
5050
size="s"
51-
color="secondary"
5251
className={styles.btn}
5352
aria-label="Insert template"
5453
isLoading={loading}
Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
.btn {
22
display: flex;
33
align-items: center;
4-
color: var(--recommendationsCountBgColor) !important;
5-
background-color: var(--tableRowSelectedColor) !important;
4+
background-color: var(--insightsTriggerBgColor) !important;
65
border-radius: 4px;
76
border-color: var(--tableRowSelectedColor) !important;
8-
9-
> span {
10-
color: var(--recommendationsCountBgColor) !important;
11-
}
127
}

redisinsight/ui/src/pages/rdi/pipeline-management/components/template-popover/TemplatePopover.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ const TemplatePopover = (props: Props) => {
4747
<EuiButton
4848
fill
4949
size="s"
50-
color="secondary"
5150
className={styles.btn}
5251
aria-label="Insert template"
5352
disabled={loading}

redisinsight/ui/src/pages/rdi/pipeline-management/components/template-popover/styles.module.scss

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,8 @@
1010
.btn {
1111
display: flex;
1212
align-items: center;
13-
color: var(--recommendationsCountBgColor) !important;
14-
background-color: var(--tableRowSelectedColor) !important;
13+
background-color: var(--insightsTriggerBgColor) !important;
1514
border-radius: 4px;
1615
border-color: var(--tableRowSelectedColor) !important;
17-
18-
> span {
19-
color: var(--recommendationsCountBgColor) !important;
20-
}
2116
}
2217
}

redisinsight/ui/src/slices/interfaces/rdi.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,14 @@ export interface RdiInstance extends RdiInstanceResponse {
213213
error: string
214214
}
215215

216+
export interface IErrorData {
217+
message: string
218+
statusCode: number
219+
error: string
220+
errorCode?: number
221+
errors?: string[]
222+
}
223+
216224
export interface InitialStateRdiInstances {
217225
loading: boolean
218226
error: string

0 commit comments

Comments
 (0)