Skip to content

Commit e5f274a

Browse files
committed
#RI-3668 - add test for telemetry
1 parent a90cb4d commit e5f274a

File tree

1 file changed

+52
-5
lines changed

1 file changed

+52
-5
lines changed

redisinsight/ui/src/pages/databaseAnalysis/components/analysis-data-view/AnalysisDataView.spec.tsx

Lines changed: 52 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
import React from 'react'
22
import { instance, mock } from 'ts-mockito'
33
import { MOCK_ANALYSIS_REPORT_DATA } from 'uiSrc/mocks/data/analysis'
4+
import { INSTANCE_ID_MOCK } from 'uiSrc/mocks/handlers/analytics/clusterDetailsHandlers'
5+
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
46
import { formatBytes, getGroupTypeDisplay } from 'uiSrc/utils'
57
import { numberWithSpaces } from 'uiSrc/utils/numbers'
68
import { fireEvent, render, screen, within } from 'uiSrc/utils/test-utils'
79

810
import AnalysisDataView, { Props } from './AnalysisDataView'
911

10-
const mockedProps = mock<Props>()
12+
jest.mock('uiSrc/telemetry', () => ({
13+
...jest.requireActual('uiSrc/telemetry'),
14+
sendEventTelemetry: jest.fn(),
15+
}))
1116

17+
const mockedProps = mock<Props>()
1218
const mockReports = [
1319
{
1420
id: MOCK_ANALYSIS_REPORT_DATA.id,
@@ -20,6 +26,11 @@ const mockReports = [
2026
}
2127
]
2228

29+
const summaryContainerId = 'summary-per-data'
30+
const analyticsTTLContainerId = 'analysis-ttl'
31+
const topNameSpacesContainerId = 'top-namespaces'
32+
const extrapolateResultsId = 'extrapolate-results'
33+
2334
describe('AnalysisDataView', () => {
2435
it('should render', () => {
2536
expect(render(<AnalysisDataView {...instance(mockedProps)} />)).toBeTruthy()
@@ -104,7 +115,7 @@ describe('AnalysisDataView', () => {
104115
<AnalysisDataView {...instance(mockedProps)} reports={mockReports} data={mockedData} />
105116
)
106117

107-
fireEvent.click(within(screen.getByTestId('summary-per-data')).getByTestId('extrapolate-results'))
118+
fireEvent.click(within(screen.getByTestId(summaryContainerId)).getByTestId(extrapolateResultsId))
108119

109120
expect(screen.getByTestId('total-memory-value')).toHaveTextContent(`${formatBytes(mockedData.totalMemory.total, 3)}`)
110121
expect(screen.getByTestId('total-keys-value')).toHaveTextContent(`${numberWithSpaces(mockedData.totalKeys.total)}`)
@@ -157,7 +168,7 @@ describe('AnalysisDataView', () => {
157168
render(
158169
<AnalysisDataView {...instance(mockedProps)} reports={mockReports} data={mockedData} />
159170
)
160-
fireEvent.click(within(screen.getByTestId('analysis-ttl')).getByTestId('extrapolate-results'))
171+
fireEvent.click(within(screen.getByTestId(analyticsTTLContainerId)).getByTestId(extrapolateResultsId))
161172

162173
const expirationGroup = mockedData.expirationGroups[1]
163174

@@ -198,7 +209,7 @@ describe('AnalysisDataView', () => {
198209
render(
199210
<AnalysisDataView {...instance(mockedProps)} reports={mockReports} data={mockedData} />
200211
)
201-
fireEvent.click(within(screen.getByTestId('top-namespaces')).getByTestId('extrapolate-results'))
212+
fireEvent.click(within(screen.getByTestId(topNameSpacesContainerId)).getByTestId(extrapolateResultsId))
202213

203214
const nspTopKeyItem = mockedData.topKeysNsp[0]
204215
expect(screen.getByTestId(`nsp-usedMemory-value=${nspTopKeyItem.memory}`))
@@ -221,7 +232,7 @@ describe('AnalysisDataView', () => {
221232
<AnalysisDataView {...instance(mockedProps)} reports={mockReports} data={mockedData} />
222233
)
223234

224-
expect(screen.queryByTestId('extrapolate-results')).not.toBeInTheDocument()
235+
expect(screen.queryByTestId(extrapolateResultsId)).not.toBeInTheDocument()
225236

226237
expect(screen.getByTestId('total-memory-value')).toHaveTextContent(`${formatBytes(mockedData.totalMemory.total, 3)}`)
227238
expect(screen.getByTestId('total-keys-value')).toHaveTextContent(`${numberWithSpaces(mockedData.totalKeys.total)}`)
@@ -238,4 +249,40 @@ describe('AnalysisDataView', () => {
238249
expect(screen.getAllByTestId(`keys-value-${nspTopKeyItem.keys}`)[0])
239250
.toHaveTextContent(`${numberWithSpaces(nspTopKeyItem.keys)}`)
240251
})
252+
253+
it('should call proper telemetry events after click extrapolation', () => {
254+
const mockedData = {
255+
...MOCK_ANALYSIS_REPORT_DATA,
256+
progress: {
257+
total: 80,
258+
scanned: 10000,
259+
processed: 40
260+
}
261+
}
262+
const sendEventTelemetryMock = jest.fn()
263+
sendEventTelemetry.mockImplementation(() => sendEventTelemetryMock)
264+
265+
render(
266+
<AnalysisDataView {...instance(mockedProps)} reports={mockReports} data={mockedData} />
267+
)
268+
269+
const clickAndCheckTelemetry = (el: HTMLInputElement) => {
270+
fireEvent.click(el)
271+
expect(sendEventTelemetry).toBeCalledWith({
272+
event: TelemetryEvent.DATABASE_ANALYSIS_EXTRAPOLATION_CHANGED,
273+
eventData: {
274+
databaseId: INSTANCE_ID_MOCK,
275+
from: !el.checked,
276+
to: el.checked
277+
}
278+
})
279+
sendEventTelemetry.mockRestore()
280+
}
281+
282+
[summaryContainerId, analyticsTTLContainerId, topNameSpacesContainerId].forEach((id) => {
283+
const extrapolateSwitch = within(screen.getByTestId(id)).getByTestId(extrapolateResultsId)
284+
clickAndCheckTelemetry(extrapolateSwitch as HTMLInputElement)
285+
clickAndCheckTelemetry(extrapolateSwitch as HTMLInputElement)
286+
})
287+
})
241288
})

0 commit comments

Comments
 (0)