From dcef9427ca6c6e5fad2328335f9b025422d7e1d9 Mon Sep 17 00:00:00 2001 From: eirikdahlen Date: Fri, 24 Jan 2025 16:48:42 +0100 Subject: [PATCH] IS-2998: Add document for oppfolgingsplan foresporsel --- .../useOppfolgingsplanForesporselDocument.ts | 61 +++++++++++++++++++ .../oppfolgingsplaner/BeOmOppfolgingsplan.tsx | 8 ++- .../OppfolgingsplanerOversiktTest.tsx | 32 +++++++++- .../oppfolgingsplanTestdata.ts | 59 ++++++++++++++++++ 4 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 src/hooks/oppfolgingsplan/useOppfolgingsplanForesporselDocument.ts create mode 100644 test/sider/oppfolgingsplaner/oppfolgingsplanTestdata.ts diff --git a/src/hooks/oppfolgingsplan/useOppfolgingsplanForesporselDocument.ts b/src/hooks/oppfolgingsplan/useOppfolgingsplanForesporselDocument.ts new file mode 100644 index 000000000..754f6ff53 --- /dev/null +++ b/src/hooks/oppfolgingsplan/useOppfolgingsplanForesporselDocument.ts @@ -0,0 +1,61 @@ +import { useDocumentComponents } from "@/hooks/useDocumentComponents"; +import { DocumentComponentDto } from "@/data/documentcomponent/documentComponentTypes"; +import { + createHeaderH1, + createParagraph, +} from "@/utils/documentComponentUtils"; +import { tilLesbarDatoMedArstall } from "@/utils/datoUtils"; + +export type ForesporselDocumentValues = { + narmesteLeder: string; + virksomhetNavn: string; +}; + +export function useOppfolgingsplanForesporselDocument() { + const { getIntroGjelder } = useDocumentComponents(); + + function getForesporselDocument( + values: ForesporselDocumentValues + ): DocumentComponentDto[] { + return [ + createHeaderH1(oppfolgingsplanForesporselTexts.title), + createParagraph(oppfolgingsplanForesporselTexts.dato), + getIntroGjelder(), + createParagraph( + oppfolgingsplanForesporselTexts.mottaker( + values.narmesteLeder, + values.virksomhetNavn + ) + ), + createParagraph(oppfolgingsplanForesporselTexts.body.hei), + createParagraph( + oppfolgingsplanForesporselTexts.body.info1, + oppfolgingsplanForesporselTexts.body.info2 + ), + createParagraph(oppfolgingsplanForesporselTexts.body.kontakt), + createParagraph(oppfolgingsplanForesporselTexts.hilsen), + createParagraph(oppfolgingsplanForesporselTexts.ikkeSvar), + ]; + } + + return { + getForesporselDocument, + }; +} + +const oppfolgingsplanForesporselTexts = { + title: "Nav ber om oppfølgingsplan fra arbeidsgiver", + dato: `Dato sendt: ${tilLesbarDatoMedArstall(new Date())}`, + mottaker: (narmesteLeder: string, virksomhetNavn: string) => + `Mottaker: ${narmesteLeder}, ${virksomhetNavn}`, + body: { + hei: "Hei,", + info1: + "Nav ber om at du sender inn oppfølgingsplan for en av dine ansatte som er sykmeldt.", + info2: + "Logg inn på 'Min side - arbeidsgiver'. I 'bjella' ser du hvem det gjelder.", + kontakt: "Har du spørsmål, kan du kontakte oss på 55 55 33 36.", + }, + hilsen: "Vennlig hilsen Nav.", + ikkeSvar: "Du kan ikke svare på denne meldingen.", +}; diff --git a/src/sider/oppfolgingsplan/oppfolgingsplaner/BeOmOppfolgingsplan.tsx b/src/sider/oppfolgingsplan/oppfolgingsplaner/BeOmOppfolgingsplan.tsx index ead524853..0d150a1ce 100644 --- a/src/sider/oppfolgingsplan/oppfolgingsplaner/BeOmOppfolgingsplan.tsx +++ b/src/sider/oppfolgingsplan/oppfolgingsplaner/BeOmOppfolgingsplan.tsx @@ -18,6 +18,7 @@ import { useGetOppfolgingsplanForesporselQuery, usePostOppfolgingsplanForesporsel, } from "@/data/oppfolgingsplan/oppfolgingsplanForesporselHooks"; +import { useOppfolgingsplanForesporselDocument } from "@/hooks/oppfolgingsplan/useOppfolgingsplanForesporselDocument"; const texts = { header: "Be om oppfølgingsplan fra arbeidsgiver", @@ -51,8 +52,8 @@ export default function BeOmOppfolgingsplan({ }: Props) { const personident = useValgtPersonident(); const getOppfolgingsplanForesporsel = useGetOppfolgingsplanForesporselQuery(); - const postOppfolgingsplanForesporsel = usePostOppfolgingsplanForesporsel(); + const { getForesporselDocument } = useOppfolgingsplanForesporselDocument(); function onClick() { const foresporsel: NewOppfolgingsplanForesporselDTO = { @@ -60,7 +61,10 @@ export default function BeOmOppfolgingsplan({ virksomhetsnummer: aktivNarmesteLeder.virksomhetsnummer, narmestelederPersonident: aktivNarmesteLeder.narmesteLederPersonIdentNumber, - document: [], + document: getForesporselDocument({ + narmesteLeder: aktivNarmesteLeder.narmesteLederNavn, + virksomhetNavn: aktivNarmesteLeder.virksomhetsnavn, + }), }; postOppfolgingsplanForesporsel.mutate(foresporsel, { onSuccess: () => logOppfolgingsplanForesporselEvent(), diff --git a/test/sider/oppfolgingsplaner/OppfolgingsplanerOversiktTest.tsx b/test/sider/oppfolgingsplaner/OppfolgingsplanerOversiktTest.tsx index d3a2e4567..4ab4468ef 100644 --- a/test/sider/oppfolgingsplaner/OppfolgingsplanerOversiktTest.tsx +++ b/test/sider/oppfolgingsplaner/OppfolgingsplanerOversiktTest.tsx @@ -3,7 +3,7 @@ import { queryClientWithAktivBruker, queryClientWithMockData, } from "../../testQueryClient"; -import { render, screen, within } from "@testing-library/react"; +import { render, screen, waitFor, within } from "@testing-library/react"; import { ValgtEnhetContext } from "@/context/ValgtEnhetContext"; import { navEnhet } from "../../dialogmote/testData"; import React from "react"; @@ -25,8 +25,10 @@ import { restdatoTilLesbarDato } from "@/utils/datoUtils"; import { generateUUID } from "@/utils/utils"; import { oppfolgingstilfellePersonQueryKeys } from "@/data/oppfolgingstilfelle/person/oppfolgingstilfellePersonQueryHooks"; import { generateOppfolgingstilfelle } from "../../testDataUtils"; -import { daysFromToday } from "../../testUtils"; +import { clickButton, daysFromToday } from "../../testUtils"; import { ledereQueryKeys } from "@/data/leder/ledereQueryHooks"; +import { NewOppfolgingsplanForesporselDTO } from "@/data/oppfolgingsplan/oppfolgingsplanForesporselHooks"; +import { getExpectedForesporselDocument } from "./oppfolgingsplanTestdata"; let queryClient: QueryClient; @@ -148,6 +150,32 @@ describe("Oppfølgingsplaner visning", () => { expect(screen.getByRole("button", { name: "Be om oppfølgingsplan" })).to .exist; }); + it("Sender forespørsel om oppfølgingsplan med document", async () => { + renderOppfolgingsplanerOversikt([]); + + await clickButton("Be om oppfølgingsplan"); + + const expectedForesporselRequest: NewOppfolgingsplanForesporselDTO = { + arbeidstakerPersonident: ARBEIDSTAKER_DEFAULT.personIdent, + virksomhetsnummer: VIRKSOMHET_PONTYPANDY.virksomhetsnummer, + narmestelederPersonident: + LEDERE_DEFAULT[0].narmesteLederPersonIdentNumber, + document: getExpectedForesporselDocument({ + narmesteLeder: LEDERE_DEFAULT[0].narmesteLederNavn, + virksomhetNavn: VIRKSOMHET_PONTYPANDY.virksomhetsnavn, + }), + }; + + await waitFor(() => { + const foresporselMutation = queryClient + .getMutationCache() + .getAll() + .pop(); + expect(foresporselMutation?.state.variables).to.deep.equal( + expectedForesporselRequest + ); + }); + }); }); }); diff --git a/test/sider/oppfolgingsplaner/oppfolgingsplanTestdata.ts b/test/sider/oppfolgingsplaner/oppfolgingsplanTestdata.ts new file mode 100644 index 000000000..95f661739 --- /dev/null +++ b/test/sider/oppfolgingsplaner/oppfolgingsplanTestdata.ts @@ -0,0 +1,59 @@ +import { + DocumentComponentDto, + DocumentComponentType, +} from "@/data/documentcomponent/documentComponentTypes"; +import { tilLesbarDatoMedArstall } from "@/utils/datoUtils"; +import { ForesporselDocumentValues } from "@/hooks/oppfolgingsplan/useOppfolgingsplanForesporselDocument"; +import { + ARBEIDSTAKER_DEFAULT, + ARBEIDSTAKER_DEFAULT_FULL_NAME, +} from "@/mocks/common/mockConstants"; + +export const getExpectedForesporselDocument = ({ + narmesteLeder, + virksomhetNavn, +}: ForesporselDocumentValues): DocumentComponentDto[] => { + return [ + { + texts: ["Nav ber om oppfølgingsplan fra arbeidsgiver"], + type: DocumentComponentType.HEADER_H1, + }, + { + texts: [`Dato sendt: ${tilLesbarDatoMedArstall(new Date())}`], + type: DocumentComponentType.PARAGRAPH, + }, + { + texts: [ + `Gjelder ${ARBEIDSTAKER_DEFAULT_FULL_NAME}, f.nr. ${ARBEIDSTAKER_DEFAULT.personIdent}`, + ], + type: DocumentComponentType.PARAGRAPH, + }, + { + texts: [`Mottaker: ${narmesteLeder}, ${virksomhetNavn}`], + type: DocumentComponentType.PARAGRAPH, + }, + { + texts: ["Hei,"], + type: DocumentComponentType.PARAGRAPH, + }, + { + texts: [ + "Nav ber om at du sender inn oppfølgingsplan for en av dine ansatte som er sykmeldt.", + "Logg inn på 'Min side - arbeidsgiver'. I 'bjella' ser du hvem det gjelder.", + ], + type: DocumentComponentType.PARAGRAPH, + }, + { + texts: ["Har du spørsmål, kan du kontakte oss på 55 55 33 36."], + type: DocumentComponentType.PARAGRAPH, + }, + { + texts: ["Vennlig hilsen Nav."], + type: DocumentComponentType.PARAGRAPH, + }, + { + texts: ["Du kan ikke svare på denne meldingen."], + type: DocumentComponentType.PARAGRAPH, + }, + ]; +};