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
2 parents 657b84a + 2538f76 commit f0e353d
Show file tree
Hide file tree
Showing 10 changed files with 369 additions and 1 deletion.
16 changes: 16 additions & 0 deletions src/data/manglendemedvirkning/manglendeMedvirkningDocumentTexts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,22 @@ export function getOppfyltManglendeMedvirkningTexts(
};
}

export function getUnntakManglendeMedvirkningTexts(
forhandsvarselSendtDato: Date
) {
return {
title: "Vurdering av unntak fra medvirkelsesplikten",
info: {
p1: `I forhåndsvarsel av ${tilDatoMedManedNavn(
forhandsvarselSendtDato
)} ble du informert om at NAV vurderte å stanse utbetaling av sykepengene dine. Vi har nå vurdert at du har rimelig grunn til ikke å medvirke i egen sak.`,
p2: "Du har rett til videre utbetaling av sykepenger.",
},
loven:
"Vi har brukt folketrygdloven § 8-8 første og tredje ledd når vi har behandlet saken din.",
};
}

export function getIkkeAktuellManglendeMedvirkningTexts() {
return {
title: "Vurdering av § 8-8 manglende medvirkning",
Expand Down
2 changes: 2 additions & 0 deletions src/data/manglendemedvirkning/manglendeMedvirkningTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export interface NewFinalVurderingRequestDTO extends VurderingRequestDTO {
vurderingType:
| VurderingType.OPPFYLT
| VurderingType.STANS
| VurderingType.UNNTAK
| VurderingType.IKKE_AKTUELL;
}

Expand Down Expand Up @@ -44,5 +45,6 @@ export enum VurderingType {
FORHANDSVARSEL = "FORHANDSVARSEL",
OPPFYLT = "OPPFYLT",
STANS = "STANS",
UNNTAK = "UNNTAK",
IKKE_AKTUELL = "IKKE_AKTUELL",
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
import { useDocumentComponents } from "@/hooks/useDocumentComponents";
import {
getForhandsvarselManglendeMedvirkningTexts,
getUnntakManglendeMedvirkningTexts,
getIkkeAktuellManglendeMedvirkningTexts,
getOppfyltManglendeMedvirkningTexts,
getStansTexts,
Expand All @@ -22,6 +23,11 @@ type OppfyltDocumentValues = {
forhandsvarselSendtDato: Date;
};

type UnntakDocumentValues = {
begrunnelse: string;
forhandsvarselSendtDato: Date;
};

type IkkeAktuellDocumentValues = {
begrunnelse: string;
};
Expand All @@ -36,6 +42,8 @@ interface Documents {
values: ForhandsvarselDocumentValues
): DocumentComponentDto[];

getUnntakDocument(values: UnntakDocumentValues): DocumentComponentDto[];

getOppfyltDocument(values: OppfyltDocumentValues): DocumentComponentDto[];

getIkkeAktuellDocument(
Expand Down Expand Up @@ -104,6 +112,23 @@ export function useManglendeMedvirkningVurderingDocument(): Documents {
];
}

function getUnntakDocument(
values: UnntakDocumentValues
): DocumentComponentDto[] {
const unntakTexts = getUnntakManglendeMedvirkningTexts(
values.forhandsvarselSendtDato
);
return [
createHeaderH1(unntakTexts.title),
getIntroGjelder(),
createParagraph(unntakTexts.info.p1),
createParagraph(unntakTexts.info.p2),
createParagraph(values.begrunnelse),
createParagraph(unntakTexts.loven),
getVurdertAv(),
];
}

const getIkkeAktuellDocument = ({
begrunnelse,
}: IkkeAktuellDocumentValues) => {
Expand Down Expand Up @@ -133,6 +158,7 @@ export function useManglendeMedvirkningVurderingDocument(): Documents {

return {
getForhandsvarselDocument,
getUnntakDocument,
getOppfyltDocument,
getIkkeAktuellDocument,
getStansDocument,
Expand Down
6 changes: 6 additions & 0 deletions src/routers/AppRouter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import ManglendeMedvirkningSide, {
ManglendeMedvirkningIkkeAktuellSide,
ManglendeMedvirkningOppfyltSide,
ManglendeMedvirkningStansSide,
ManglendeMedvirkningUnntakSide,
} from "@/sider/manglendemedvirkning/ManglendeMedvirkningSide";
import ManglendeMedvirkning from "@/sider/manglendemedvirkning/ManglendeMedvirkning";

Expand All @@ -61,6 +62,7 @@ export const senOppfolgingPath = `${appRoutePath}/senoppfolging`;
export const manglendeMedvirkningPath = `${appRoutePath}/manglendemedvirkning`;
export const manglendeMedvirkningOppfyltPath = `${appRoutePath}/manglendemedvirkning/oppfylt`;
export const manglendeMedvirkningStansPath = `${appRoutePath}/manglendemedvirkning/stans`;
export const manglendeMedvirkningUnntakPath = `${appRoutePath}/manglendemedvirkning/unntak`;
export const manglendeMedvirkningIkkeAktuellPath = `${appRoutePath}/manglendemedvirkning/ikkeaktuell`;

const AktivBrukerRouter = (): ReactElement => {
Expand Down Expand Up @@ -183,6 +185,10 @@ const AktivBrukerRouter = (): ReactElement => {
path={manglendeMedvirkningStansPath}
element={<ManglendeMedvirkningStansSide />}
/>
<Route
path={manglendeMedvirkningUnntakPath}
element={<ManglendeMedvirkningUnntakSide />}
/>
<Route
path={manglendeMedvirkningIkkeAktuellPath}
element={<ManglendeMedvirkningIkkeAktuellSide />}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import {
manglendeMedvirkningIkkeAktuellPath,
manglendeMedvirkningOppfyltPath,
manglendeMedvirkningStansPath,
manglendeMedvirkningUnntakPath,
} from "@/routers/AppRouter";
import React from "react";

const texts = {
stans: "Innstilling om stans",
oppfylt: "Oppfylt",
unntak: "Unntak",
ikkeAktuell: "Ikke aktuell",
};

Expand All @@ -33,6 +35,9 @@ export const ManglendeMedvirkningButtons = ({
<Button as={Link} to={manglendeMedvirkningOppfyltPath} variant="secondary">
{texts.oppfylt}
</Button>
<Button as={Link} to={manglendeMedvirkningUnntakPath} variant="secondary">
{texts.unntak}
</Button>
<Button
as={Link}
to={manglendeMedvirkningIkkeAktuellPath}
Expand Down
9 changes: 9 additions & 0 deletions src/sider/manglendemedvirkning/ManglendeMedvirkningSide.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import Sidetopp from "@/components/Sidetopp";
import Side from "@/sider/Side";
import SideLaster from "@/components/SideLaster";
import { useManglendeMedvirkningVurderingQuery } from "@/data/manglendemedvirkning/manglendeMedvirkningQueryHooks";
import UnntakSide from "@/sider/manglendemedvirkning/unntak/UnntakSide";
import OppfyltSide from "@/sider/manglendemedvirkning/oppfylt/OppfyltSide";
import IkkeAktuellSide from "@/sider/manglendemedvirkning/ikkeaktuell/IkkeAktuellSide";
import StansSide from "./stans/StansSide";
Expand All @@ -28,6 +29,14 @@ export function ManglendeMedvirkningStansSide() {
);
}

export function ManglendeMedvirkningUnntakSide() {
return (
<ManglendeMedvirkningSide>
<UnntakSide />
</ManglendeMedvirkningSide>
);
}

export function ManglendeMedvirkningIkkeAktuellSide() {
return (
<ManglendeMedvirkningSide>
Expand Down
19 changes: 19 additions & 0 deletions src/sider/manglendemedvirkning/unntak/UnntakSide.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import React from "react";
import { useManglendeMedvirkningVurderingQuery } from "@/data/manglendemedvirkning/manglendeMedvirkningQueryHooks";
import { VurderingType } from "@/data/manglendemedvirkning/manglendeMedvirkningTypes";
import { Navigate } from "react-router-dom";
import { manglendeMedvirkningPath } from "@/routers/AppRouter";
import UnntakSkjema from "@/sider/manglendemedvirkning/unntak/UnntakSkjema";

export default function UnntakSide() {
const { sisteVurdering } = useManglendeMedvirkningVurderingQuery();
const isForhandsvarsel =
sisteVurdering?.vurderingType === VurderingType.FORHANDSVARSEL;
const forhandsvarselSendtDato = sisteVurdering?.varsel?.createdAt;

return isForhandsvarsel && forhandsvarselSendtDato ? (
<UnntakSkjema forhandsvarselSendtDato={forhandsvarselSendtDato} />
) : (
<Navigate to={manglendeMedvirkningPath} />
);
}
122 changes: 122 additions & 0 deletions src/sider/manglendemedvirkning/unntak/UnntakSkjema.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
import React from "react";
import {
BodyShort,
Box,
Button,
Heading,
HStack,
Textarea,
} from "@navikt/ds-react";
import { SkjemaInnsendingFeil } from "@/components/SkjemaInnsendingFeil";
import { Forhandsvisning } from "@/components/Forhandsvisning";
import { Link } from "react-router-dom";
import { manglendeMedvirkningPath } from "@/routers/AppRouter";
import {
NewFinalVurderingRequestDTO,
VurderingType,
} from "@/data/manglendemedvirkning/manglendeMedvirkningTypes";
import { useValgtPersonident } from "@/hooks/useValgtBruker";
import { useSendVurderingManglendeMedvirkning } from "@/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning";
import { useForm } from "react-hook-form";
import { useManglendeMedvirkningVurderingDocument } from "@/hooks/manglendemedvirkning/useManglendeMedvirkningVurderingDocument";
import { useNotification } from "@/context/notification/NotificationContext";

const texts = {
title: "Unntak fra medvirkelsesplikten",
info: "Skriv en kort begrunnelse for hvorfor bruker kan få unntak fra vilkårene i § 8-8, og hvilke opplysninger som ligger til grunn for vurderingen.",
begrunnelseLabel: "Begrunnelse (obligatorisk)",
begrunnelseDescription:
"Åpne forhåndsvisning for å se vurderingen. Når du trykker Lagre journalføres vurderingen automatisk.",
forhandsvisningLabel: "Forhåndsvis vurderingen",
missingBegrunnelse: "Vennligst angi begrunnelse",
sendVarselButtonText: "Sett unntak",
avbrytButton: "Avbryt",
success:
"Vurderingen om unntak fra medvirkningsplikten § 8-8 er lagret i historikken og blir journalført automatisk.",
};

interface UnntakSkjemaValues {
begrunnelse: string;
}

const begrunnelseMaxLength = 5000;

interface Props {
forhandsvarselSendtDato: Date;
}

export default function UnntakSkjema({ forhandsvarselSendtDato }: Props) {
const personident = useValgtPersonident();
const { setNotification } = useNotification();
const sendVurdering = useSendVurderingManglendeMedvirkning();
const {
register,
watch,
formState: { errors },
handleSubmit,
} = useForm<UnntakSkjemaValues>({ defaultValues: { begrunnelse: "" } });
const { getUnntakDocument } = useManglendeMedvirkningVurderingDocument();

const submit = (values: UnntakSkjemaValues) => {
const requestBody: NewFinalVurderingRequestDTO = {
personident: personident,
vurderingType: VurderingType.UNNTAK,
begrunnelse: values.begrunnelse,
document: getUnntakDocument({
begrunnelse: values.begrunnelse,
forhandsvarselSendtDato: forhandsvarselSendtDato,
}),
};

sendVurdering.mutate(requestBody, {
onSuccess: () => {
setNotification({
message: texts.success,
});
},
});
};
return (
<Box background="surface-default" padding="6" className="mb-2">
<form onSubmit={handleSubmit(submit)} className="[&>*]:mb-4">
<Heading level="2" size="medium">
{texts.title}
</Heading>
<BodyShort>{texts.info}</BodyShort>
<Textarea
{...register("begrunnelse", {
maxLength: begrunnelseMaxLength,
required: texts.missingBegrunnelse,
})}
value={watch("begrunnelse")}
label={texts.begrunnelseLabel}
description={texts.begrunnelseDescription}
error={errors.begrunnelse?.message}
size="small"
minRows={6}
maxLength={begrunnelseMaxLength}
/>
{sendVurdering.isError && (
<SkjemaInnsendingFeil error={sendVurdering.error} />
)}
<HStack gap="4">
<Button loading={sendVurdering.isPending} type="submit">
{texts.sendVarselButtonText}
</Button>
<Forhandsvisning
contentLabel={texts.forhandsvisningLabel}
getDocumentComponents={() =>
getUnntakDocument({
begrunnelse: watch("begrunnelse"),
forhandsvarselSendtDato: forhandsvarselSendtDato,
})
}
/>
<Button as={Link} to={manglendeMedvirkningPath} variant="secondary">
{texts.avbrytButton}
</Button>
</HStack>
</form>
</Box>
);
}
Loading

0 comments on commit f0e353d

Please sign in to comment.