-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
IS-1710: Add trengerOppfolgingFrist to frist column (#383)
* IS-1710: Add trengerOppfolgingFrist to frist column * Fix PR feedback * Fix pr feedback
- Loading branch information
1 parent
a55baae
commit 92709c7
Showing
6 changed files
with
425 additions
and
38 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,34 +1,70 @@ | ||
import { PersonData } from '@/api/types/personregisterTypes'; | ||
import { toReadableDate } from '@/utils/dateUtils'; | ||
import { HourglassTopFilledIcon } from '@navikt/aksel-icons'; | ||
import React from 'react'; | ||
import { FileTextIcon, HourglassTopFilledIcon } from '@navikt/aksel-icons'; | ||
import React, { ReactElement } from 'react'; | ||
import { AktivitetskravStatus } from '@/api/types/personoversiktTypes'; | ||
import { Tooltip } from '@navikt/ds-react'; | ||
import styled from 'styled-components'; | ||
|
||
const FristColumnWrapper = styled.div` | ||
const FristWrapper = styled.div` | ||
display: flex; | ||
flex-wrap: wrap; | ||
`; | ||
|
||
const texts = { | ||
tooltipAvventer: 'Avventer', | ||
tooltipTrengerOppfolging: 'Trenger oppfølging', | ||
}; | ||
|
||
interface FristColumnProps { | ||
personData: PersonData; | ||
} | ||
|
||
type Frist = { | ||
icon: () => ReactElement; | ||
date: Date; | ||
tooltip: string; | ||
}; | ||
|
||
const byFristAsc = (fristA: Frist, fristB: Frist) => { | ||
return fristA.date > fristB.date ? 1 : -1; | ||
}; | ||
|
||
export const FristColumn = ({ personData }: FristColumnProps) => { | ||
const showAvventerFrist = | ||
personData.aktivitetskrav === AktivitetskravStatus.AVVENT; | ||
const { | ||
aktivitetskrav, | ||
aktivitetskravVurderingFrist, | ||
trengerOppfolgingFrist, | ||
} = personData; | ||
const frister: Frist[] = []; | ||
if ( | ||
aktivitetskrav === AktivitetskravStatus.AVVENT && | ||
aktivitetskravVurderingFrist | ||
) { | ||
frister.push({ | ||
icon: () => <HourglassTopFilledIcon aria-hidden fontSize="1.5rem" />, | ||
date: aktivitetskravVurderingFrist, | ||
tooltip: texts.tooltipAvventer, | ||
}); | ||
} | ||
if (trengerOppfolgingFrist) { | ||
frister.push({ | ||
icon: () => <FileTextIcon aria-hidden fontSize="1.5rem" />, | ||
date: trengerOppfolgingFrist, | ||
tooltip: texts.tooltipTrengerOppfolging, | ||
}); | ||
} | ||
|
||
return ( | ||
<FristColumnWrapper> | ||
{showAvventerFrist && ( | ||
<> | ||
<Tooltip content="Avventer" arrow={false}> | ||
<HourglassTopFilledIcon aria-hidden fontSize="1.5rem" /> | ||
<> | ||
{frister.sort(byFristAsc).map(({ date, icon, tooltip }, index) => ( | ||
<FristWrapper key={index}> | ||
<Tooltip content={tooltip} arrow={false}> | ||
{icon()} | ||
</Tooltip> | ||
{toReadableDate(personData.aktivitetskravVurderingFrist)} | ||
</> | ||
)} | ||
</FristColumnWrapper> | ||
{toReadableDate(date)} | ||
</FristWrapper> | ||
))} | ||
</> | ||
); | ||
}; |
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
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,98 @@ | ||
import { render, screen } from '@testing-library/react'; | ||
import { FristColumn } from '@/components/FristColumn'; | ||
import React from 'react'; | ||
import { PersonData, Skjermingskode } from '@/api/types/personregisterTypes'; | ||
import { testdata } from '../data/fellesTestdata'; | ||
import { expect } from 'chai'; | ||
import { AktivitetskravStatus } from '@/api/types/personoversiktTypes'; | ||
import { toReadableDate } from '@/utils/dateUtils'; | ||
|
||
const defaultPersonData: PersonData = { | ||
navn: testdata.navn1, | ||
harMotebehovUbehandlet: false, | ||
harDialogmotesvar: false, | ||
skjermingskode: testdata.skjermingskode.diskresjonsmerket as Skjermingskode, | ||
markert: false, | ||
harOppfolgingsplanLPSBistandUbehandlet: false, | ||
tildeltEnhetId: '123', | ||
tildeltVeilederIdent: '234', | ||
aktivitetskrav: null, | ||
aktivitetskravSistVurdert: null, | ||
aktivitetskravActive: false, | ||
aktivitetskravVurderingFrist: null, | ||
harBehandlerdialogUbehandlet: false, | ||
harAktivitetskravVurderStansUbehandlet: false, | ||
trengerOppfolging: false, | ||
trengerOppfolgingFrist: null, | ||
behandlerBerOmBistandUbehandlet: false, | ||
}; | ||
|
||
const fristFormatRegex = /\b\d{2}\.\d{2}\.\d{4}\b/; | ||
|
||
describe('FristColumn', () => { | ||
it('viser ingen frister når person har hverken aktivitetskrav AVVENT med frist eller trenger oppfolging med frist', () => { | ||
const personUtenFrister: PersonData = { ...defaultPersonData }; | ||
render(<FristColumn personData={personUtenFrister} />); | ||
|
||
expect(screen.queryAllByText(fristFormatRegex)).to.be.empty; | ||
}); | ||
|
||
it('viser ingen frist for person når aktivitetskrav har frist, men ikke AVVENT', () => { | ||
const aktivitetskravVurderingFrist = new Date('2023-12-18'); | ||
const personForhandsvarselMedFrist: PersonData = { | ||
...defaultPersonData, | ||
aktivitetskrav: AktivitetskravStatus.FORHANDSVARSEL, | ||
aktivitetskravVurderingFrist: aktivitetskravVurderingFrist, | ||
}; | ||
render(<FristColumn personData={personForhandsvarselMedFrist} />); | ||
|
||
expect(screen.queryByText(toReadableDate(aktivitetskravVurderingFrist))).to | ||
.not.exist; | ||
}); | ||
|
||
it('viser frist for person når aktivitetskrav AVVENT med frist', () => { | ||
const aktivitetskravVurderingFrist = new Date('2023-12-18'); | ||
const personAvventerMedFrist: PersonData = { | ||
...defaultPersonData, | ||
aktivitetskrav: AktivitetskravStatus.AVVENT, | ||
aktivitetskravVurderingFrist: aktivitetskravVurderingFrist, | ||
}; | ||
render(<FristColumn personData={personAvventerMedFrist} />); | ||
|
||
expect(screen.getByText(toReadableDate(aktivitetskravVurderingFrist))).to | ||
.exist; | ||
}); | ||
|
||
it('viser frist for person når trenger oppfolging frist-dato er satt', () => { | ||
const trengerOppfolgingFrist = new Date('2023-12-31'); | ||
const personTrengerOppfolgingMedFrist: PersonData = { | ||
...defaultPersonData, | ||
trengerOppfolgingFrist: trengerOppfolgingFrist, | ||
}; | ||
render(<FristColumn personData={personTrengerOppfolgingMedFrist} />); | ||
|
||
expect(screen.getByText(toReadableDate(trengerOppfolgingFrist))).to.exist; | ||
}); | ||
|
||
it('viser tidligste frist først når person har flere frister', () => { | ||
const aktivitetskravVurderingFrist = new Date('2023-12-10'); | ||
const trengerOppfolgingFrist = new Date('2023-12-05'); | ||
const personMedFlereFrister: PersonData = { | ||
...defaultPersonData, | ||
aktivitetskrav: AktivitetskravStatus.AVVENT, | ||
aktivitetskravVurderingFrist: aktivitetskravVurderingFrist, | ||
trengerOppfolgingFrist: trengerOppfolgingFrist, | ||
}; | ||
|
||
render(<FristColumn personData={personMedFlereFrister} />); | ||
|
||
const allFrister = screen.getAllByText(fristFormatRegex); | ||
expect(allFrister).to.have.length(2); | ||
expect(allFrister[0]?.textContent).to.eq( | ||
toReadableDate(trengerOppfolgingFrist) | ||
); | ||
expect(allFrister[1]?.textContent).to.eq( | ||
toReadableDate(aktivitetskravVurderingFrist) | ||
); | ||
}); | ||
}); |
Oops, something went wrong.