Skip to content

Commit c89101b

Browse files
#RI-5211 - add test
1 parent 059781b commit c89101b

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import React from 'react'
2+
import { useFormikContext } from 'formik'
3+
import { render, fireEvent, screen } from 'uiSrc/utils/test-utils'
4+
import { MOCK_RDI_PIPELINE_DATA } from 'uiSrc/mocks/data/rdi'
5+
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
6+
import ConfirmLeavePagePopup, { Props } from './ConfirmLeavePagePopup'
7+
8+
const mockProps: Props = {
9+
onClose: jest.fn(),
10+
onConfirm: jest.fn()
11+
}
12+
13+
jest.mock('formik')
14+
15+
jest.mock('uiSrc/telemetry', () => ({
16+
...jest.requireActual('uiSrc/telemetry'),
17+
sendEventTelemetry: jest.fn()
18+
}))
19+
20+
describe('ConfirmLeavePagePopup', () => {
21+
beforeEach(() => {
22+
const mockUseFormikContext = {
23+
setFieldValue: jest.fn,
24+
values: MOCK_RDI_PIPELINE_DATA,
25+
};
26+
(useFormikContext as jest.Mock).mockReturnValue(mockUseFormikContext)
27+
})
28+
29+
it('should render', () => {
30+
expect(render(<ConfirmLeavePagePopup {...mockProps} />)).toBeTruthy()
31+
})
32+
33+
it('should call proper telemetry event', async () => {
34+
const sendEventTelemetryMock = jest.fn();
35+
(sendEventTelemetry as jest.Mock).mockImplementation(() => sendEventTelemetryMock)
36+
37+
render(<ConfirmLeavePagePopup {...mockProps} />)
38+
39+
expect(sendEventTelemetry).toBeCalledWith({
40+
event: TelemetryEvent.RDI_UNSAVED_CHANGES_MESSAGE_DISPLAYED,
41+
eventData: {
42+
id: 'rdiInstanceId',
43+
}
44+
});
45+
(sendEventTelemetry as jest.Mock).mockRestore()
46+
})
47+
48+
it('should call onConfirm', async () => {
49+
const onConfirmMock = jest.fn()
50+
render(<ConfirmLeavePagePopup {...mockProps} onConfirm={onConfirmMock} />)
51+
52+
fireEvent.click(screen.getByTestId('confirm-leave-page'))
53+
54+
expect(onConfirmMock).toBeCalled()
55+
})
56+
})

redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/ConfirmLeavePagePopup.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
EuiModalBody,
55
EuiTitle, EuiText, EuiButton,
66
} from '@elastic/eui'
7+
import { useParams } from 'react-router-dom'
78

89
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
910
import Download from 'uiSrc/pages/rdi/pipeline-management/components/download/Download'
@@ -18,9 +19,14 @@ export interface Props {
1819
const ConfirmLeavePagePopup = (props: Props) => {
1920
const { onClose, onConfirm } = props
2021

22+
const { rdiInstanceId } = useParams<{ rdiInstanceId: string }>()
23+
2124
useEffect(() => {
2225
sendEventTelemetry({
23-
event: TelemetryEvent.RDI_UNSAVED_CHANGES_MESSAGE_DISPLAYED
26+
event: TelemetryEvent.RDI_UNSAVED_CHANGES_MESSAGE_DISPLAYED,
27+
eventData: {
28+
id: rdiInstanceId,
29+
}
2430
})
2531
}, [])
2632

0 commit comments

Comments
 (0)