Skip to content

Commit d1b5984

Browse files
committed
Better tests and some refactor
1 parent a7aaed5 commit d1b5984

File tree

7 files changed

+103
-84
lines changed

7 files changed

+103
-84
lines changed

src/hovedside/Hovedside.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ const Hovedside = () => {
2626
return (
2727
<main id="main" className="hovedside">
2828
<div className="flex items-center flex-col w-full h-full">
29-
<OppfolgingStatus>
30-
</OppfolgingStatus>
3129
<HovedsideFeilmelding />
3230
<InformasjonsHenting />
3331
<Varslinger />

src/moduler/aktiver-digital-oppfolging/AktiverDigitalOppfolging.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import AktiverDigitalOppfolgingVarsel from './AktiverDigitalOppfolgingVarsel';
1010

1111
const AktiverDigitalOppfolging = () => {
1212
const oppfolgingStatus = useSelector(selectOppfolgingStatus);
13-
const reservertKrr = useSelector(selectReservasjonKRR);
13+
const reservertKrr = useSelector(selectReservasjonKRR) || false;
1414

1515
const settOppfolgingFeilet = oppfolgingStatus === Status.ERROR;
1616
const lasterOppfolging = oppfolgingStatus === Status.PENDING || oppfolgingStatus === Status.RELOADING;

src/moduler/aktiver-digital-oppfolging/AktiverDigitalOppfolgingVarsel.tsx

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,19 @@ interface Props {
77
settDigitalFeilet: boolean;
88
}
99

10+
const tekster = {
11+
veileder: {
12+
tittel: 'Brukeren er reservert i KRR',
13+
tekst: 'Du kan ikke sende meldinger fordi brukeren har reservert seg mot digital kommunikasjon KRR.',
14+
lenkeTekst: 'Gå til norge.no for å fjerne reservasjonen.',
15+
},
16+
bruker: {
17+
tittel: 'Du har reservert deg mot digital kommunikasjon',
18+
tekst: 'Du kan ikke bruke aktivitetsplanen fordi du har reservert deg mot digital kommunikasjon i kontakt og reservasjonsregisteret (KRR)',
19+
lenkeTekst: 'Gå til norge.no for å fjerne reservasjonen.',
20+
},
21+
};
22+
1023
const AktiverDigitalOppfolgingVarsel = (props: Props) => {
1124
const { reservertIKRR, settDigitalFeilet } = props;
1225
const erVeileder = useErVeileder();
@@ -22,33 +35,19 @@ const AktiverDigitalOppfolgingVarsel = (props: Props) => {
2235
//å være enten manuell eller reservert i krr for å kunne komme hit
2336
if (!reservertIKRR) {
2437
return (
25-
<Alert variant="warning" className="mx-2 mb-5 max-w-2xl">
38+
<Alert variant="warning" className="mx-2 mt-6 max-w-2xl">
2639
Du har ikke digital oppfølging fra Nav. Du har derfor ikke en digital aktivitetsplan.
2740
</Alert>
2841
);
29-
} else if (reservertIKRR && !erVeileder) {
30-
return (
31-
<Alert variant="warning" className="mx-2 mb-5 max-w-2xl">
32-
<Heading spacing size="small" level="3">
33-
Du har reservert deg mot digital kommunikasjon
34-
</Heading>
35-
Du kan ikke bruke aktivitetsplanen fordi du har reservert deg mot digital kommunikasjon i kontakt og
36-
reservasjonsregisteret (KRR)
37-
<Link href={'https://www.norge.no/nb/digital-borgar/reservasjon'}>
38-
Gå til norge.no for å fjerne reservasjonen.
39-
</Link>
40-
</Alert>
41-
);
42-
} else if (reservertIKRR && erVeileder) {
42+
} else if (reservertIKRR) {
43+
const tekst = erVeileder ? tekster.veileder : tekster.bruker;
4344
return (
44-
<Alert variant="warning" className="mx-2 mb-5 max-w-2xl">
45+
<Alert variant="warning" className="mx-2 mt-6 max-w-2xl">
4546
<Heading spacing size="small" level="3">
46-
Brukeren er reservert i KRR
47+
{tekst.tittel}
4748
</Heading>
48-
Du kan ikke sende meldinger fordi brukeren har reservert seg mot digital kommunikasjon KRR.
49-
<Link href={'https://www.norge.no/nb/digital-borgar/reservasjon'}>
50-
Gå til norge.no for å fjerne reservasjonen.
51-
</Link>
49+
{tekst.tekst}
50+
<Link href={'https://www.norge.no/nb/digital-borgar/reservasjon'}>{tekst.lenkeTekst}</Link>
5251
</Alert>
5352
);
5453
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { Alert, Heading, Link } from '@navikt/ds-react';
2+
import React from 'react';
3+
4+
const tekster = {
5+
bruker: {
6+
tittel: 'Vi har ikke din kontaktinformasjon',
7+
tekst: 'Du kan ikke bruke aktivitetsplanen fordi du ikke har registrert e-post eller telefonnummeret ditt i kontakt og reservasjonsregisteret (KRR).',
8+
lenkeTekst: 'Gå til norge.no for å registrere.',
9+
},
10+
veileder: {
11+
tittel: 'Brukeren er ikke registrert i KRR',
12+
tekst: 'Du kan ikke bruke aktivitetsplanen fordi brukeren ikke har registrert e-post eller telefonnummeret sitt i KRR',
13+
lenkeTekst: 'Brukeren må gå til norge.no for å registrere.',
14+
},
15+
};
16+
17+
export function IkkeRegistrertIKRRAdvarsel({
18+
erRegistrertIKRR,
19+
erVeileder,
20+
}: {
21+
erRegistrertIKRR: boolean;
22+
erVeileder: boolean;
23+
}) {
24+
if (erRegistrertIKRR) return null;
25+
const tekst = erVeileder ? tekster.veileder : tekster.bruker;
26+
return (
27+
<div className="flex items-center flex-col">
28+
<Alert variant="warning" className="mx-2 mt-6 max-w-2xl">
29+
<Heading spacing size="small" level="3">
30+
{tekst.tittel}
31+
</Heading>
32+
<p>{tekst.tekst}</p>
33+
<Link href={'https://www.norge.no/nb/digital-borgar/registrere'}>{tekst.lenkeTekst}</Link>
34+
</Alert>
35+
</div>
36+
);
37+
}

src/moduler/oppfolging-status/OppfolgingStatus.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ interface Props {
55
children: ReactNode;
66
}
77

8-
9-
10-
const OppfolgingStatus = ({children}: Props) => {
8+
const OppfolgingStatus = ({ children }: Props) => {
119
return (
1210
<div className="w-full">
1311
<VidereSendBrukereEllerRenderChildren>{children}</VidereSendBrukereEllerRenderChildren>

src/moduler/oppfolging-status/VidereSendBrukereEllerRenderChildren.tsx

Lines changed: 14 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -18,54 +18,12 @@ import {
1818
import { Status } from '../../createGenericSlice';
1919
import { selectAktivitetStatus } from '../aktivitet/aktivitet-selector';
2020
import { selectIdentitetId } from '../identitet/identitet-selector';
21-
import { Alert, Heading, Link } from '@navikt/ds-react';
21+
import { IkkeRegistrertIKRRAdvarsel } from './IkkeRegistrertIKRRAdvarsel';
2222

2323
interface VidereSendBrukereEllerRenderChildrenProps {
2424
children: React.ReactNode;
2525
}
2626

27-
28-
29-
function KRRAdvarsel({ erRegistrertIKRR, erVeilder}: { erRegistrertIKRR: boolean; erVeilder: boolean; }) {
30-
if (!erRegistrertIKRR && !erVeilder) {
31-
32-
return (
33-
<div className="flex items-center flex-col">
34-
<Alert variant="warning" className="mx-2 mb-5 max-w-2xl">
35-
<Heading spacing size="small" level="3">
36-
Vi har ikke din kontaktinformasjon
37-
</Heading>
38-
<p>
39-
Du kan ikke bruke aktivitetsplanen fordi du ikke har registrert e-post eller telefonnummeret
40-
ditt i kontakt og reservasjonsregisteret (KRR).
41-
</p>
42-
<Link href={'https://www.norge.no/nb/digital-borgar/registrere'}>
43-
Gå til norge.no for å registrere.
44-
</Link>
45-
</Alert>
46-
</div>
47-
);
48-
49-
} else if (erVeilder && !erRegistrertIKRR){
50-
return(
51-
<div className="flex items-center flex-col">
52-
<Alert variant="warning" className="mx-2 mb-5 max-w-2xl">
53-
<Heading spacing size="small" level="3">
54-
Brukeren er ikke registrert i KRR
55-
</Heading>
56-
<p>
57-
Du kan ikke bruke aktivitetsplanen fordi brukeren ikke
58-
har registrert e-post eller telefonnummeret sitt i KRR
59-
</p>
60-
<Link href={'https://www.norge.no/nb/digital-borgar/registrere'}>
61-
Brukeren må gå til norge.no for å registrere.
62-
</Link>
63-
</Alert>
64-
</div>
65-
)
66-
}
67-
}
68-
6927
const VidereSendBrukereEllerRenderChildren = (props: VidereSendBrukereEllerRenderChildrenProps) => {
7028
const underOppfolging = useSelector(selectErUnderOppfolging);
7129
const oppfolgingsPerioder = useSelector(selectOppfolgingsPerioder);
@@ -99,14 +57,23 @@ const VidereSendBrukereEllerRenderChildren = (props: VidereSendBrukereEllerRende
9957
}
10058

10159
if (!erRegistrertIKRR && oppfolgingsStatus === Status.OK) {
102-
return <KRRAdvarsel erRegistrertIKRR={erRegistrertIKRR} erVeilder={erVeileder}/>;
103-
60+
return (
61+
<>
62+
<IkkeRegistrertIKRRAdvarsel erRegistrertIKRR={erRegistrertIKRR} erVeileder={erVeileder} />
63+
{erVeileder ? props.children : null}
64+
</>
65+
);
10466
}
10567
if (ikkeDigitalOppfolging) {
106-
return <AktiverDigitalOppfolging />;
68+
return (
69+
<>
70+
<AktiverDigitalOppfolging />
71+
{erVeileder ? props.children : null}
72+
</>
73+
);
10774
}
10875

109-
return <>{props.children}</>;
76+
return <>{props.children}</>;
11077
};
11178

11279
export default VidereSendBrukereEllerRenderChildren;

src/moduler/oppfolging-status/Videresend.test.tsx

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,41 @@
11
import { configureStore } from '@reduxjs/toolkit';
22
import reducer from '../../reducer';
3-
import { initialLoadedEmptyState } from '../../testUtils/defaultInitialStore';
3+
import { aktiviteterState, initialLoadedEmptyState } from '../../testUtils/defaultInitialStore';
44
import { render, waitFor } from '@testing-library/react';
55
import { WrappedHovedside } from '../../testUtils/WrappedHovedside';
66
import { mockfnr } from '../../mocks/utils';
77
import React from 'react';
8-
import { afterAll, beforeAll, describe } from 'vitest';
8+
import { afterAll, beforeAll, describe, expect } from 'vitest';
99
import { Status } from '../../createGenericSlice';
1010
import { mockOppfolging } from '../../mocks/data/oppfolging';
1111
import { OppfolgingStatus } from '../../datatypes/oppfolgingTypes';
1212
import { RootState } from '../../store';
1313
import { setupServer } from 'msw/node';
1414
import { handlers } from '../../mocks/handlers';
15+
import { mockTestAktiviteter } from '../../mocks/aktivitet';
16+
import { VeilarbAktivitet } from '../../datatypes/internAktivitetTypes';
17+
import { MinimalPeriode } from './oppfolging-selector';
1518

1619
const defaultOppfolging = mockOppfolging;
20+
const aktivitetTittel = 'Videresend aktivitet';
21+
const periode: MinimalPeriode = {
22+
id: 1,
23+
start: new Date().toISOString(),
24+
slutt: undefined,
25+
};
26+
const aktivitet: VeilarbAktivitet = {
27+
...mockTestAktiviteter[0],
28+
tittel: aktivitetTittel,
29+
oppfolgingsperiodeId: periode.id,
30+
};
31+
const stateMedAktiviteter = aktiviteterState({ aktiviteter: [aktivitet], oppfolgingsPerioder: [periode] });
1732

18-
const storeMedOppfolging = (oppfolging: OppfolgingStatus = defaultOppfolging) => {
33+
const storeMedOppfolging = (oppfolging: OppfolgingStatus = defaultOppfolging): RootState => {
1934
return {
2035
...initialLoadedEmptyState,
2136
data: {
2237
...initialLoadedEmptyState.data,
38+
aktiviteter: stateMedAktiviteter,
2339
oppfolging: {
2440
status: Status.OK,
2541
data: oppfolging,
@@ -104,18 +120,19 @@ describe('Videresend brukere eller render children', () => {
104120
const store = gitt.hentStatus.ikkeRegistrertIKrr();
105121
const { getByText } = render(<WrappedHovedside fnr={mockfnr} store={store} />);
106122
await waitFor(() => getByText('Brukeren er ikke registrert i KRR'));
123+
getByText(aktivitetTittel);
107124
});
108125
it('skal vise varsel når bruker har reservert seg mot digital kommunikasjon i KRR', async () => {
109126
const store = gitt.hentStatus.reserverIKrr();
110127
const { getByText } = render(<WrappedHovedside fnr={mockfnr} store={store} />);
111128
await waitFor(() => getByText('Brukeren er reservert i KRR'));
129+
getByText(aktivitetTittel);
112130
});
113-
it('skal vise FEILMEDLING FOR BRUKER? når bruker er manuell', async () => {
131+
it('skal vise aktivitetsplan når bruker er manuell', async () => {
114132
const store = gitt.hentStatus.manuell();
115133
const { getByText } = render(<WrappedHovedside fnr={mockfnr} store={store} />);
116-
await waitFor(() =>
117-
getByText('Du har ikke digital oppfølging fra Nav. Du har derfor ikke en digital aktivitetsplan.'),
118-
);
134+
await waitFor(() => getByText(aktivitetTittel));
135+
getByText(aktivitetTittel);
119136
});
120137
});
121138
describe('Brukere:', () => {
@@ -127,20 +144,23 @@ describe('Videresend brukere eller render children', () => {
127144
});
128145
it('skal vise varsel når bruker ikke har registrert informasjon i KRR', async () => {
129146
const store = gitt.hentStatus.ikkeRegistrertIKrr();
130-
const { getByText } = render(<WrappedHovedside store={store} />);
147+
const { getByText, queryByText } = render(<WrappedHovedside store={store} />);
131148
await waitFor(() => getByText('Vi har ikke din kontaktinformasjon'));
149+
expect(queryByText(aktivitetTittel)).toBeFalsy();
132150
});
133151
it('skal vise varsel når bruker har reservert seg mot digital kommunikasjon i KRR', async () => {
134152
const store = gitt.hentStatus.reserverIKrr();
135-
const { getByText } = render(<WrappedHovedside store={store} />);
153+
const { getByText, queryByText } = render(<WrappedHovedside store={store} />);
136154
await waitFor(() => getByText('Du har reservert deg mot digital kommunikasjon'));
155+
expect(queryByText(aktivitetTittel)).toBeFalsy();
137156
});
138157
it('skal vise dårlig feilmelding når bruker er manuell', async () => {
139158
const store = gitt.hentStatus.manuell();
140-
const { getByText } = render(<WrappedHovedside store={store} />);
159+
const { getByText, queryByText } = render(<WrappedHovedside store={store} />);
141160
await waitFor(() =>
142161
getByText('Du har ikke digital oppfølging fra Nav. Du har derfor ikke en digital aktivitetsplan.'),
143162
);
163+
expect(queryByText(aktivitetTittel)).toBeFalsy();
144164
});
145165
});
146166
});

0 commit comments

Comments
 (0)