Skip to content

Commit 85af800

Browse files
committed
warning boks vises med riktig tekst når bruker ikke kan varsles eller er i KRR
warning boks vises med riktig tekst når bruker ikke kan varsles eller er i KRR warning boksene står riktig Fjern reset (#1335) * Fjern reset * bruk manuelt isDirty-flagg * legg til dirty-sjekk på om status er endret --------- Co-authored-by: erikb <erik.bosnes@nav.no> riktig tekst for bruker og annen tekst for veileder, fjernet kan ikke varsles warning? annen warning vises ikke i mens data blir loadet aktivitetsplan vises selvom du har warning Disable jekyll for gh-pages Legg til default tekst på ekstern-oppgave knapp (#1337) Ta inn useEffect igjen fjernet kan ikke varsles advarsel riktig warning tekst Tester krr tekst (#1340) * WIP: Tester for oppfolging * WIP: Tester for oppfolging * Disable tester --------- Co-authored-by: henriktheboss <122083502+henriktheboss@users.noreply.github.com> Tester oppfolging (#1342) * WIP: Tester for oppfolging * WIP: Tester for oppfolging * Disable tester * Mer tester --------- Co-authored-by: henriktheboss <122083502+henriktheboss@users.noreply.github.com> wip Fix test mocking Better tests and some refactor rikitg links og oppdatert tekst
1 parent 7f613f3 commit 85af800

36 files changed

+582
-212
lines changed

.github/workflows/gh-pages.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ jobs:
3838
if: success()
3939
uses: crazy-max/ghaction-github-pages@v2
4040
with:
41+
jekyll: false
4142
build_dir: build
4243
env:
4344
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

src/BasePage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import OppfolgingStatus from './moduler/oppfolging-status/OppfolgingStatus';
21
import { Outlet } from 'react-router-dom';
2+
import OppfolgingStatus from './moduler/oppfolging-status/OppfolgingStatus';
33

44
export const BasePage = () => {
55
return (

src/api/aktivitetsplanGraphql.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ interface OppfolgingsPerioder {
179179
slutt: string | undefined;
180180
}
181181

182-
type AktivitetsplanResponse = GraphqlResponse<{ perioder: OppfolgingsPerioder[] }>;
182+
export type AktivitetsplanResponse = GraphqlResponse<{ perioder: OppfolgingsPerioder[] }>;
183183

184184
export const hentAktiviteterGraphql = async (): Promise<AktivitetsplanResponse> => {
185185
const fnr = hentFraSessionStorage(LocalStorageElement.FNR) || '';

src/api/dialogGraphql.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const query = `
3535
}
3636
`;
3737

38-
type DialogResponse = GraphqlResponse<{ dialoger: Dialog[]; stansVarsel?: Eskaleringsvarsel }>;
38+
export type DialogResponse = GraphqlResponse<{ dialoger: Dialog[]; stansVarsel?: Eskaleringsvarsel }>;
3939

4040
const queryBody = (fnr: string) => ({
4141
query,

src/api/graphql/graphqlResult.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ interface GraphqlError {
44

55
export interface GraphqlResponse<T> {
66
data: T;
7-
errors: GraphqlError[];
7+
errors?: GraphqlError[];
88
}
99

1010
export const sjekkGraphqlFeil = <T>(response: GraphqlResponse<T>): Promise<GraphqlResponse<T>> => {

src/datatypes/eksternAktivitetTypes.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ type Lenke = RequiredLenkeProps;
1111
type SentimentType = 'POSITIVE' | 'NEUTRAL' | 'NEGATIVE';
1212

1313
export interface Oppgave extends Lenke {
14-
knapptekst: string;
14+
// TODO: Få denne fra backend, den finnes ikke der idag (desverre :( )
15+
knapptekst?: string;
1516
}
1617

1718
export interface LenkeMedType extends RequiredLenkeProps {

src/datatypes/oppfolgingTypes.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@ export interface OppfolgingStatus {
1414
underOppfolging: boolean;
1515
underKvp: boolean;
1616
kanStarteOppfolging: boolean;
17-
oppfolginUtgang: string;
17+
oppfolgingUtgang: string | null;
1818
oppfolgingsPerioder: Oppfolgingsperiode[];
1919
harSkriveTilgang: boolean;
20-
inaktivIArena: boolean;
20+
inaktivIArena: boolean | null;
2121
kanReaktiveres: boolean;
2222
inaktiveringsdato: string;
2323
erSykmeldtMedArbeidsgiver: boolean;
2424
servicegruppe: string;
2525
formidlingsgruppe: string;
2626
rettighetsgruppe: string;
27-
registrertKRR : boolean;
27+
registrertKRR: boolean;
2828
}
2929

3030
export interface Oppfolgingsperiode {

src/hovedside/Hovedside.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22
import { describe } from 'vitest';
33
import { WrappedHovedside } from '../testUtils/WrappedHovedside';
44
import { act, render } from '@testing-library/react';
5-
import { emptyLoadedVeilederState } from '../testUtils/defaultInitialStore';
5+
import { emptyHalfLoadedVeilederState } from '../testUtils/defaultInitialStore';
66
import { setupServer } from 'msw/node';
77
import { rest } from 'msw';
88
import { failOrGrahpqlResponse, mockfnr } from '../mocks/utils';
@@ -16,7 +16,7 @@ import { oppfolgingsdperiodeAdapter } from '../moduler/aktivitet/aktivitet-slice
1616

1717
const initialState = {
1818
data: {
19-
...emptyLoadedVeilederState.data,
19+
...emptyHalfLoadedVeilederState.data,
2020
aktiviteter: oppfolgingsdperiodeAdapter.getInitialState({ status: Status.NOT_STARTED }),
2121
arenaAktiviteter: {
2222
status: Status.NOT_STARTED,

src/hovedside/Hovedside.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Verktoylinje from '../moduler/verktoylinje/Verktoylinje';
1111
import { useRoutes } from '../routing/useRoutes';
1212
import Aktivitetstavle from './tavle/Aktivitetstavle';
1313
import { Loader } from '@navikt/ds-react';
14+
import OppfolgingStatus from '../moduler/oppfolging-status/OppfolgingStatus';
1415

1516
const Hovedside = () => {
1617
const navigate = useNavigate();

src/mocks/data/dialog.ts

Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import { RestRequest } from 'msw';
22

33
import { erEksternBruker, ulesteDialoger } from '../demo/localStorage';
44
import { rndId } from '../utils';
5+
import { Dialog } from '../../datatypes/dialogTypes';
56

6-
const dialoger = [
7+
const dialoger: Dialog[] = [
78
{
89
id: '1',
910
aktivitetId: '1',
1011
overskrift: 'NOT USED',
11-
sisteTekst: 'Hei. Hva er status her? Har du finnet Kaptain Sabeltann?',
1212
sisteDato: '2018-01-28T12:48:56.097+01:00',
1313
opprettetDato: '2018-02-27T12:48:56.081+01:00',
1414
historisk: false,
@@ -43,8 +43,6 @@ const dialoger = [
4343
id: '3',
4444
aktivitetId: '141439',
4545
overskrift: 'NOT USED',
46-
sisteTekst:
47-
'Det er viktig at du gjennomfører denne aktiviteten med Nav. Gjør du ikke det, kan det medføre at stønaden du mottar fra Nav bortfaller for en periode eller stanses. Hvis du ikke kan gjennomføre aktiviteten, ber vi deg ta kontakt med veilederen din så snart som mulig.',
4846
sisteDato: '2018-11-21T13:13:20.685+01:00',
4947
opprettetDato: '2018-11-21T13:13:20.663+01:00',
5048
historisk: false,
@@ -70,7 +68,6 @@ const dialoger = [
7068
id: '2',
7169
aktivitetId: null,
7270
overskrift: 'Du har fått et varsel fra Nav',
73-
sisteTekst: 'Jeg har ikke hørt noe fra deg i det siste. Har du forlist?\n',
7471
sisteDato: '2018-02-01T11:52:20.615+01:00',
7572
opprettetDato: '2018-02-01T11:52:20.535+01:00',
7673
historisk: false,
@@ -96,10 +93,6 @@ const dialoger = [
9693
id: '4',
9794
aktivitetId: null,
9895
overskrift: 'Automatiske dialoger',
99-
sisteTekst:
100-
'Hei!\n' +
101-
'Du er registrert som arbeidssøker og Nav trenger å bli kjent med ditt behov for hjelp fra oss, slik at vi kan gi deg riktig veiledning.\n' +
102-
'Hva mener du? Klik her og vurder hva du selv tenker https://behovsvurdering.nav.no\n',
10396
sisteDato: '2018-01-28T12:48:56.097+01:00',
10497
opprettetDato: '2018-02-27T12:48:56.081+01:00',
10598
historisk: false,
@@ -160,7 +153,6 @@ const dialoger = [
160153
id: '2',
161154
aktivitetId: '10',
162155
overskrift: 'Du har fått et varsel fra Nav',
163-
sisteTekst: 'Jeg har ikke hørt noe fra deg i det siste. Har du forlist?\n',
164156
sisteDato: '2017-02-17T12:52:20.615+01:00',
165157
opprettetDato: '2017-02-17T11:52:20.535+01:00',
166158
historisk: false,
@@ -193,49 +185,4 @@ const dialoger = [
193185
},
194186
];
195187

196-
export const opprettDialog = async (req: RestRequest) => {
197-
const body = await req.json();
198-
199-
const dialogId = body.dialogId === undefined ? rndId() : `${body.dialogId}`;
200-
const nyHenvendelse = {
201-
id: rndId(),
202-
dialogId: dialogId,
203-
avsender: erEksternBruker() ? 'BRUKER' : 'VEILEDER',
204-
avsenderId: 'Z123456',
205-
overskrift: body.overskrift,
206-
tekst: body.tekst,
207-
lest: !ulesteDialoger(),
208-
sendt: new Date(),
209-
} as any;
210-
211-
const eksisterendeDialoger = dialoger.filter((dialog) => body.dialogId !== undefined && dialog.id === dialogId);
212-
213-
if (eksisterendeDialoger.length === 1) {
214-
const oldDialog = eksisterendeDialoger[0];
215-
oldDialog.sisteTekst = body.tekst;
216-
oldDialog.sisteDato = nyHenvendelse.sendt;
217-
oldDialog.henvendelser.push(nyHenvendelse);
218-
return oldDialog;
219-
} else {
220-
const nyDialog = {
221-
id: nyHenvendelse.dialogId,
222-
ferdigBehandlet: !body.ikkeFerdigbehandlet,
223-
venterPaSvar: !!body.venterPaSvar,
224-
aktivitetId: body.aktivitetId === undefined ? null : body.aktivitetId,
225-
overskrift: body.overskrift,
226-
sisteTekst: body.tekst,
227-
sisteDato: new Date(),
228-
opprettetDato: new Date(),
229-
historisk: false,
230-
lest: !ulesteDialoger(),
231-
lestAvBrukerTidspunkt: null,
232-
erLestAvBruker: false,
233-
henvendelser: [nyHenvendelse],
234-
egenskaper: body.egenskaper === undefined ? [] : body.egenskaper,
235-
} as any;
236-
dialoger.push(nyDialog);
237-
return nyDialog;
238-
}
239-
};
240-
241188
export default dialoger;

src/mocks/data/oppfolging.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import {
66
erKRRBruker,
77
erManuellBruker,
88
erPrivatBruker,
9-
ingenOppfPerioder, kanIkkeVarsles
9+
ingenOppfPerioder,
10+
kanIkkeVarsles,
1011
} from '../demo/localStorage';
1112
import { mockfnr } from '../utils';
1213

@@ -63,8 +64,13 @@ const oppfolging = {
6364
servicegruppe: 'IVURD',
6465
inaktiveringsdato: '2018-08-31T10:46:10.971+01:00',
6566
kanVarsles: !kanIkkeVarsles(),
66-
registrertKRR : !erIkkeRegistrertIKRR(),
67-
} as Partial<OppfolgingStatus>;
67+
registrertKRR: !erIkkeRegistrertIKRR(),
68+
erSykmeldtMedArbeidsgiver: false,
69+
formidlingsgruppe: 'ARBS',
70+
inaktivIArena: null,
71+
oppfolgingUtgang: null,
72+
rettighetsgruppe: 'IYT',
73+
} as OppfolgingStatus;
6874

6975
export const mockOppfolging = oppfolging;
7076

src/mocks/demo/demoToggles.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export const features = [
5353
checked: erManuellBruker,
5454
},
5555
{
56-
label: 'KRR',
56+
label: 'Er reservert i KRR',
5757
id: LocalStorageElement.KRR_BRUKER,
5858
checked: erKRRBruker,
5959
},

src/mocks/fixtures/stillingFraNavFixtures.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export const enStillingFraNavAktivitet = ({
7070
};
7171
export const jaCvKanDeles = {
7272
kanDeles: true,
73-
endretTidspunkt: new Date(),
73+
endretTidspunkt: new Date().toISOString(),
7474
endretAv: 'V123',
7575
endretAvType: 'BRUKER',
7676
};

src/mocks/handlers.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import { failOrGetResponse, failOrGrahpqlResponse, jsonResponse } from './utils'
4343
import { VeilarbAktivitet } from '../datatypes/internAktivitetTypes';
4444
import { journalføring } from './data/journalføring';
4545
import { subDays, subMinutes } from 'date-fns';
46+
import { AktivitetsplanResponse } from '../api/aktivitetsplanGraphql';
4647

4748
const getOppfFeiler = () => oppfFeilet() && !oppdateringKunFeiler();
4849
const getMaalFeiler = () => maalFeilet() && !oppdateringKunFeiler();
@@ -65,7 +66,6 @@ export const handlers = [
6566
// veilarbdialog
6667
rest.get('/veilarbdialog/api/eskaleringsvarsel/gjeldende', jsonResponse(eskaleringsvarsel)),
6768
rest.get('/veilarbdialog/api/dialog/sistOppdatert', jsonResponse({ sistOppdatert: 1678793406845 })),
68-
rest.post('/veilarbdialog/api/dialog', jsonResponse(opprettDialog)),
6969
rest.post(
7070
'/veilarbdialog/graphql',
7171
failOrGrahpqlResponse(dialogFeilet, () => ({
@@ -181,14 +181,14 @@ export const handlers = [
181181

182182
export const aktivitestplanResponse = (
183183
{ aktiviteter }: { aktiviteter: VeilarbAktivitet[] } = { aktiviteter: aktiviteterData.aktiviteter },
184-
) => {
184+
): AktivitetsplanResponse => {
185185
return {
186186
data: {
187187
perioder: mockOppfolging.oppfolgingsPerioder.map((periode) => ({
188188
id: periode.uuid,
189189
aktiviteter: aktiviteter.filter((aktivitet) => aktivitet.oppfolgingsperiodeId === periode.uuid),
190190
start: periode.startDato,
191-
slutt: periode.sluttDato,
191+
slutt: periode.sluttDato || undefined,
192192
})),
193193
},
194194
};

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: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,30 @@
11
import { Alert, Heading, Link } from '@navikt/ds-react';
22
import React from 'react';
3+
import { useErVeileder } from '../../Provider';
34

45
interface Props {
56
reservertIKRR: boolean;
67
settDigitalFeilet: boolean;
78
}
89

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: 'Brukeren må 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+
23+
const linkReservertIKrr = 'https://www.norge.no/nb/digital-borger/reservasjon'
24+
925
const AktiverDigitalOppfolgingVarsel = (props: Props) => {
1026
const { reservertIKRR, settDigitalFeilet } = props;
27+
const erVeileder = useErVeileder();
1128

1229
if (settDigitalFeilet) {
1330
return (
@@ -17,40 +34,24 @@ const AktiverDigitalOppfolgingVarsel = (props: Props) => {
1734
);
1835
}
1936

37+
//å være enten manuell eller reservert i krr for å kunne komme hit
2038
if (!reservertIKRR) {
2139
return (
22-
<Alert variant="warning" className="mx-2 mb-5 max-w-2xl">
40+
<Alert variant="warning" className="mx-2 mt-6 max-w-2xl">
2341
Du har ikke digital oppfølging fra Nav. Du har derfor ikke en digital aktivitetsplan.
2442
</Alert>
2543
);
2644
} else if (reservertIKRR) {
45+
const tekst = erVeileder ? tekster.veileder : tekster.bruker;
2746
return (
28-
<Alert variant="warning" className="mx-2 mb-5 max-w-2xl">
47+
<Alert variant="warning" className="mx-2 mt-6 max-w-2xl">
2948
<Heading spacing size="small" level="3">
30-
Du har reservert deg mot digital kommunikasjon &nbsp;
49+
{tekst.tittel}
3150
</Heading>
32-
Du kan ikke bruke aktivitetsplanen fordi du har reservert deg
33-
mot digital kommunikasjon i kontakt og reservasjonsregisteret (KRR)
34-
<Link href={'https://www.norge.no/nb/digital-borgar/reservasjon'}>
35-
Gå til norge.no for å fjerne reservasjonen.
36-
</Link>
51+
<p>{tekst.tekst}</p>
52+
<Link href={linkReservertIKrr}>{tekst.lenkeTekst}</Link>
3753
</Alert>
38-
);
39-
}
40-
if (window.localStorage.getItem('registrertKRR') === 'false') {
41-
console.log("erKRRBruker i krr 121231342g eviwjfbo2ebvojwbvohjwr")
42-
return (
43-
<Alert variant="warning" className="mx-2 mb-5 max-w-2xl">
44-
<Heading spacing size="small" level="3">
45-
Vi har ikke din kontaktinformasjon &nbsp;
46-
</Heading>
47-
Du kan ikke sende meldinger i dialogen fordi du ikke har registrert
48-
e-post eller telefonnummeret ditt i kontakt og reservasjonsregisteret (KRR).
49-
<Link href={'https://www.norge.no/nb/digital-borgar/reservasjon'}>
50-
Gå til norge.no for å fjerne reservasjonen.
51-
</Link>
52-
</Alert>
53-
);
54+
);
5455
}
5556
};
5657

src/moduler/aktivitet/aktivitet-slice.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ function nyStateMedOppdatertAktivitet(state: AktivitetState, aktivitet: VeilarbA
8888
});
8989
}
9090

91-
const getOrCreatePeriode = (state: typeof initialState, oppfolgingsperiodeId: string): PeriodeEntityState => {
91+
// Exported only for testing setup
92+
export const getOrCreatePeriode = (state: typeof initialState, oppfolgingsperiodeId: string): PeriodeEntityState => {
9293
return (
9394
selectOppfolgingsperiodeById(state, oppfolgingsperiodeId) || {
9495
// Hvis ingen oppfølgingsperiode funnet, opprett en ny

src/moduler/aktivitet/ny-aktivitet/NyAktivitetForm.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { configureStore } from '@reduxjs/toolkit';
77
import { RootState } from '../../../store';
88
import reducer from '../../../reducer';
99
import { aktivitetAdapter, oppfolgingsdperiodeAdapter } from '../aktivitet-slice';
10-
import { defaultAktivPeriode, emptyLoadedVeilederState } from '../../../testUtils/defaultInitialStore';
10+
import { defaultAktivPeriode, emptyHalfLoadedVeilederState } from '../../../testUtils/defaultInitialStore';
1111
import { Status } from '../../../createGenericSlice';
1212
import { mockOppfolging } from '../../../mocks/data/oppfolging';
1313
import { setupServer } from 'msw/node';
@@ -16,7 +16,7 @@ import { lagNyAktivitet } from '../aktivitet-actions';
1616

1717
const initialStore = {
1818
data: {
19-
...emptyLoadedVeilederState.data,
19+
...emptyHalfLoadedVeilederState.data,
2020
aktiviteter: oppfolgingsdperiodeAdapter.setOne(
2121
oppfolgingsdperiodeAdapter.getInitialState({
2222
status: Status.NOT_STARTED,

0 commit comments

Comments
 (0)