From f874edd279c357a3ae00cbd809f889a69d6eb79f Mon Sep 17 00:00:00 2001 From: Runar Skagestad Date: Thu, 25 Jan 2024 09:07:24 +0100 Subject: [PATCH] Forenkle ia metrikkene (#185) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Legger på kall til IA-metrikker etter fem sekunder på alle undersider * Fjerner alle andre kall til Ia-metrikkene * Skriver tester for metrikkutsendelser --- .github/workflows/build-deploy.yaml | 2 +- src/Aktiviteter/context/aktivitetStatus.tsx | 10 - ...eSendIaTjenesteMetrikkEtterFemSekunder.tsx | 14 ++ .../useSendIaTjenesteMetrikkOnEvent.test.tsx | 55 ----- src/hooks/useSendIaTjenesteMetrikkOnEvent.ts | 29 --- src/integrasjoner/ia-tjenestemetrikker-api.ts | 52 +++-- .../Kalkulator/Kalkulator.test.tsx | 47 +---- src/komponenter/Kalkulator/Kalkulator.tsx | 12 +- .../Kalkulatorrad/Kalkulatorrad.tsx | 1 - src/metrikker.test.tsx | 193 +++++++----------- src/pages/index.tsx | 2 + src/pages/kalkulator.tsx | 3 + src/pages/sykefravarsstatistikk.tsx | 2 + src/sykefravarsstatistikk/Forside/Forside.tsx | 4 +- .../Forside/LastNedKnapp/index.tsx | 5 - .../Sammenligningspaneler.tsx | 20 +- .../LegendMedToggles/LegendMedToggles.tsx | 6 - .../Historikk/Historikk.tsx | 5 +- src/sykefravarsstatistikk/Metrikker.test.tsx | 144 ------------- src/utils/konstanter.ts | 4 +- 20 files changed, 135 insertions(+), 475 deletions(-) create mode 100644 src/hooks/useSendIaTjenesteMetrikkEtterFemSekunder.tsx delete mode 100644 src/hooks/useSendIaTjenesteMetrikkOnEvent.test.tsx delete mode 100644 src/hooks/useSendIaTjenesteMetrikkOnEvent.ts delete mode 100644 src/sykefravarsstatistikk/Metrikker.test.tsx diff --git a/.github/workflows/build-deploy.yaml b/.github/workflows/build-deploy.yaml index 597cd86e..722ce8b4 100644 --- a/.github/workflows/build-deploy.yaml +++ b/.github/workflows/build-deploy.yaml @@ -4,7 +4,7 @@ on: push: branches: - main - - amplitude-browser + - forenkle-ia-metrikkene paths-ignore: - "**.md" - "**/**.md" diff --git a/src/Aktiviteter/context/aktivitetStatus.tsx b/src/Aktiviteter/context/aktivitetStatus.tsx index d3fbdf92..f8ff5d2d 100644 --- a/src/Aktiviteter/context/aktivitetStatus.tsx +++ b/src/Aktiviteter/context/aktivitetStatus.tsx @@ -2,12 +2,10 @@ import React from "react"; import { StatusType } from "../AktivitetData"; import { AktivitetBrukerStatus } from "../../hooks/useHentAktiviteter"; import { oppdaterStatus } from "../status-klient"; -import { sendIaMetrikkInteraksjonstjeneste } from "../../integrasjoner/ia-tjenestemetrikker-api"; import { AggregertStatistikkDto, tomtDataobjekt, } from "../../integrasjoner/aggregert-statistikk-api"; -import {MetrikkKilde} from "@navikt/ia-metrikker-client"; const AktivitetContext = React.createContext<{ aktivitetStatuser: AktivitetBrukerStatus[]; @@ -73,12 +71,6 @@ export const AktivitetProvider = ({ ); }; -export const useAktivitetStatuser = () => { - const { aktivitetStatuser } = React.useContext(AktivitetContext); - - return { aktivitetStatuser }; -}; - export const useStatusForAktivitet = (id: string) => { const { aktivitetStatuser } = React.useContext(AktivitetContext); @@ -110,8 +102,6 @@ export const useOppdaterStatus = ( (status: StatusType) => { if (orgnr) { oppdaterStatus(aktivitetId, orgnr, status); - sendIaMetrikkInteraksjonstjeneste(MetrikkKilde.FOREBYGGINGSPLAN, orgnr); - setLokaleEndringer((tidligereEndringer) => { const aktivitetIndex = tidligereEndringer.findIndex( (endring) => endring.aktivitetId === aktivitetId diff --git a/src/hooks/useSendIaTjenesteMetrikkEtterFemSekunder.tsx b/src/hooks/useSendIaTjenesteMetrikkEtterFemSekunder.tsx new file mode 100644 index 00000000..9ce4db71 --- /dev/null +++ b/src/hooks/useSendIaTjenesteMetrikkEtterFemSekunder.tsx @@ -0,0 +1,14 @@ +import { useEffect } from "react"; +import { sendDigitalIaTjenesteMetrikk } from "../integrasjoner/ia-tjenestemetrikker-api"; +import { useOrgnr } from "./useOrgnr"; + +export function useSendIaMetrikkEtterFemSekunder() { + const orgnr = useOrgnr(); + + useEffect(() => { + const timer = setTimeout(() => { + sendDigitalIaTjenesteMetrikk(orgnr); + }, 5000); + return () => clearTimeout(timer); + }, [orgnr]); +} diff --git a/src/hooks/useSendIaTjenesteMetrikkOnEvent.test.tsx b/src/hooks/useSendIaTjenesteMetrikkOnEvent.test.tsx deleted file mode 100644 index aee42316..00000000 --- a/src/hooks/useSendIaTjenesteMetrikkOnEvent.test.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { render, screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { sendDigitalIaTjenesteMetrikk } from "../integrasjoner/ia-tjenestemetrikker-api"; - -import { useSendIaTjenesteMetrikkOnEvent } from "./useSendIaTjenesteMetrikkOnEvent"; -import { FunctionComponent } from "react"; -import { setupServer } from "msw/node"; -import { rest } from "msw"; -import { METRIKKER_URL } from "../utils/konstanter"; -import { MetrikkKilde } from "@navikt/ia-metrikker-client"; - -jest.mock("../../src/integrasjoner/ia-tjenestemetrikker-api", () => { - return { - __esModule: true, - ...jest.requireActual("../../src/integrasjoner/ia-tjenestemetrikker-api"), - sendDigitalIaTjenesteMetrikk: jest.fn(), - }; -}); - -jest.mock("../../src/hooks/useOrgnr", () => { - return { - __esModule: true, - ...jest.requireActual("../../src/hooks/useOrgnr"), - useOrgnr: jest.fn(() => "999999999"), - }; -}); - -const handlerMetrikkerApiCall = [ - rest.post(METRIKKER_URL, (req, res, ctx) => { - return res(ctx.json({ status: "created" }), ctx.status(201)); - }), -]; - -const server = setupServer(...handlerMetrikkerApiCall); - -beforeAll(() => server.listen()); -afterAll(() => server.close()); - -it("sendLevertInnloggetIaTjeneste kalles når event blir trigget", async () => { - userEvent.setup(); - render(); - - const dummyButton = screen.getByTestId("dummy-button"); - - expect(sendDigitalIaTjenesteMetrikk).not.toHaveBeenCalled(); - - await userEvent.click(dummyButton); - - expect(sendDigitalIaTjenesteMetrikk).toHaveBeenCalled(); -}); - -const UseSendIaTjenesteMetrikkerOnEventExample: FunctionComponent = () => { - useSendIaTjenesteMetrikkOnEvent(MetrikkKilde.SAMTALESTØTTE, "click"); - return ; -}; diff --git a/src/hooks/useSendIaTjenesteMetrikkOnEvent.ts b/src/hooks/useSendIaTjenesteMetrikkOnEvent.ts deleted file mode 100644 index 07e8cdd8..00000000 --- a/src/hooks/useSendIaTjenesteMetrikkOnEvent.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { useOrgnr } from "./useOrgnr"; -import { useEffect, useRef } from "react"; -import { sendDigitalIaTjenesteMetrikk } from "../integrasjoner/ia-tjenestemetrikker-api"; -import { MetrikkKilde } from "@navikt/ia-metrikker-client"; - -export function useSendIaTjenesteMetrikkOnEvent( - fraIaTjeneste: MetrikkKilde, - event: string -) { - const orgnr = useOrgnr(); - const eventListenerHarBlittSattOpp = useRef(false); - - useEffect(() => { - if (orgnr && !eventListenerHarBlittSattOpp.current) { - const sendMetrikk = async () => { - await sendDigitalIaTjenesteMetrikk(fraIaTjeneste, orgnr); - }; - document.addEventListener(event, sendMetrikk, { - once: true, - capture: true, - }); - eventListenerHarBlittSattOpp.current = true; - - return () => { - document.removeEventListener(event, sendMetrikk); - }; - } - }, [fraIaTjeneste, event, orgnr]); -} diff --git a/src/integrasjoner/ia-tjenestemetrikker-api.ts b/src/integrasjoner/ia-tjenestemetrikker-api.ts index c7cfc025..a44d5b3b 100644 --- a/src/integrasjoner/ia-tjenestemetrikker-api.ts +++ b/src/integrasjoner/ia-tjenestemetrikker-api.ts @@ -1,33 +1,31 @@ -import { METRIKKER_URL } from "../utils/konstanter"; -import { - MetrikkKilde, - MetrikkType, - sendIaMetrikk, -} from "@navikt/ia-metrikker-client"; +import { AUTHENTICATED_BASE_PATH } from "../utils/konstanter"; -export const sendDigitalIaTjenesteMetrikk = async ( - tjeneste: MetrikkKilde, - orgnr?: string -) => { - if (!orgnr) { - return Promise.reject("orgnr er udefinert"); - } - return sendIaMetrikk( - orgnr, - MetrikkType.DIGITAL_IA_TJENESTE, - tjeneste, - METRIKKER_URL - ); -}; +interface Metrikk { + orgnr: string; + type: string; + kilde: string; +} -export const sendIaMetrikkInteraksjonstjeneste = async (tjeneste: MetrikkKilde, orgnr?: string) => { +const METRIKKER_URL = AUTHENTICATED_BASE_PATH + "/metrikker"; + +export const sendDigitalIaTjenesteMetrikk = async (orgnr?: string) => { if (!orgnr) { return Promise.reject("orgnr er udefinert"); } - return sendIaMetrikk( - orgnr, - MetrikkType.INTERAKSJONSTJENESTE, - tjeneste, - METRIKKER_URL - ); + + const metrikk: Metrikk = { + orgnr: orgnr, + type: "DIGITAL_IA_TJENESTE", + kilde: "FOREBYGGE_FRAVÆR", + }; + + return await fetch(METRIKKER_URL, { + method: "POST", + credentials: "include", + body: JSON.stringify(metrikk), + headers: { + Accept: "application/json", + "Content-Type": "application/json", + }, + }); }; diff --git a/src/komponenter/Kalkulator/Kalkulator.test.tsx b/src/komponenter/Kalkulator/Kalkulator.test.tsx index ec392397..a39a7904 100644 --- a/src/komponenter/Kalkulator/Kalkulator.test.tsx +++ b/src/komponenter/Kalkulator/Kalkulator.test.tsx @@ -1,51 +1,6 @@ -import { render, screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; +import { render } from "@testing-library/react"; import { Fraværskalulator } from "./Kalkulator"; import { axe } from "jest-axe"; -import { sendDigitalIaTjenesteMetrikk } from "../../integrasjoner/ia-tjenestemetrikker-api"; -jest.mock("next/router", () => ({ - useRouter() { - return { - route: "/", - pathname: "", - query: "", - asPath: "", - push: jest.fn(), - events: { - on: jest.fn(), - off: jest.fn(), - }, - beforePopState: jest.fn(() => null), - prefetch: jest.fn(() => null), - }; - }, -})); -jest.mock("../../integrasjoner/ia-tjenestemetrikker-api", () => ({ - __esModule: true, - ...jest.requireActual("../../integrasjoner/ia-tjenestemetrikker-api"), - sendDigitalIaTjenesteMetrikk: jest.fn(), -})); -jest.mock("../../hooks/useOrgnr", () => ({ - useOrgnr: () => "999999999", -})); - -afterEach(() => { - jest.resetAllMocks(); - jest.fn().mockClear(); -}); - -it("Kaller sendIaTjenesteMetrikk ved endring av modus", async () => { - render(); - const user = userEvent.setup(); - - const dagsverkLenke = screen.getByText("Dagsverk"); - - expect(sendDigitalIaTjenesteMetrikk).toHaveBeenCalledTimes(0); - - await user.click(dagsverkLenke); - - expect(sendDigitalIaTjenesteMetrikk).toHaveBeenCalledTimes(1); -}); it("Ingen uu-feil fra axe", async () => { const { container: myContainer } = render( diff --git a/src/komponenter/Kalkulator/Kalkulator.tsx b/src/komponenter/Kalkulator/Kalkulator.tsx index b0a8a2ef..16ae7ba6 100644 --- a/src/komponenter/Kalkulator/Kalkulator.tsx +++ b/src/komponenter/Kalkulator/Kalkulator.tsx @@ -3,10 +3,8 @@ import styles from "./Kalkulator.module.scss"; import { KalkulatorMedDagsverk } from "./KalkulatorMedDagsverk"; import { KalkulatorMedProsent } from "./KalkulatorMedProsent"; import { Heading, Ingress, Link, ToggleGroup } from "@navikt/ds-react"; -import { useSendIaTjenesteMetrikkOnEvent } from "../../hooks/useSendIaTjenesteMetrikkOnEvent"; import TestVersjonBanner from "../Banner/TestVersjonBanner"; -import { MetrikkKilde } from "@navikt/ia-metrikker-client"; -import {sendToggleEvent} from "../../amplitude/amplitude"; +import { sendToggleEvent } from "../../amplitude/amplitude"; export interface KalkulatorData { tapteDagsverk?: string; @@ -21,11 +19,6 @@ export const Fraværskalulator: FunctionComponent< prodUrl?: string; } > = (props) => { - useSendIaTjenesteMetrikkOnEvent( - MetrikkKilde.KALKULATOR, - "inputfeltEndretAvBruker" - ); - const [kalkulatorvariant, setKalkulatorvariant] = useState("prosent"); return ( @@ -53,9 +46,6 @@ export const Fraværskalulator: FunctionComponent< onChange={(valgtVariant) => { setKalkulatorvariant(valgtVariant); sendToggleEvent("kalkulatorvariant", valgtVariant); - document.dispatchEvent( - new CustomEvent("inputfeltEndretAvBruker") - ); }} value={kalkulatorvariant} size="medium" diff --git a/src/komponenter/Kalkulator/Kalkulatorrad/Kalkulatorrad.tsx b/src/komponenter/Kalkulator/Kalkulatorrad/Kalkulatorrad.tsx index ca4842ca..c651f2c1 100644 --- a/src/komponenter/Kalkulator/Kalkulatorrad/Kalkulatorrad.tsx +++ b/src/komponenter/Kalkulator/Kalkulatorrad/Kalkulatorrad.tsx @@ -23,7 +23,6 @@ export const Kalkulatorrad: FunctionComponent = (props) => { onChange={(event) => { props.onChange(event); sendInputfeltUtfyltEvent(props.label, props.name); - document.dispatchEvent(new CustomEvent("inputfeltEndretAvBruker")); }} type={"text"} inputMode={"numeric"} diff --git a/src/metrikker.test.tsx b/src/metrikker.test.tsx index 7743969c..e5144fea 100644 --- a/src/metrikker.test.tsx +++ b/src/metrikker.test.tsx @@ -1,41 +1,14 @@ -import { render, screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { Fraværskalulator } from "./komponenter/Kalkulator/Kalkulator"; +import { render } from "@testing-library/react"; import Home from "./pages"; -import { - sendIaMetrikkInteraksjonstjeneste, - sendDigitalIaTjenesteMetrikk, -} from "./integrasjoner/ia-tjenestemetrikker-api"; -import { RestStatus } from "./integrasjoner/rest-status"; - -jest.mock("next/router", () => ({ - useRouter() { - return { - route: "/", - pathname: "", - query: "", - asPath: "", - push: jest.fn(), - events: { - on: jest.fn(), - off: jest.fn(), - }, - beforePopState: jest.fn(() => null), - prefetch: jest.fn(() => null), - }; - }, -})); +import { sendDigitalIaTjenesteMetrikk } from "./integrasjoner/ia-tjenestemetrikker-api"; +import { afterEach } from "node:test"; +import Kalkulator from "./pages/kalkulator"; +import Sykefravarsstatistikk from "./pages/sykefravarsstatistikk"; + jest.mock("./integrasjoner/ia-tjenestemetrikker-api", () => ({ __esModule: true, ...jest.requireActual("./integrasjoner/ia-tjenestemetrikker-api"), sendDigitalIaTjenesteMetrikk: jest.fn(), - sendIaMetrikkInteraksjonstjeneste: jest.fn(), -})); - -jest.mock("./Aktiviteter/status-klient", () => ({ - __esModule: true, - ...jest.requireActual("./Aktiviteter/status-klient"), - oppdaterStatus: jest.fn(), })); jest.mock("./hooks/useOrgnr", () => ({ @@ -48,97 +21,89 @@ jest.mock("./Banner/Banner", () => { }; }); -jest.mock("./hooks/useAltinnOrganisasjoner", () => ({ - useAltinnOrganisasjoner: () => RestStatus.LasterInn, - useAltinnOrganisasjonerMedStatistikktilgang: () => RestStatus.LasterInn, -})); +describe("Tester at metrikker blir registrert etter ca fem sekunder", () => { + beforeEach(() => { + jest.useFakeTimers(); + jest.resetAllMocks(); + }); -jest.mock("./hooks/useAggregertStatistikk", () => ({ - useAggregertStatistikk: () => RestStatus.LasterInn, -})); + afterEach(() => { + jest.runOnlyPendingTimers(); + jest.useRealTimers(); + }); -jest.mock("./hooks/useAggregertStatistikk", () => ({ - useAggregertStatistikk: () => RestStatus.LasterInn, -})); -jest.mock("./hooks/useRestRessursSWR", () => ({ - useRestRessursSWR: () => RestStatus.LasterInn, -})); + it("Forsiden registrerer ia-metrikker", async () => { + renderHomePage(); + + expect(sendDigitalIaTjenesteMetrikk).not.toHaveBeenCalled(); -const user = userEvent.setup(); + jest.advanceTimersByTime(5200); -describe("Metrikktester av hele siden", () => { - describe("Kalkulator", () => { - it("Kaller sendIaTjenesteMetrikk ved endring av modus", async () => { - render( - , - ); + expect(sendDigitalIaTjenesteMetrikk).toHaveBeenCalled(); + }); - const dagsverkLenke = screen.getByText("Dagsverk"); - expect(sendDigitalIaTjenesteMetrikk).toHaveBeenCalledTimes(0); + it("Kalkulatoren registrerer ia-metrikker", async () => { + renderKalkulatorPage(); - await user.click(dagsverkLenke); + expect(sendDigitalIaTjenesteMetrikk).not.toHaveBeenCalled(); - expect(sendDigitalIaTjenesteMetrikk).toHaveBeenCalledTimes(1); - }); + jest.advanceTimersByTime(5200); + + expect(sendDigitalIaTjenesteMetrikk).toHaveBeenCalled(); }); - describe("Forside", () => { - it("Kaller sendIaMetrikkInteraksjonstjeneste ved endring av status på aktivitet", async () => { - renderPage(); - const aktivitetHeader = await waitFor(() => { - const lenke = screen.getByText( - "Bli gode på å tilrettelegge for ansatte", - ); - - expect(lenke).toBeInTheDocument(); - - return lenke; - }); - await user.click(aktivitetHeader); - expect(sendIaMetrikkInteraksjonstjeneste).toHaveBeenCalledTimes(0); - - const startKnapp = await waitFor(() => { - const lenke = screen.getAllByText("Start")[0]; - - expect(lenke).toBeInTheDocument(); - - return lenke; - }); - await user.click(startKnapp); - - expect(sendIaMetrikkInteraksjonstjeneste).toHaveBeenCalledTimes(1); - expect(sendIaMetrikkInteraksjonstjeneste).toHaveBeenNthCalledWith( - 1, - "FOREBYGGINGSPLAN", - "999999999", - ); - }); - - function renderPage() { - const kjørerMockApp = true; - render( - , - ); - } + + it("Sykefraværsstatistikken registrerer ia-metrikker", async () => { + renderSykefraværsstatistikkPage(); + + expect(sendDigitalIaTjenesteMetrikk).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(5200); + + expect(sendDigitalIaTjenesteMetrikk).toHaveBeenCalled(); }); }); + +function renderHomePage() { + const kjørerMockApp = true; + render( + , + ); +} + +function renderKalkulatorPage() { + render( + , + ); +} + +function renderSykefraværsstatistikkPage() { + render( + , + ); +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 7e79d57d..373a7de2 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -18,6 +18,7 @@ import Lasteside from "../Lasteside"; import { AltinnOrganisasjon } from "../integrasjoner/altinnorganisasjon-api"; import useBreadcrumbs from "../utils/useBreadcrumbs"; import {initAmplitude} from "../amplitude/amplitude"; +import {useSendIaMetrikkEtterFemSekunder} from "../hooks/useSendIaTjenesteMetrikkEtterFemSekunder"; interface HomeProps { page: PageProps; @@ -35,6 +36,7 @@ const Home = (props: HomeProps) => { } }); const organisasjonerBrukerHarTilgangTil = useAltinnOrganisasjoner(); + useSendIaMetrikkEtterFemSekunder(); const harIngenOrganisasjoner = organisasjonerBrukerHarTilgangTil.status === RestStatus.Suksess && diff --git a/src/pages/kalkulator.tsx b/src/pages/kalkulator.tsx index a5c5efb2..02b87deb 100644 --- a/src/pages/kalkulator.tsx +++ b/src/pages/kalkulator.tsx @@ -16,6 +16,7 @@ import Head from "next/head"; import { getGrafanaUrl, getProdUrl, isMockApp } from "../utils/envUtils"; import { doInitializeFaro } from "../utils/initializeFaro"; import useBreadcrumbs from "../utils/useBreadcrumbs"; +import {useSendIaMetrikkEtterFemSekunder} from "../hooks/useSendIaTjenesteMetrikkEtterFemSekunder"; export default function Kalkulator(props: { page: PageProps; @@ -28,6 +29,8 @@ export default function Kalkulator(props: { doInitializeFaro(props.grafanaAgentUrl); } }); + useSendIaMetrikkEtterFemSekunder(); + const organisasjonerRespons = useAltinnOrganisasjoner(); const brukerensOrganisasjoner = erFerdigNedlastet(organisasjonerRespons) ? organisasjonerRespons.data diff --git a/src/pages/sykefravarsstatistikk.tsx b/src/pages/sykefravarsstatistikk.tsx index 60e78092..2cb96c9d 100644 --- a/src/pages/sykefravarsstatistikk.tsx +++ b/src/pages/sykefravarsstatistikk.tsx @@ -6,6 +6,7 @@ import { import { getGrafanaUrl, getProdUrl, isMockApp } from "../utils/envUtils"; import { doInitializeFaro } from "../utils/initializeFaro"; import Sykefraværsstatistikkside from "../sykefravarsstatistikk/Sykefravarsstatistikkside"; +import {useSendIaMetrikkEtterFemSekunder} from "../hooks/useSendIaTjenesteMetrikkEtterFemSekunder"; export function AppContent({ grafanaAgentUrl, @@ -20,6 +21,7 @@ export function AppContent({ doInitializeFaro(grafanaAgentUrl, "sykefraværsstatistikk"); } }); + useSendIaMetrikkEtterFemSekunder() return ( - + Organisasjonsnummer: {orgnr} @@ -194,7 +193,6 @@ export const Forside = ({ /> diff --git a/src/sykefravarsstatistikk/Forside/LastNedKnapp/index.tsx b/src/sykefravarsstatistikk/Forside/LastNedKnapp/index.tsx index bd4d370c..2c69f1a6 100644 --- a/src/sykefravarsstatistikk/Forside/LastNedKnapp/index.tsx +++ b/src/sykefravarsstatistikk/Forside/LastNedKnapp/index.tsx @@ -3,23 +3,18 @@ import ReactToPrint from "react-to-print"; import React from "react"; import { DownloadIcon } from "@navikt/aksel-icons"; import styles from "./LastNedKnapp.module.css"; -import { sendDigitalIaTjenesteMetrikk } from "../../../integrasjoner/ia-tjenestemetrikker-api"; -import { MetrikkKilde } from "@navikt/ia-metrikker-client"; import {sendKnappEvent} from "../../../amplitude/amplitude"; export default function LastNedKnapp({ innholdRef, - orgnr, }: { innholdRef: React.RefObject; - orgnr: string; }) { const lastNedKnappRef = React.useRef(null); return ( { sendKnappEvent("skriv ut"); - sendDigitalIaTjenesteMetrikk(MetrikkKilde.SYKEFRAVÆRSSTATISTIKK, orgnr); }} onAfterPrint={() => { if (lastNedKnappRef.current) { diff --git a/src/sykefravarsstatistikk/Forside/Sammenligningspaneler/Sammenligningspaneler.tsx b/src/sykefravarsstatistikk/Forside/Sammenligningspaneler/Sammenligningspaneler.tsx index 33823a1b..7cae0630 100644 --- a/src/sykefravarsstatistikk/Forside/Sammenligningspaneler/Sammenligningspaneler.tsx +++ b/src/sykefravarsstatistikk/Forside/Sammenligningspaneler/Sammenligningspaneler.tsx @@ -1,4 +1,4 @@ -import React, { FunctionComponent, useEffect } from "react"; +import React, { FunctionComponent } from "react"; import { Sammenligningspanel } from "../SammenligningMedBransje/Sammenligningspanel"; import { SammenligningsType } from "../vurderingstekster"; import { Statistikkategori } from "../../domene/statistikkategori"; @@ -6,8 +6,7 @@ import { getBransjeEllerNæringKategori } from "./GetBransjeEllerNæringKategori import { Skeleton } from "@navikt/ds-react"; import { RestStatus } from "../../../integrasjoner/rest-status"; import { RestAggregertStatistikk } from "../../hooks/useSykefraværAppData"; -import { sendDigitalIaTjenesteMetrikk } from "../../../integrasjoner/ia-tjenestemetrikker-api"; -import { MetrikkKilde } from "@navikt/ia-metrikker-client"; +import { useSendIaMetrikkEtterFemSekunder } from "../../../hooks/useSendIaTjenesteMetrikkEtterFemSekunder"; interface Props { aggregertStatistikk: RestAggregertStatistikk; @@ -17,19 +16,8 @@ interface Props { export const Sammenligningspaneler: FunctionComponent = ({ aggregertStatistikk, - orgnr, - skalSendeMetrikkerAutomatisk = true, }) => { - useEffect(() => { - const timer = setTimeout(() => { - if (skalSendeMetrikkerAutomatisk) { - sendDigitalIaTjenesteMetrikk(MetrikkKilde.SYKEFRAVÆRSSTATISTIKK, orgnr); - } - }, 5000); - return () => clearTimeout(timer); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [orgnr]); - + useSendIaMetrikkEtterFemSekunder(); if ( aggregertStatistikk.restStatus === RestStatus.IngenTilgang || aggregertStatistikk.restStatus === RestStatus.IkkeInnlogget @@ -58,7 +46,7 @@ export const Sammenligningspaneler: FunctionComponent = ({ const [virksomhet, bransjeEllerNæring] = [ aggregertStatistikk.aggregertData?.get(Statistikkategori.VIRKSOMHET), aggregertStatistikk.aggregertData?.get( - harBransje ? Statistikkategori.BRANSJE : Statistikkategori.NÆRING + harBransje ? Statistikkategori.BRANSJE : Statistikkategori.NÆRING, ), ]; diff --git a/src/sykefravarsstatistikk/Historikk/GrafEllerTabell/Graf/LegendMedToggles/LegendMedToggles.tsx b/src/sykefravarsstatistikk/Historikk/GrafEllerTabell/Graf/LegendMedToggles/LegendMedToggles.tsx index d258f9c4..879be457 100644 --- a/src/sykefravarsstatistikk/Historikk/GrafEllerTabell/Graf/LegendMedToggles/LegendMedToggles.tsx +++ b/src/sykefravarsstatistikk/Historikk/GrafEllerTabell/Graf/LegendMedToggles/LegendMedToggles.tsx @@ -6,9 +6,6 @@ import { HistorikkLabels, } from "../../../../utils/sykefraværshistorikk-utils"; import { GrafSymbol } from "../GrafSymbol/GrafSymbol"; -import { useOrgnr } from "../../../../../hooks/useOrgnr"; -import { sendDigitalIaTjenesteMetrikk } from "../../../../../integrasjoner/ia-tjenestemetrikker-api"; -import { MetrikkKilde } from "@navikt/ia-metrikker-client"; import {sendCheckboxFjernet, sendCheckboxLagtTil} from "../../../../../amplitude/amplitude"; interface Props { @@ -32,14 +29,11 @@ export const LegendMedToggles: FunctionComponent = ({ land: "", }; - const orgnr = useOrgnr() || ""; - return ( { - sendDigitalIaTjenesteMetrikk(MetrikkKilde.SYKEFRAVÆRSSTATISTIKK, orgnr); if (value.length > linjerSomSkalVises.length) { // Brukeren har lagt til noe const verdiLagtTil = value.find( diff --git a/src/sykefravarsstatistikk/Historikk/Historikk.tsx b/src/sykefravarsstatistikk/Historikk/Historikk.tsx index 614bdccd..f1f4514a 100644 --- a/src/sykefravarsstatistikk/Historikk/Historikk.tsx +++ b/src/sykefravarsstatistikk/Historikk/Historikk.tsx @@ -10,8 +10,6 @@ import { import GrafEllerTabell from "./GrafEllerTabell/GrafEllerTabell"; import { RestRessurs, RestStatus } from "../../integrasjoner/rest-status"; import { KvartalsvisSykefraværshistorikk } from "../hooks/useSykefraværAppData"; -import { sendDigitalIaTjenesteMetrikk } from "../../integrasjoner/ia-tjenestemetrikker-api"; -import { MetrikkKilde } from "@navikt/ia-metrikker-client"; import {sendToogleEvent} from "../../amplitude/amplitude"; interface Props { @@ -20,7 +18,7 @@ interface Props { } const Historikk: FunctionComponent = (props) => { - const { restSykefraværsstatistikk, orgnr } = props; + const { restSykefraværsstatistikk} = props; const [grafEllerTabell, setGrafEllerTabell] = useState<"graf" | "tabell">( "graf" ); @@ -47,7 +45,6 @@ const Historikk: FunctionComponent = (props) => { const grafEllerTabell = value as "graf" | "tabell"; setGrafEllerTabell(grafEllerTabell); sendToogleEvent(grafEllerTabell); - sendDigitalIaTjenesteMetrikk(MetrikkKilde.SYKEFRAVÆRSSTATISTIKK, orgnr) }} > Graf diff --git a/src/sykefravarsstatistikk/Metrikker.test.tsx b/src/sykefravarsstatistikk/Metrikker.test.tsx deleted file mode 100644 index edef89fb..00000000 --- a/src/sykefravarsstatistikk/Metrikker.test.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import { fireEvent, render, screen, waitFor } from "@testing-library/react"; -import React from "react"; -import { mockAllDatahentingStatusOk } from "./mockdata"; -import { BrowserRouter } from "react-router-dom"; -import { Forside } from "./Forside/Forside"; -import * as metrikker from "../integrasjoner/ia-tjenestemetrikker-api"; -import { act } from "react-dom/test-utils"; -import { MockResizeObserver } from "./jest/MockResizeObserver"; -import { RestRessurs, RestStatus } from "../integrasjoner/rest-status"; -import { AltinnOrganisasjon } from "../integrasjoner/altinnorganisasjon-api"; -import { fleskOgFisk, heiOgHåBarnehage } from "./altinn-mock"; -import { transformSykefraværAppData } from "./hooks/useSykefraværAppData"; -import * as hooks from "../hooks/useOrgnr"; -import { mockContainerSize } from "../utils/test-utils"; - -const valgtBedriftMedSykefraværsstatistikkRettigheter = - heiOgHåBarnehage[0].OrganizationNumber; -jest.mock("../hooks/useOrgnr", () => ({ - __esModule: true, - ...jest.requireActual("../hooks/useOrgnr"), - useOrgnr: jest.fn(() => valgtBedriftMedSykefraværsstatistikkRettigheter), -})); - -jest.mock("../integrasjoner/ia-tjenestemetrikker-api", () => ({ - __esModule: true, - ...jest.requireActual("../integrasjoner/ia-tjenestemetrikker-api"), - sendDigitalIaTjenesteMetrikk: jest.fn(), -})); - -describe("Metrikkutsendelser", () => { - const MockObserver = new MockResizeObserver(); - let sykefravarsSpy: jest.SpyInstance; - let useOrgnrSpy: jest.SpyInstance; - - beforeEach(() => { - MockObserver.startmock(); - sykefravarsSpy = jest.spyOn( - metrikker, - "sendDigitalIaTjenesteMetrikk" - ); - useOrgnrSpy = jest.spyOn(hooks, "useOrgnr"); - useOrgnrSpy.mockReturnValue( - valgtBedriftMedSykefraværsstatistikkRettigheter - ); - mockContainerSize(); - }); - - afterEach(() => { - MockObserver.stopmock(); - jest.resetAllMocks(); - }); - - const altinnOrganisasjoner: RestRessurs = { - status: RestStatus.Suksess, - data: [...fleskOgFisk, ...heiOgHåBarnehage], - }; - - const altinnOrganisasjonerMedStatistikktilgang: RestRessurs< - AltinnOrganisasjon[] - > = { - 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(sykefravarsSpy).not.toHaveBeenCalled(); - - act(() => { - jest.advanceTimersByTime(7000); - }); - - expect(sykefravarsSpy).toHaveBeenCalled(); - expect(sykefravarsSpy).toHaveBeenNthCalledWith(1, "SYKEFRAVÆRSSTATISTIKK", "777777777") - - jest.useRealTimers(); - }); - - it("Sender ia-tjenestermetrikk ved toggle mellom graf og tabell", async () => { - renderForside(false); - - const toggle = screen.getByRole("radio", { name: "Tabell" }); - - expect(toggle).toBeDefined(); - expect(sykefravarsSpy).not.toHaveBeenCalled(); - - fireEvent.click(toggle); - await waitFor(() => { - expect(sykefravarsSpy).toHaveBeenCalled(); - }); - expect(sykefravarsSpy).toHaveBeenNthCalledWith(1, "SYKEFRAVÆRSSTATISTIKK", "777777777") - }); - - it("Sender it-metrikk når feltere i historikkgrafen toggles", async () => { - renderForside(false); - - const checkbox = screen.getByRole("checkbox", { - name: /bransje: produksjon av nærings- og nytelsesmidler/i, - }); - - expect(sykefravarsSpy).not.toHaveBeenCalled(); - - fireEvent.click(checkbox); - await waitFor(() => { - expect(sykefravarsSpy).toHaveBeenCalled(); - }); - }); - - it("Sender ia-tjenestermetrikk ved print-klikk", async () => { - renderForside(false); - - const knapp = screen.getByText("Last ned"); - - expect(knapp).toBeDefined(); - - expect(sykefravarsSpy).not.toHaveBeenCalled(); - - fireEvent.click(knapp); - await waitFor(() => { - expect(sykefravarsSpy).toHaveBeenCalled(); - }); - }); -}); diff --git a/src/utils/konstanter.ts b/src/utils/konstanter.ts index 516ef60d..8f9ed566 100644 --- a/src/utils/konstanter.ts +++ b/src/utils/konstanter.ts @@ -1,7 +1,5 @@ -export const BASE_PATH = "/forebygge-fravar"; -export const API_BASE_PATH = BASE_PATH + "/api"; +export const API_BASE_PATH = "/forebygge-fravar/api"; export const AUTHENTICATED_BASE_PATH = API_BASE_PATH + "/authenticated"; export const SYKEFRAVARSSTATISTIKK_BASE_PATH = AUTHENTICATED_BASE_PATH + "/sykefravarsstatistikk"; -export const METRIKKER_URL = AUTHENTICATED_BASE_PATH + "/metrikker"; export const SAMTALESTØTTE_URL = "https://www.nav.no/arbeidsgiver/samtalestotte-arbeidsgiver"