-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2c5792f
commit 5411d7b
Showing
7 changed files
with
302 additions
and
93 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,20 @@ | ||
import React from "react"; | ||
import ForhandsvarselSkjema from "@/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselSkjema"; | ||
import React, { useState } from "react"; | ||
import { useManglendeMedvirkningVurderingQuery } from "@/data/manglendemedvirkning/manglendeMedvirkningQueryHooks"; | ||
import { VurderingType } from "@/data/manglendemedvirkning/manglendeMedvirkningTypes"; | ||
import { Alert, Box } from "@navikt/ds-react"; | ||
import ForhandsvarselSendt from "@/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselSendt"; | ||
import { useNotification } from "@/context/notification/NotificationContext"; | ||
import { ManglendeMedvirkningStartetVurdering } from "@/sider/manglendemedvirkning/ManglendeMedvirkningStartetVurdering"; | ||
import { ManglendeMedvirkningNyVurdering } from "@/sider/manglendemedvirkning/ManglendeMedvirkningNyVurdering"; | ||
|
||
export default function ManglendeMedvirkning() { | ||
const { notification } = useNotification(); | ||
const { sisteVurdering } = useManglendeMedvirkningVurderingQuery(); | ||
const isForhandsvarsel = | ||
sisteVurdering?.vurderingType === VurderingType.FORHANDSVARSEL; | ||
const [showStartetVurdering, setShowStartetVurdering] = useState(false); | ||
|
||
return ( | ||
<> | ||
{notification && ( | ||
<Alert variant="success" className="mb-2"> | ||
{notification.message} | ||
</Alert> | ||
)} | ||
<Box> | ||
{isForhandsvarsel ? ( | ||
<ForhandsvarselSendt forhandsvarsel={sisteVurdering} /> | ||
) : ( | ||
<ForhandsvarselSkjema /> | ||
)} | ||
</Box> | ||
</> | ||
return showStartetVurdering || isForhandsvarsel ? ( | ||
<ManglendeMedvirkningStartetVurdering sisteVurdering={sisteVurdering} /> | ||
) : ( | ||
<ManglendeMedvirkningNyVurdering | ||
handleClick={() => setShowStartetVurdering(true)} | ||
/> | ||
); | ||
} |
66 changes: 66 additions & 0 deletions
66
src/sider/manglendemedvirkning/ManglendeMedvirkningNyVurdering.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
import React from "react"; | ||
import { ReactElement } from "react"; | ||
import { useNotification } from "@/context/notification/NotificationContext"; | ||
import { Alert, BodyShort, Box, Button, Heading } from "@navikt/ds-react"; | ||
import { tilLesbarDatoMedArUtenManedNavn } from "@/utils/datoUtils"; | ||
import { | ||
typeTexts, | ||
VurderingResponseDTO, | ||
VurderingType, | ||
} from "@/data/manglendemedvirkning/manglendeMedvirkningTypes"; | ||
import { useManglendeMedvirkningVurderingQuery } from "@/data/manglendemedvirkning/manglendeMedvirkningQueryHooks"; | ||
|
||
const texts = { | ||
title: "Arbeidsuførhet", | ||
siste: "Siste vurdering", | ||
button: "Start ny vurdering", | ||
}; | ||
|
||
const lastVurderingText = (vurderinger: VurderingResponseDTO[]) => { | ||
if (vurderinger.length === 0) { | ||
return "Ingen vurderinger har blitt gjort, trykk på 'Start ny vurdering' for å sende forhåndsvarsel."; | ||
} | ||
|
||
const lastVurdering = vurderinger[0]; | ||
const lastForhandsvarsel = vurderinger.find( | ||
({ vurderingType }) => vurderingType === VurderingType.FORHANDSVARSEL | ||
); | ||
const lastVurderingType = | ||
typeTexts[lastVurdering.vurderingType].toLowerCase(); | ||
|
||
return `Forrige forhåndsvarsel på § 8-8 ble sendt ut ${tilLesbarDatoMedArUtenManedNavn( | ||
lastForhandsvarsel?.createdAt | ||
)} og ${lastVurderingType} ${tilLesbarDatoMedArUtenManedNavn( | ||
lastVurdering?.createdAt | ||
)}.`; | ||
}; | ||
|
||
interface Props { | ||
handleClick: () => void; | ||
} | ||
|
||
export const ManglendeMedvirkningNyVurdering = ({ | ||
handleClick, | ||
}: Props): ReactElement => { | ||
const { data } = useManglendeMedvirkningVurderingQuery(); | ||
const { notification } = useNotification(); | ||
|
||
return ( | ||
<> | ||
{notification && ( | ||
<Alert variant="success" className="mb-2"> | ||
{notification.message} | ||
</Alert> | ||
)} | ||
<Box background="surface-default" padding="6"> | ||
<Heading className="mb-4" level="2" size="medium"> | ||
{texts.siste} | ||
</Heading> | ||
<BodyShort className="mb-4">{`${lastVurderingText(data)}`}</BodyShort> | ||
<Button onClick={handleClick} variant="secondary"> | ||
{texts.button} | ||
</Button> | ||
</Box> | ||
</> | ||
); | ||
}; |
23 changes: 23 additions & 0 deletions
23
src/sider/manglendemedvirkning/ManglendeMedvirkningStartetVurdering.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
import React, { ReactElement } from "react"; | ||
import { | ||
VurderingResponseDTO, | ||
VurderingType, | ||
} from "@/data/manglendemedvirkning/manglendeMedvirkningTypes"; | ||
import ForhandsvarselSendt from "@/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselSendt"; | ||
import ForhandsvarselSkjema from "@/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselSkjema"; | ||
|
||
interface ManglendeMedvirkningStartetVurderingProps { | ||
sisteVurdering: VurderingResponseDTO | undefined; | ||
} | ||
|
||
export const ManglendeMedvirkningStartetVurdering = ({ | ||
sisteVurdering, | ||
}: ManglendeMedvirkningStartetVurderingProps): ReactElement => { | ||
const isForhandsvarsel = | ||
sisteVurdering?.vurderingType === VurderingType.FORHANDSVARSEL; | ||
return isForhandsvarsel ? ( | ||
<ForhandsvarselSendt forhandsvarsel={sisteVurdering} /> | ||
) : ( | ||
<ForhandsvarselSkjema /> | ||
); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
import { beforeEach, describe, expect, it } from "vitest"; | ||
import { manglendeMedvirkningPath } from "@/routers/AppRouter"; | ||
import { screen, waitFor } from "@testing-library/react"; | ||
import { changeTextInput, clickButton, getTextInput } from "../testUtils"; | ||
import { addWeeks } from "@/utils/datoUtils"; | ||
import { | ||
NewForhandsvarselVurderingRequestDTO, | ||
VurderingType, | ||
} from "@/data/manglendemedvirkning/manglendeMedvirkningTypes"; | ||
import { ARBEIDSTAKER_DEFAULT } from "../../mock/common/mockConstants"; | ||
import { getSendForhandsvarselDocument } from "./vurderingDocuments"; | ||
import React from "react"; | ||
import { renderWithRouter } from "../testRouterUtils"; | ||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; | ||
import { ValgtEnhetContext } from "@/context/ValgtEnhetContext"; | ||
import { navEnhet } from "../dialogmote/testData"; | ||
import { NotificationProvider } from "@/context/notification/NotificationContext"; | ||
import ForhandsvarselSkjema from "@/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselSkjema"; | ||
import { queryClientWithMockData } from "../testQueryClient"; | ||
|
||
let queryClient: QueryClient; | ||
|
||
const renderForhandsvarselSkjema = () => { | ||
return renderWithRouter( | ||
<QueryClientProvider client={queryClient}> | ||
<ValgtEnhetContext.Provider | ||
value={{ valgtEnhet: navEnhet.id, setValgtEnhet: () => void 0 }} | ||
> | ||
<NotificationProvider> | ||
<ForhandsvarselSkjema /> | ||
</NotificationProvider> | ||
</ValgtEnhetContext.Provider> | ||
</QueryClientProvider>, | ||
manglendeMedvirkningPath, | ||
[manglendeMedvirkningPath] | ||
); | ||
}; | ||
|
||
describe("Manglendemedvirkning Forhandsvarsel", () => { | ||
beforeEach(() => { | ||
queryClient = queryClientWithMockData(); | ||
}); | ||
|
||
it("viser feil når man sender forhåndsvarsel uten å ha skrevet begrunnelse", async () => { | ||
renderForhandsvarselSkjema(); | ||
|
||
await clickButton("Send"); | ||
|
||
expect(await screen.findByText("Vennligst angi begrunnelse")).to.exist; | ||
}); | ||
|
||
it("skal sende forhandsvarsel med riktige verdier", async () => { | ||
renderForhandsvarselSkjema(); | ||
|
||
const varselSvarfrist = addWeeks(new Date(), 3); | ||
const begrunnelse = "En begrunnelse"; | ||
|
||
const begrunnelseInput = getTextInput("Begrunnelse (obligatorisk)"); | ||
changeTextInput(begrunnelseInput, begrunnelse); | ||
|
||
await clickButton("Send"); | ||
|
||
const expectedRequestBody: NewForhandsvarselVurderingRequestDTO = { | ||
personident: ARBEIDSTAKER_DEFAULT.personIdent, | ||
vurderingType: VurderingType.FORHANDSVARSEL, | ||
begrunnelse: begrunnelse, | ||
document: getSendForhandsvarselDocument(begrunnelse, varselSvarfrist), | ||
varselSvarfrist: varselSvarfrist, | ||
}; | ||
|
||
await waitFor(() => { | ||
const vurderingMutation = queryClient.getMutationCache().getAll().pop(); | ||
|
||
// Ikke deep.equal fordi varselSvarfrist blir ulik på millisekund-nivå | ||
expect(vurderingMutation?.state.variables).to.deep.include({ | ||
personident: expectedRequestBody.personident, | ||
vurderingType: expectedRequestBody.vurderingType, | ||
begrunnelse: expectedRequestBody.begrunnelse, | ||
document: expectedRequestBody.document, | ||
}); | ||
}); | ||
}); | ||
}); |
Oops, something went wrong.