-
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
- Loading branch information
1 parent
66ece59
commit 2b8c1d7
Showing
6 changed files
with
384 additions
and
31 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,75 @@ | ||
/* | ||
Test at de to ulike fristdatoene vises gitt betingelsene | ||
Test at begge vises og den tidligste først dersom personen har begge fristene. | ||
*/ | ||
|
||
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'; | ||
|
||
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, | ||
}; | ||
|
||
describe('FristColumn', () => { | ||
it('viser ingen frister når person har hverken aktivitetskrav AVVENT med frist eller trenger oppfolging med frist', () => { | ||
const personAvventerMedFrist: PersonData = { ...defaultPersonData }; | ||
render(<FristColumn personData={personAvventerMedFrist} />); | ||
|
||
expect(screen.queryAllByText(/2023/)).to.be.empty; | ||
}); | ||
it('viser frist for person når aktivitetskrav AVVENT med frist', () => { | ||
const personAvventerMedFrist: PersonData = { | ||
...defaultPersonData, | ||
aktivitetskrav: AktivitetskravStatus.AVVENT, | ||
aktivitetskravVurderingFrist: new Date('2023-12-18'), | ||
}; | ||
render(<FristColumn personData={personAvventerMedFrist} />); | ||
|
||
expect(screen.getByText('18.12.2023')).to.exist; | ||
}); | ||
it('viser frist for person når trenger oppfolging frist-dato er satt', () => { | ||
const personTrengerOppfolgingMedFrist: PersonData = { | ||
...defaultPersonData, | ||
trengerOppfolgingFrist: new Date('2023-12-31'), | ||
}; | ||
render(<FristColumn personData={personTrengerOppfolgingMedFrist} />); | ||
|
||
expect(screen.getByText('31.12.2023')).to.exist; | ||
}); | ||
it('viser tidligste frist først når person har flere frister', () => { | ||
const personMedFlereFrister: PersonData = { | ||
...defaultPersonData, | ||
aktivitetskrav: AktivitetskravStatus.AVVENT, | ||
aktivitetskravVurderingFrist: new Date('2023-12-10'), | ||
trengerOppfolgingFrist: new Date('2023-12-05'), | ||
}; | ||
|
||
render(<FristColumn personData={personMedFlereFrister} />); | ||
|
||
const allFrister = screen.getAllByText(/2023/); | ||
expect(allFrister).to.have.length(2); | ||
expect(allFrister[0]?.textContent).to.eq('05.12.2023'); | ||
expect(allFrister[1]?.textContent).to.eq('10.12.2023'); | ||
}); | ||
}); |
Oops, something went wrong.