Skip to content

Commit

Permalink
Tsff 641/storbritannia skal ikke vises som eos land (#6389)
Browse files Browse the repository at this point in the history
* Storbritannia er ikke et EØS-land. Fikser visning av årsak for Sveits

* Storbritannia er ikke et EØS-land. Fikser visning av årsak for Sveits

* Lint fiks.

* tester for utenlandsopphold-visning

* kosovo fix

---------

Co-authored-by: Jostein Stuhaug <[email protected]>
  • Loading branch information
vebnor and josstn authored Jul 16, 2024
1 parent 4b1def1 commit a810e59
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { httpUtils } from '@fpsak-frontend/utils';
import { ExclamationmarkTriangleFillIcon } from '@navikt/aksel-icons';
import { Alert, HStack, Tabs, VStack } from '@navikt/ds-react';
import { Alert, Tabs, VStack } from '@navikt/ds-react';
import { Box, ChildIcon, Infostripe, Margin, PageContainer } from '@navikt/ft-plattform-komponenter';
import { useQuery } from '@tanstack/react-query';
import classnames from 'classnames';
Expand Down Expand Up @@ -29,8 +29,7 @@ import ContainerContext from '../../context/ContainerContext';
import VurderingContext from '../../context/VurderingContext';
import AksjonspunktFerdigStripe from '../aksjonspunkt-ferdig-stripe/AksjonspunktFerdigStripe';
// eslint-disable-next-line max-len
import NyeDokumenterSomKanPåvirkeEksisterendeVurderingerController
from '../nye-dokumenter-som-kan-påvirke-eksisterende-vurderinger/NyeDokumenterSomKanPåvirkeEksisterendeVurderingerController';
import NyeDokumenterSomKanPåvirkeEksisterendeVurderingerController from '../nye-dokumenter-som-kan-påvirke-eksisterende-vurderinger/NyeDokumenterSomKanPåvirkeEksisterendeVurderingerController';
import StruktureringAvDokumentasjon from '../strukturering-av-dokumentasjon/StruktureringAvDokumentasjon';
import UteståendeEndringerMelding from '../utestående-endringer-melding/UteståendeEndringerMelding';
import VilkarsvurderingAvLivetsSluttfase from '../vilkarsvurdering-av-livets-sluttfase/VilkarsvurderingAvLivetsSluttfase';
Expand Down Expand Up @@ -200,11 +199,11 @@ const MedisinskVilkår = (): JSX.Element => {
dispatch({ type: ActionType.ENDRINGER_UTIFRA_NYE_DOKUMENTER_REGISTRERT });
hentSykdomsstegStatus().then(
({
kanLøseAksjonspunkt,
manglerVurderingAvKontinuerligTilsynOgPleie,
manglerVurderingAvToOmsorgspersoner,
manglerVurderingAvLangvarigSykdom,
}) => {
kanLøseAksjonspunkt,
manglerVurderingAvKontinuerligTilsynOgPleie,
manglerVurderingAvToOmsorgspersoner,
manglerVurderingAvLangvarigSykdom,
}) => {
if (kanLøseAksjonspunkt) {
navigerTilSteg(toOmsorgspersonerSteg, true);
} else if (!manglerVurderingAvKontinuerligTilsynOgPleie && manglerVurderingAvToOmsorgspersoner) {
Expand Down Expand Up @@ -260,10 +259,12 @@ const MedisinskVilkår = (): JSX.Element => {
<div className={styles.medisinskVilkår}>
<VStack paddingBlock="2">
<h1 style={{ fontSize: 22 }}>{sykdomTittel(fagsakYtelseType)}</h1>
{ikkeSammenMedBarnet === true && <Alert variant="warning">
Søker har opplyst om utenlandsopphold uten barnet i søknadsperioden. Sjekk søknaden og korriger den aktuelle perioden via punsj, slik at det ikke
utbetales pleiepenger for perioden søker ikke pleier barnet.
</Alert>}
{ikkeSammenMedBarnet === true && (
<Alert variant="warning">
Søker har opplyst om utenlandsopphold uten barnet i søknadsperioden. Sjekk søknaden og korriger den
aktuelle perioden via punsj, slik at det ikke utbetales pleiepenger for perioden søker ikke pleier barnet.
</Alert>
)}
</VStack>
<WriteAccessBoundContent
contentRenderer={() => (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ const capitalizeFirstLetter = landNavn => {

const formatLandNavn = landNavn => {
if (landNavn.length === 2 || landNavn.length === 3) {
if (landNavn === 'XXK') {
return 'Kosovo';
}
return countries.getName(landNavn, 'no');
}
return landNavn;
Expand Down
65 changes: 65 additions & 0 deletions packages/fakta-utenlandsopphold/src/Utenlandsopphold.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,69 @@ describe('Utenlandsopphold', () => {
expect(screen.getByText('Merknad til utenlandsopphold')).toBeVisible();
expect(screen.getByText('Periode telles ikke.')).toBeVisible();
});

test('land utenfor EØS vises med merknad', () => {
renderWithIntl(
<Utenlandsopphold
utenlandsopphold={{ perioder: [utenlandsoppholdMock.perioder[1]] }}
kodeverk={utenlandsoppholdÅrsakMock}
/>,
);

expect(screen.getByText('Land')).toBeVisible();
expect(screen.getByText('Kina')).toBeVisible();
expect(screen.getByText('EØS')).toBeVisible();
expect(screen.getByText('Nei')).toBeVisible();
expect(screen.getByText('Merknad til utenlandsopphold')).toBeVisible();
expect(screen.getByText('Ingen av årsakene over (kan motta pleiepenger i 8 uker)')).toBeVisible();
});
// Egen test da det har mismatch mellom kodeverk og i18n-iso-countries
test('Kosovo vises korrekt', () => {
renderWithIntl(
<Utenlandsopphold
utenlandsopphold={{ perioder: [utenlandsoppholdMock.perioder[6]] }}
kodeverk={utenlandsoppholdÅrsakMock}
/>,
);

expect(screen.getByText('Land')).toBeVisible();
expect(screen.getByText('Kosovo')).toBeVisible();
expect(screen.getByText('EØS')).toBeVisible();
expect(screen.getByText('Nei')).toBeVisible();
});

// spesialhåndtering for Storbritannia da det ligger som EØS-land i kodeverket
test('Storbritannia er ikke i EØS', () => {
renderWithIntl(
<Utenlandsopphold
utenlandsopphold={{ perioder: [utenlandsoppholdMock.perioder[7]] }}
kodeverk={utenlandsoppholdÅrsakMock}
/>,
);

expect(screen.getByText('Land')).toBeVisible();
expect(screen.getByText('Storbritannia')).toBeVisible();
expect(screen.getByText('EØS')).toBeVisible();
expect(screen.getByText('Nei')).toBeVisible();
expect(screen.getByText('Merknad til utenlandsopphold')).toBeVisible();
expect(screen.getByText('Ingen av årsakene over (kan motta pleiepenger i 8 uker)')).toBeVisible();
});

// Sveits vurderes på lik linje med EØS-land
test('Sveits vises med ekstra informasjon', () => {
renderWithIntl(
<Utenlandsopphold
utenlandsopphold={{ perioder: [utenlandsoppholdMock.perioder[5]] }}
kodeverk={utenlandsoppholdÅrsakMock}
/>,
);

expect(screen.getByText('Land')).toBeVisible();
expect(screen.getByText('Sveits')).toBeVisible();
expect(screen.getByText('EØS')).toBeVisible();
expect(screen.getByText('Nei*')).toBeVisible();
expect(screen.getByText('Merknad til utenlandsopphold')).toBeVisible();
expect(screen.getByText('Periode telles ikke.')).toBeVisible();
expect(screen.getByText('*) Ikke en del av EØS, men vurderes mot EØS-regelverk')).toBeVisible();
});
});
28 changes: 21 additions & 7 deletions packages/fakta-utenlandsopphold/src/Utenlandsopphold.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,15 @@ const Utenlandsopphold = ({
kodeverk: { UtenlandsoppholdÅrsak: KodeverkMedNavn[] };
fagsakYtelseType?: string;
}) => {
const finnÅrsaker = (periode, erEØS) => {
if (erEØS) {
const finnÅrsaker = (periode: UtenlandsoppholdType, erEØS: boolean) => {
if (erEØS || periode.landkode.kode === 'CHE') {
return 'Periode telles ikke.';
}

return kodeverk?.UtenlandsoppholdÅrsak?.find(v => v.kode === periode?.årsak)?.navn || 'Ukjent årsak';
};

// Sveits vurderes på lik linje med EØS-land
const vurderesMotEØSRegelverk = (landkode: string) => {
const land = ['CHE'];
if (land.includes(landkode)) {
Expand All @@ -37,13 +38,26 @@ const Utenlandsopphold = ({
};

const mapItems = (periode: UtenlandsoppholdType) => {
const erEØS = periode.region.kode === 'NORDEN' || periode.region.kode === 'EOS';
// Storbritannia ligger som EØS-land i kodeverket. Frem til det er fjernet derfra må det spesialhåndteres her.
const erEØS = () =>
periode.region.kode === 'NORDEN' || (periode.region.kode === 'EOS' && periode.landkode.kode !== 'GBR');

const land = { label: 'Land', value: countries.getName(periode.landkode.kode, 'no') };
const eos = { label: 'EØS', value: erEØS ? 'Ja' : `Nei${vurderesMotEØSRegelverk(periode.landkode.kode)}` };
const årsak = { label: 'Merknad til utenlandsopphold', value: finnÅrsaker(periode, erEØS) };
const hentLand = () => {
// Kosovo har en spesiell kode i kodeverk som ikke samsvarer med ISO-koden i i18n-iso-countries
if (periode.landkode.kode === 'XXK') {
return { label: 'Land', value: 'Kosovo' };
}
return { label: 'Land', value: countries.getName(periode.landkode.kode, 'no') };
};

return [land, eos, årsak];
const hentEØSStatus = () => {
const eøsStatus = erEØS() ? 'Ja' : `Nei${vurderesMotEØSRegelverk(periode.landkode.kode)}`;
return { label: 'EØS', value: eøsStatus };
};

const hentÅrsak = () => ({ label: 'Merknad til utenlandsopphold', value: finnÅrsaker(periode, erEØS()) });

return [hentLand(), hentEØSStatus(), hentÅrsak()];
};

const perioder = utenlandsopphold?.perioder;
Expand Down
32 changes: 31 additions & 1 deletion packages/mocks/mockdata/utenlandsoppholdMock.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ const utenlandsopphold = {
},
{
periode: `${dayjs().subtract(45, 'day').format('YYYY-MM-DD')}/${dayjs()
.subtract(31, 'day')
.subtract(39, 'day')
.format('YYYY-MM-DD')}`,
landkode: {
kode: 'CHE',
Expand All @@ -88,6 +88,36 @@ const utenlandsopphold = {
},
årsak: 'INGEN',
},
{
periode: `${dayjs().subtract(52, 'day').format('YYYY-MM-DD')}/${dayjs()
.subtract(47, 'day')
.format('YYYY-MM-DD')}`,
landkode: {
kode: 'XXK',
navn: 'XXK',
kodeverk: 'LANDKODER',
},
region: {
kode: 'ANNET',
kodeverk: 'REGION',
},
årsak: 'INGEN',
},
{
periode: `${dayjs().subtract(59, 'day').format('YYYY-MM-DD')}/${dayjs()
.subtract(55, 'day')
.format('YYYY-MM-DD')}`,
landkode: {
kode: 'GBR',
navn: 'GBR',
kodeverk: 'LANDKODER',
},
region: {
kode: 'EOS',
kodeverk: 'REGION',
},
årsak: 'INGEN',
},
],
};

Expand Down

0 comments on commit a810e59

Please sign in to comment.