From b27b35644ae3e960995b2023a5d5d4e14b39eb69 Mon Sep 17 00:00:00 2001 From: Sverre Blekastad Stensby Date: Wed, 9 Aug 2023 10:13:04 +0200 Subject: [PATCH] La til test for metrikkutsendelse ved print-klikk. Flyttet testen for autoutsendelse til samme fil. --- src/Forside/Forside.tsx | 2 + .../Sammenligningspaneler.test.tsx | 69 --------------- .../Sammenligningspaneler.tsx | 13 ++- src/Metrikker.test.tsx | 88 +++++++++++++++++++ "src/hooks/useSykefrav\303\246rAppData.ts" | 1 + 5 files changed, 102 insertions(+), 71 deletions(-) delete mode 100644 src/Forside/Sammenligningspaneler/Sammenligningspaneler.test.tsx create mode 100644 src/Metrikker.test.tsx diff --git a/src/Forside/Forside.tsx b/src/Forside/Forside.tsx index 8ca7bcb4..a712d2e2 100644 --- a/src/Forside/Forside.tsx +++ b/src/Forside/Forside.tsx @@ -20,6 +20,7 @@ import { PubliseringsdatoOppdateringsinfo } from './PubliseringsdatoOppdaterings export const Forside: FunctionComponent = (appData) => { const orgnr = useOrgnr() || ''; const harFeil = appData.aggregertStatistikk.restStatus === RestStatus.Feil; + const { skalSendeMetrikkerAutomatisk = true } = appData; // Vi må kunne disable autoutsending for å teste utsending ved print-klikk (src/Metrikker.test.tsx) const brukerHarIaRettighetTilValgtBedrift = appData.altinnOrganisasjonerMedStatistikktilgang.status === RestStatus.Suksess && @@ -170,6 +171,7 @@ export const Forside: FunctionComponent = (appData) => { /> diff --git a/src/Forside/Sammenligningspaneler/Sammenligningspaneler.test.tsx b/src/Forside/Sammenligningspaneler/Sammenligningspaneler.test.tsx deleted file mode 100644 index 3d30f348..00000000 --- a/src/Forside/Sammenligningspaneler/Sammenligningspaneler.test.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { MockResizeObserver } from '../../../jest/MockResizeObserver'; -import { render } from '@testing-library/react'; -import React from 'react'; -import { mockAllDatahentingStatusOk } from '../../api/mockedApiResponses/use-analytics-test-mocks'; -import { BrowserRouter } from 'react-router-dom'; -import { Forside } from '../Forside'; -import { RestRessurs, RestStatus } from '../../api/api-utils'; -import { AltinnOrganisasjon } from '../../api/altinnorganisasjon-api'; -import { fleskOgFisk, heiOgHåBarnehage } from '../../api/mockedApiResponses/altinn-mock'; -import * as hooks from '../../hooks/useOrgnr'; -import * as metrikker from '../../metrikker/iatjenester'; -import { act } from 'react-dom/test-utils'; - -describe('Sammenligningspaneler', () => { - const MockObserver = new MockResizeObserver(); - - beforeEach(() => { - MockObserver.startmock(); - }); - - afterEach(() => { - MockObserver.stopmock(); - jest.resetAllMocks(); - }); - - const altinnOrganisasjoner: RestRessurs = { - status: RestStatus.Suksess, - data: [...fleskOgFisk, ...heiOgHåBarnehage], - }; - - const altinnOrganisasjonerMedStatistikktilgang: RestRessurs = { - status: RestStatus.Suksess, - data: heiOgHåBarnehage, - }; - - const mockAppData = { - ...mockAllDatahentingStatusOk, - altinnOrganisasjonerMedStatistikktilgang, - altinnOrganisasjoner, - }; - - function renderForside() { - return render( - - - - ); - } - - it('sender ia-tjenestermetrikk etter ca. 5 sekunder', async () => { - jest.useFakeTimers(); - const valgtBedriftMedSykefraværsstatistikkRettigheter = - heiOgHåBarnehage[0].OrganizationNumber; - jest.spyOn(hooks, 'useOrgnr').mockReturnValue( - valgtBedriftMedSykefraværsstatistikkRettigheter - ); - const spy = jest.spyOn(metrikker, 'sendIaTjenesteMetrikkMottatt'); - - renderForside(); - - expect(spy).not.toHaveBeenCalled(); - - act(() => { - jest.advanceTimersByTime(7000); - }); - - expect(spy).toHaveBeenCalled(); - }); -}); diff --git a/src/Forside/Sammenligningspaneler/Sammenligningspaneler.tsx b/src/Forside/Sammenligningspaneler/Sammenligningspaneler.tsx index 938dbe21..c749d327 100644 --- a/src/Forside/Sammenligningspaneler/Sammenligningspaneler.tsx +++ b/src/Forside/Sammenligningspaneler/Sammenligningspaneler.tsx @@ -11,11 +11,20 @@ import { sendIaTjenesteMetrikkMottatt } from '../../metrikker/iatjenester'; interface Props { aggregertStatistikk: RestAggregertStatistikk; orgnr: string; + skalSendeMetrikkerAutomatisk?: boolean; } -export const Sammenligningspaneler: FunctionComponent = ({ aggregertStatistikk, orgnr }) => { +export const Sammenligningspaneler: FunctionComponent = ({ + aggregertStatistikk, + orgnr, + skalSendeMetrikkerAutomatisk = true, +}) => { useEffect(() => { - const timer = setTimeout(() => sendIaTjenesteMetrikkMottatt(orgnr), 5000); + const timer = setTimeout(() => { + if (skalSendeMetrikkerAutomatisk) { + sendIaTjenesteMetrikkMottatt(orgnr); + } + }, 5000); return () => clearTimeout(timer); }, [orgnr]); diff --git a/src/Metrikker.test.tsx b/src/Metrikker.test.tsx new file mode 100644 index 00000000..31689c6e --- /dev/null +++ b/src/Metrikker.test.tsx @@ -0,0 +1,88 @@ +import { MockResizeObserver } from '../jest/MockResizeObserver'; +import { render, screen, fireEvent, waitFor } from '@testing-library/react'; +import React from 'react'; +import { mockAllDatahentingStatusOk } from './api/mockedApiResponses/use-analytics-test-mocks'; +import { BrowserRouter } from 'react-router-dom'; +import { Forside } from './Forside/Forside'; +import { RestRessurs, RestStatus } from './api/api-utils'; +import { AltinnOrganisasjon } from './api/altinnorganisasjon-api'; +import { fleskOgFisk, heiOgHåBarnehage } from './api/mockedApiResponses/altinn-mock'; +import * as hooks from './hooks/useOrgnr'; +import * as metrikker from './metrikker/iatjenester'; +import { act } from 'react-dom/test-utils'; + +describe('Metrikkutsendelser', () => { + const MockObserver = new MockResizeObserver(); + let spy: jest.SpyInstance; + + beforeEach(() => { + MockObserver.startmock(); + const valgtBedriftMedSykefraværsstatistikkRettigheter = + heiOgHåBarnehage[0].OrganizationNumber; + jest.spyOn(hooks, 'useOrgnr').mockReturnValue( + valgtBedriftMedSykefraværsstatistikkRettigheter + ); + spy = jest.spyOn(metrikker, 'sendIaTjenesteMetrikkMottatt'); + }); + + afterEach(() => { + MockObserver.stopmock(); + jest.resetAllMocks(); + }); + + const altinnOrganisasjoner: RestRessurs = { + status: RestStatus.Suksess, + data: [...fleskOgFisk, ...heiOgHåBarnehage], + }; + + const altinnOrganisasjonerMedStatistikktilgang: RestRessurs = { + status: RestStatus.Suksess, + data: heiOgHåBarnehage, + }; + + const mockAppData = { + ...mockAllDatahentingStatusOk, + altinnOrganisasjonerMedStatistikktilgang, + altinnOrganisasjoner, + }; + + function renderForside(skalSendeMetrikkerAutomatisk = true) { + return render( + + + + ); + } + it('Sender ia-tjenestermetrikk etter ca. 5 sekunder', async () => { + jest.useFakeTimers(); + + renderForside(); + + expect(spy).not.toHaveBeenCalled(); + + act(() => { + jest.advanceTimersByTime(7000); + }); + + expect(spy).toHaveBeenCalled(); + jest.useRealTimers(); + }); + + it('Sender ia-tjenestermetrikk ved print-klikk', async () => { + renderForside(false); + + const knapp = screen.getByText('Last ned'); + + expect(knapp).toBeDefined(); + + expect(spy).not.toHaveBeenCalled(); + + fireEvent.click(knapp); + await waitFor(() => { + expect(spy).toHaveBeenCalled(); + }); + }); +}); diff --git "a/src/hooks/useSykefrav\303\246rAppData.ts" "b/src/hooks/useSykefrav\303\246rAppData.ts" index 2eac2d72..3ed538a6 100644 --- "a/src/hooks/useSykefrav\303\246rAppData.ts" +++ "b/src/hooks/useSykefrav\303\246rAppData.ts" @@ -20,6 +20,7 @@ export interface SykefraværAppData { sykefraværshistorikk: RestSykefraværshistorikk; aggregertStatistikk: RestAggregertStatistikk; publiseringsdatoer: RestPubliseringsdatoer; + skalSendeMetrikkerAutomatisk?: boolean; } export function useSykefraværAppData(): SykefraværAppData {