Skip to content

Commit

Permalink
IS-2620: add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ingring committed Sep 19, 2024
1 parent ea98235 commit 82e34b4
Show file tree
Hide file tree
Showing 8 changed files with 307 additions and 75 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ export function getIkkeAktuellManglendeMedvirkningTexts() {
};
}

export function getStansTexts(fom: Date | undefined) {
export function getStansTexts(varselSvarfrist: Date) {
return {
header: "NAV har stanset sykepengene dine",
fom: `NAV har stanset sykepengene dine fra og med ${
!!fom ? tilDatoMedManedNavn(fom) : ""
}.`,
fom: `NAV har stanset sykepengene dine fra og med ${tilDatoMedManedNavn(
varselSvarfrist
)}.`,
intro:
"For å få sykepenger har du et selvstendig ansvar for å bidra til raskest mulig å komme tilbake i arbeid, kalt medvirkningsplikten.",
hjemmel:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import {
getOppfyltManglendeMedvirkningTexts,
getStansTexts,
} from "@/data/manglendemedvirkning/manglendeMedvirkningDocumentTexts";
import { StansSkjemaValues } from "@/sider/manglendemedvirkning/stans/StansSkjema";

type ForhandsvarselDocumentValues = {
begrunnelse: string;
Expand All @@ -27,15 +26,23 @@ type IkkeAktuellDocumentValues = {
begrunnelse: string;
};

type StansDocumentValues = {
begrunnelse: string;
varselSvarfrist: Date | undefined;
};

interface Documents {
getForhandsvarselDocument(
values: ForhandsvarselDocumentValues
): DocumentComponentDto[];

getOppfyltDocument(values: OppfyltDocumentValues): DocumentComponentDto[];

getIkkeAktuellDocument(
values: IkkeAktuellDocumentValues
): DocumentComponentDto[];
getStansDocument(values: StansSkjemaValues): DocumentComponentDto[];

getStansDocument(values: StansDocumentValues): DocumentComponentDto[];
}

export function useManglendeMedvirkningVurderingDocument(): Documents {
Expand Down Expand Up @@ -110,8 +117,10 @@ export function useManglendeMedvirkningVurderingDocument(): Documents {
];
};

function getStansDocument(values: StansSkjemaValues): DocumentComponentDto[] {
const stansTexts = getStansTexts(values.fom);
function getStansDocument(
values: StansDocumentValues
): DocumentComponentDto[] {
const stansTexts = getStansTexts(values.varselSvarfrist);

Check failure on line 123 in src/hooks/manglendemedvirkning/useManglendeMedvirkningVurderingDocument.ts

View workflow job for this annotation

GitHub Actions / build-and-deploy / Bygg, test og publiser docker image

Argument of type 'Date | undefined' is not assignable to parameter of type 'Date'.
return [
createHeaderH1(stansTexts.header),
createParagraph(stansTexts.fom),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import { VurderingResponseDTO } from "@/data/manglendemedvirkning/manglendeMedvirkningTypes";
import dayjs from "dayjs";
import React from "react";
import ForhandsvarselBeforeDeadline from "@/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselBeforeDeadline";
import ForhandsvarselAfterDeadline from "@/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselAfterDeadline";
import { isExpiredForhandsvarsel } from "@/utils/datoUtils";

interface Props {
forhandsvarsel: VurderingResponseDTO;
}

export default function ForhandsvarselSendt({ forhandsvarsel }: Props) {
const isForhandsvarselExpired = dayjs(
forhandsvarsel?.varsel?.svarfrist
).isBefore(dayjs(new Date()), "date");
const isForhandsvarselExpired = isExpiredForhandsvarsel(
forhandsvarsel.varsel?.svarfrist
);

return isForhandsvarselExpired ? (
<ForhandsvarselAfterDeadline forhandsvarsel={forhandsvarsel} />
Expand Down
7 changes: 3 additions & 4 deletions src/sider/manglendemedvirkning/stans/StansSide.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@ import { Navigate } from "react-router-dom";
import StansSkjema from "./StansSkjema";

export default function StansSide() {
const { data } = useManglendeMedvirkningVurderingQuery();
const sisteVurdering = data[0];
const { sisteVurdering } = useManglendeMedvirkningVurderingQuery();
const isForhandsvarselExpired = isExpiredForhandsvarsel(
sisteVurdering?.varsel?.svarfrist
);
return isForhandsvarselExpired ? (
<StansSkjema />
return isForhandsvarselExpired && sisteVurdering?.varsel?.svarfrist ? (
<StansSkjema varselSvarfrist={sisteVurdering.varsel.svarfrist} />
) : (
<Navigate to={manglendeMedvirkningPath} />
);
Expand Down
145 changes: 87 additions & 58 deletions src/sider/manglendemedvirkning/stans/StansSkjema.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,29 @@ import {
Textarea,
} from "@navikt/ds-react";
import React from "react";
import { FormProvider, useForm } from "react-hook-form";
import { useForm } from "react-hook-form";
import { Link } from "react-router-dom";
import { useManglendeMedvirkningVurderingDocument } from "@/hooks/manglendemedvirkning/useManglendeMedvirkningVurderingDocument";
import {
NewVurderingRequestDTO,
NewFinalVurderingRequestDTO,
VurderingType,
} from "@/data/manglendemedvirkning/manglendeMedvirkningTypes";
import { useValgtPersonident } from "@/hooks/useValgtBruker";
import { useManglendeMedvirkningVurderingQuery } from "@/data/manglendemedvirkning/manglendeMedvirkningQueryHooks";
import { useNotification } from "@/context/notification/NotificationContext";

const texts = {
heading: "Skriv innstilling til NAY",
p1: "Skriv kort hvilke opplysninger som ligger til grunn for stans, samt din vurdering av hvorfor vilkåret ikke er oppfylt og vurdering av eventuelle nye opplysninger.",
begrunnelseLabel: "Innstilling om stans (obligatorisk)",
afterSendInfo: {
title: "Videre må du huske å:",
gosysoppgave: "Sende oppgave til NAY i Gosys.",
gosysoppgave: "Sende oppgave til NAY i Gosys:",
gosysoppgaveListe: {
tema: "Tema: Sykepenger",
gjelder: "Gjelder: Behandle vedtak",
oppgavetype: "Oppgavetype: Vurder konsekvens for ytelse",
prioritet: "Prioritet: Høy",
},
stoppknapp:
"Gi beskjed om stans til ny saksbehandlingsløsning via Stoppknappen under fanen Sykmeldinger i Modia.",
},
Expand All @@ -37,16 +43,21 @@ const texts = {
missingBegrunnelse: "Vennligst angi begrunnelse",
sendVarselButtonText: "Stans",
avbrytButton: "Avbryt",
success:
"Innstillingen om stans av sykepenger i forbindelse med medvirkningsplikten § 8-8 er lagret i historikken og blir journalført automatisk.",
};

const begrunnelseMaxLength = 5000;

export interface StansSkjemaValues {
begrunnelse: string;
fom: Date | undefined;
}

export default function StansSkjema() {
interface Props {
varselSvarfrist: Date;
}

export default function StansSkjema({ varselSvarfrist }: Props) {
const personident = useValgtPersonident();
const sendVurdering = useSendVurderingManglendeMedvirkning();
const formMethods = useForm<StansSkjemaValues>();
Expand All @@ -59,68 +70,86 @@ export default function StansSkjema() {

const { getStansDocument } = useManglendeMedvirkningVurderingDocument();

const { setNotification } = useNotification();

const submit = (values: StansSkjemaValues) => {
const stansVurdering: NewVurderingRequestDTO = {
const stansVurdering: NewFinalVurderingRequestDTO = {
personident: personident,
vurderingType: VurderingType.STANS,
begrunnelse: values.begrunnelse,
document: getStansDocument(values),
document: getStansDocument({
begrunnelse: values.begrunnelse,
varselSvarfrist: varselSvarfrist,
}),
};
sendVurdering.mutate(stansVurdering);
};

const { data } = useManglendeMedvirkningVurderingQuery();
const forhandsvarsel = data[0];
const frist = forhandsvarsel?.varsel?.svarfrist;
sendVurdering.mutate(stansVurdering, {
onSuccess: () => {
setNotification({
message: texts.success,
});
},
});
};

return (
<Box background="surface-default" padding="6">
<FormProvider {...formMethods}>
<form onSubmit={handleSubmit(submit)} className="[&>*]:mb-4">
<Heading level="2" size="medium">
{texts.heading}
</Heading>
<BodyShort>{texts.p1}</BodyShort>
<Textarea
{...register("begrunnelse", {
maxLength: begrunnelseMaxLength,
required: texts.missingBegrunnelse,
})}
value={watch("begrunnelse")}
label={texts.begrunnelseLabel}
error={errors.begrunnelse?.message}
size="small"
minRows={6}
maxLength={begrunnelseMaxLength}
<form onSubmit={handleSubmit(submit)} className="[&>*]:mb-4">
<Heading level="2" size="medium">
{texts.heading}
</Heading>
<BodyShort>{texts.p1}</BodyShort>
<Textarea
{...register("begrunnelse", {
maxLength: begrunnelseMaxLength,
required: texts.missingBegrunnelse,
})}
value={watch("begrunnelse")}
label={texts.begrunnelseLabel}
error={errors.begrunnelse?.message}
size="small"
minRows={6}
maxLength={begrunnelseMaxLength}
/>
<List as="ul" title={texts.afterSendInfo.title}>
<List.Item>
{texts.afterSendInfo.gosysoppgave}
<List as="ul" className="ml-1">
<List.Item>
{texts.afterSendInfo.gosysoppgaveListe.tema}
</List.Item>
<List.Item>
{texts.afterSendInfo.gosysoppgaveListe.gjelder}
</List.Item>
<List.Item>
{texts.afterSendInfo.gosysoppgaveListe.oppgavetype}
</List.Item>
<List.Item>
{texts.afterSendInfo.gosysoppgaveListe.prioritet}
</List.Item>
</List>
</List.Item>
<List.Item>{texts.afterSendInfo.stoppknapp}</List.Item>
</List>
<BodyShort>{texts.buttonDescription}</BodyShort>
<HStack gap="4">
<Button loading={sendVurdering.isPending} type="submit">
{texts.sendVarselButtonText}
</Button>
<Button as={Link} to={manglendeMedvirkningPath} variant="secondary">
{texts.avbrytButton}
</Button>
<Forhandsvisning
contentLabel={texts.forhandsvisningLabel}
getDocumentComponents={() =>
getStansDocument({
begrunnelse: watch("begrunnelse"),
varselSvarfrist: varselSvarfrist,
})
}
/>
<List as="ul" title={texts.afterSendInfo.title}>
<List.Item className="ml-8">
{texts.afterSendInfo.gosysoppgave}
</List.Item>
<List.Item className="ml-8">
{texts.afterSendInfo.stoppknapp}
</List.Item>
</List>
<BodyShort>{texts.buttonDescription}</BodyShort>
<HStack gap="4">
<Button loading={sendVurdering.isPending} type="submit">
{texts.sendVarselButtonText}
</Button>
<Button as={Link} to={manglendeMedvirkningPath} variant="secondary">
{texts.avbrytButton}
</Button>
<Forhandsvisning
contentLabel={texts.forhandsvisningLabel}
getDocumentComponents={() =>
getStansDocument({
begrunnelse: watch("begrunnelse"),
fom: frist,
})
}
/>
</HStack>
</form>
</FormProvider>
</HStack>
</form>
</Box>
);
}
Loading

0 comments on commit 82e34b4

Please sign in to comment.