Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
798 changes: 260 additions & 538 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@
"import-sort-style-module": "^6.0.0",
"jsdom": "^22.1.0",
"lint-staged": "^14.0.1",
"msw": "^1.2.3",
"msw": "^2.2.14",
"postcss": "^8.4.33",
"prettier": "^3.2.4",
"prettier-plugin-import-sort": "0.0.7",
Expand Down
12 changes: 7 additions & 5 deletions src/api/aktivitetAPI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,12 @@ import { Forhaandsorientering } from '../datatypes/forhaandsorienteringTypes';
import { MoteAktivitet, SamtalereferatAktivitet, VeilarbAktivitet } from '../datatypes/internAktivitetTypes';
import { AKTIVITET_BASE_URL } from '../environment';
import { fetchToJson, postAsJson, putAsJson } from './utils';
import { StillingFraNavSoknadsstatus } from '../datatypes/aktivitetTypes';
import { hentFraSessionStorage, LocalStorageElement } from '../mocks/demo/localStorage';

export const hentAktivitet = (aktivitetId: string): Promise<VeilarbAktivitet> =>
fetchToJson(`${AKTIVITET_BASE_URL}/aktivitet/${aktivitetId}`);

export const hentAktiviteter = (): Promise<{ aktiviteter: VeilarbAktivitet[] }> =>
fetchToJson(`${AKTIVITET_BASE_URL}/aktivitet`);

export const lagNyAktivitet = (aktivitet: VeilarbAktivitet, oppfolgingsperiodeId: string): Promise<VeilarbAktivitet> =>
postAsJson(`${AKTIVITET_BASE_URL}/aktivitet/${oppfolgingsperiodeId}/ny`, aktivitet);

Expand Down Expand Up @@ -68,15 +66,19 @@ export const oppdaterReferat = (
export const hentVersjonerTilAktivitet = (aktivitet: VeilarbAktivitet): Promise<VeilarbAktivitet[]> =>
fetchToJson(`${AKTIVITET_BASE_URL}/aktivitet/${aktivitet.id}/versjoner`);

export interface OppdaterStillingFraNavSoknadsstatusPayload {
aktivitetVersjon: string;
soknadsstatus: StillingFraNavSoknadsstatus;
}
export const oppdaterStillingFraNavSoknadsstatus = (
aktivitetId: string,
aktivitetVersjon: string,
soknadsstatus: string,
soknadsstatus: StillingFraNavSoknadsstatus,
): Promise<VeilarbAktivitet> =>
putAsJson(`${AKTIVITET_BASE_URL}/stillingFraNav/soknadStatus?aktivitetId=${aktivitetId}`, {
aktivitetVersjon,
soknadsstatus,
});
} as OppdaterStillingFraNavSoknadsstatusPayload);

export const hentArenaAktiviteter = (): Promise<ArenaAktivitet[]> =>
postAsJson(`${AKTIVITET_BASE_URL}/arena/tiltak`, { fnr: hentFraSessionStorage(LocalStorageElement.FNR) });
Expand Down
7 changes: 2 additions & 5 deletions src/api/personAPI.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
import { HarLoggetInnRespons, RegoppslagDto } from '../datatypes/types';
import { RegoppslagDto } from '../datatypes/types';
import { PERSON_BASE_URL } from '../environment';
import { fetchToJson, fetchToJsonPlain } from './utils';
import { fetchToJsonPlain } from './utils';

export const hentPerson = (fnr: string) => fetchToJsonPlain(`${PERSON_BASE_URL}/v2/person?fnr=${fnr}`);

export const hentAdresse = (fnr: string): Promise<RegoppslagDto> =>
fetchToJsonPlain(`${PERSON_BASE_URL}/v2/person/postadresse?fnr=${fnr}`);

export const hentHarNivaa4 = (fnr: string): Promise<HarLoggetInnRespons> =>
fetchToJson(`${PERSON_BASE_URL}/person/${fnr}/harNivaa4`);
4 changes: 2 additions & 2 deletions src/hovedside/Hovedside.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { WrappedHovedside } from '../testUtils/WrappedHovedside';
import { act, render } from '@testing-library/react';
import { emptyLoadedVeilederState } from '../testUtils/defaultInitialStore';
import { setupServer } from 'msw/node';
import { rest } from 'msw';
import { http } from 'msw';
import { failOrGrahpqlResponse } from '../mocks/utils';
import { configureStore } from '@reduxjs/toolkit';
import reducer from '../reducer';
Expand All @@ -31,7 +31,7 @@ const initialState = {
const server = setupServer(
...[
// If handlers on same route are declared twice the first one is used
rest.post(
http.post(
'/veilarbaktivitet/graphql',
failOrGrahpqlResponse(
() => true,
Expand Down
68 changes: 35 additions & 33 deletions src/mocks/aktivitet.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { addDays, subDays } from 'date-fns';
import { RestRequest } from 'msw';
import { DefaultBodyType, PathParams, StrictRequest } from 'msw';

import {
AktivitetStatus,
Expand Down Expand Up @@ -38,6 +38,7 @@ import { enLestForhaandsorientering, enUlestForhaandsorientering } from './forha
import { etSamtalereferat } from './samtalereferatFixtures';
import { enSokeAktivitet } from './sokeAktivitetFixtures';
import { rndId } from './utils';
import { OppdaterStillingFraNavSoknadsstatusPayload } from '../api/aktivitetAPI';

const eksternBruker = erEksternBruker();
const bruker: BrukerType = eksternBruker ? 'BRUKER' : 'NAV';
Expand Down Expand Up @@ -492,30 +493,28 @@ export function wrapAktivitet<T extends AlleAktiviteter>(a: T): T {
} as unknown as T;
}

export const getAktivitet = (req: RestRequest) => {
const aktivitetId = req.params.aktivitetId;

export const getAktivitet = (_: StrictRequest<DefaultBodyType>, params: PathParams) => {
const aktivitetId = params.aktivitetId;
return aktiviteter.find((aktivitet) => aktivitet.id === aktivitetId);
};

export const getAktivitetVersjoner = (req: RestRequest) => {
const aktivitetId = req.params.aktivitetId;

export const getAktivitetVersjoner = (_: StrictRequest<DefaultBodyType>, params: PathParams) => {
const aktivitetId = params.aktivitetId;
return versjoner.filter((aktivitet) => aktivitet.id === aktivitetId);
};

export const opprettAktivitet = async (req: RestRequest) => {
export const opprettAktivitet = async (req: StrictRequest<object>) => {
const body = await req.json();

const nyAktivitet = wrapAktivitet({
id: rndId(),
opprettetDato: new Date(),
opprettetDato: new Date().toISOString(),
endretAvType: bruker,
endretDato: new Date().toISOString(),
endretAv: bruker,
versjon: '1',
erLestAvBruker: eksternBruker,
transaksjonsType: 'OPPRETTET',
transaksjonsType: FellesTransaksjonsTyper.OPPRETTET,
oppfolgingsperiodeId: 'a2aa22a2-2aa2-4e02-8cc2-d44ef605fa33',
...body,
});
Expand Down Expand Up @@ -556,8 +555,8 @@ function lagNyVersion(aktivitet: VeilarbAktivitet): VeilarbAktivitet {
};
}

export const oppdaterAktivitet = async (req: RestRequest) => {
const aktivitetId = req.params.aktivitetId;
export const oppdaterAktivitet = async (req: StrictRequest<object>, params: PathParams) => {
const aktivitetId = params.aktivitetId;
const body = await req.json();

const nyeAktivitetAttributter = {
Expand All @@ -567,8 +566,8 @@ export const oppdaterAktivitet = async (req: RestRequest) => {
return doOppdaterInternMockStateOgReturnerNyAktivitet(aktivitetId as string, nyeAktivitetAttributter);
};

export const oppdaterAktivitetStatus = async (req: RestRequest) => {
const aktivitetId = req.params.aktivitetId;
export const oppdaterAktivitetStatus = async (req: StrictRequest<object>, params: PathParams) => {
const aktivitetId = params.aktivitetId;
const body = await req.json();

const nyeAktivitetAttributter = {
Expand All @@ -578,8 +577,8 @@ export const oppdaterAktivitetStatus = async (req: RestRequest) => {
return doOppdaterInternMockStateOgReturnerNyAktivitet(aktivitetId as string, nyeAktivitetAttributter);
};

export const oppdaterEtikett = async (req: RestRequest) => {
const aktivitetId = req.params.aktivitetId;
export const oppdaterEtikett = async (req: StrictRequest<StillingAktivitet>, params: PathParams) => {
const aktivitetId = params.aktivitetId;
const body: StillingAktivitet = await req.json();

const nyeAktivitetAttributter: StillingAktivitet = {
Expand All @@ -589,8 +588,8 @@ export const oppdaterEtikett = async (req: RestRequest) => {
return doOppdaterInternMockStateOgReturnerNyAktivitet(aktivitetId as string, nyeAktivitetAttributter);
};

export const oppdaterAvtaltMedNav = async (req: RestRequest) => {
const aktivitetId = req.url.searchParams.get('aktivitetId');
export const oppdaterAvtaltMedNav = async (req: StrictRequest<DefaultBodyType>) => {
const aktivitetId = new URL(req.url).searchParams.get('aktivitetId');
const body: any = await req.json();

const nyeAktivitetAttributter: Partial<VeilarbAktivitet> = {
Expand All @@ -602,8 +601,8 @@ export const oppdaterAvtaltMedNav = async (req: RestRequest) => {
return doOppdaterInternMockStateOgReturnerNyAktivitet(aktivitetId as string, nyeAktivitetAttributter);
};

export const oppdaterCVKanDelesSvar = async (req: RestRequest) => {
const aktivitetId = req.url.searchParams.get('aktivitetId');
export const oppdaterCVKanDelesSvar = async (req: StrictRequest<CvKanDelesData>) => {
const aktivitetId = new URL(req.url).searchParams.get('aktivitetId');
const cvKanDelesData: CvKanDelesData = await req.json();

const gammelAktivitet = aktiviteter.find((akivitet) => akivitet.id === aktivitetId) as StillingFraNavAktivitet;
Expand All @@ -626,24 +625,27 @@ export const oppdaterCVKanDelesSvar = async (req: RestRequest) => {
return doOppdaterInternMockStateOgReturnerNyAktivitet(aktivitetId as string, nyeAktivitetAttributter);
};

export const oppdaterStillingFraNavSoknadsstatus = async (req: RestRequest) => {
const aktivitetId = req.url.searchParams.get('aktivitetId');
export const oppdaterStillingFraNavSoknadsstatus = async (
req: StrictRequest<OppdaterStillingFraNavSoknadsstatusPayload>,
) => {
const aktivitetId = new URL(req.url).searchParams.get('aktivitetId');
const body = await req.json();

const gammelAktivitet = aktiviteter.find((aktivitet) => aktivitet.id === aktivitetId);
const nyeAktivitetAttributter = {
const gammelAktivitet = aktiviteter.find((aktivitet) => aktivitet.id === aktivitetId) as StillingFraNavAktivitet;
const nyeAktivitetAttributter: StillingFraNavAktivitet = {
...gammelAktivitet,
stillingFraNavData: {
...(gammelAktivitet as StillingFraNavAktivitet).stillingFraNavData,
...gammelAktivitet.stillingFraNavData,
soknadsstatus: body.soknadsstatus,
},
transaksjonsType: StillingFraNavTransaksjonsType.SOKNADSSTATUS_ENDRET,
};
return doOppdaterInternMockStateOgReturnerNyAktivitet(aktivitetId as string, nyeAktivitetAttributter);
};

export const oppdaterLestFho = async (req: RestRequest) => {
export const oppdaterLestFho = async (req: StrictRequest<VeilarbAktivitet>) => {
const body = await req.json();
const { aktivitetId } = body;
const { id } = body;

const gammelAktivitet = aktiviteter.find((akivitet) => akivitet.id === aktivitetId) as VeilarbAktivitet;
const nyeAktivitetAttributter: VeilarbAktivitet = {
Expand All @@ -654,11 +656,11 @@ export const oppdaterLestFho = async (req: RestRequest) => {
},
transaksjonsType: FellesTransaksjonsTyper.FORHAANDSORIENTERING_LEST,
};
return doOppdaterInternMockStateOgReturnerNyAktivitet(aktivitetId, nyeAktivitetAttributter);
return doOppdaterInternMockStateOgReturnerNyAktivitet(id, nyeAktivitetAttributter);
};

export const publiserReferat = (req: RestRequest) => {
const aktivitetId = req.params.aktivitetId;
export const publiserReferat = (req: StrictRequest<DefaultBodyType>, params: PathParams) => {
const aktivitetId = params.aktivitetId;

const nyeAktivitetAttributter = {
erReferatPublisert: true,
Expand All @@ -667,9 +669,9 @@ export const publiserReferat = (req: RestRequest) => {
return doOppdaterInternMockStateOgReturnerNyAktivitet(aktivitetId as string, nyeAktivitetAttributter);
};

export const endreReferat = async (req: RestRequest) => {
const aktivitetId = req.params.aktivitetId;
const body: MoteAktivitet = await req.json();
export const endreReferat = async (req: StrictRequest<MoteAktivitet>, params: PathParams) => {
const aktivitetId = params.aktivitetId;
const body = await req.json();

const nyeAktivitetAttributter: MoteAktivitet = {
...body,
Expand Down
14 changes: 6 additions & 8 deletions src/mocks/data/arena.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { addDays, subDays } from 'date-fns';
import { RestRequest } from 'msw';
import { DefaultBodyType, StrictRequest } from 'msw';

import { ArenaAktivitet, ArenaEtikett } from '../../datatypes/arenaAktivitetTypes';
import { Forhaandsorientering } from '../../datatypes/forhaandsorienteringTypes';
import { Forhaandsorientering, ForhaandsorienteringType } from '../../datatypes/forhaandsorienteringTypes';
import { visArenaAktiviteter } from '../demo/localStorage';

export const arenaMockAktiviteter = [
Expand Down Expand Up @@ -293,10 +293,9 @@ export const arenaMockAktiviteter = [

export const arena = !visArenaAktiviteter() ? [] : arenaMockAktiviteter;

export const oppdaterArenaaktivitet = async (req: RestRequest) => {
const arenaaktivitetId = req.url.searchParams.get('arenaaktivitetId');
export const oppdaterArenaaktivitet = async (req: StrictRequest<{ type: ForhaandsorienteringType; tekst: string }>) => {
const arenaaktivitetId = new URL(req.url).searchParams.get('arenaaktivitetId');
const body = await req.json();

const aktivitet = arena.find((arenaaktivitet) => arenaaktivitet.id === arenaaktivitetId) as ArenaAktivitet;

aktivitet.forhaandsorientering = {
Expand All @@ -308,9 +307,8 @@ export const oppdaterArenaaktivitet = async (req: RestRequest) => {
return aktivitet;
};

export const oppdaterLestFhoArenaaktivitet = (req: RestRequest) => {
const aktivitetId = req.url.searchParams.get('aktivitetId');

export const oppdaterLestFhoArenaaktivitet = (req: StrictRequest<DefaultBodyType>) => {
const aktivitetId = new URL(req.url).searchParams.get('aktivitetId');
const lestAktivitet = arena.find((arenaaktivitet) => arenaaktivitet.id === aktivitetId) as ArenaAktivitet;

lestAktivitet.forhaandsorientering = {
Expand Down
62 changes: 1 addition & 61 deletions src/mocks/data/dialog.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import { ResponseComposition, RestContext, RestRequest } from 'msw';

import { erEksternBruker, ulesteDialoger } from '../demo/localStorage';
import { rndId } from '../utils';
import { ulesteDialoger } from '../demo/localStorage';

const dialoger = [
{
Expand Down Expand Up @@ -193,61 +190,4 @@ const dialoger = [
},
];

export const opprettDialog = async (req: RestRequest) => {
const body = await req.json();

const dialogId = body.dialogId === undefined ? rndId() : `${body.dialogId}`;
const nyHenvendelse = {
id: rndId(),
dialogId: dialogId,
avsender: erEksternBruker() ? 'BRUKER' : 'VEILEDER',
avsenderId: 'Z123456',
overskrift: body.overskrift,
tekst: body.tekst,
lest: !ulesteDialoger(),
sendt: new Date(),
} as any;

const eksisterendeDialoger = dialoger.filter((dialog) => body.dialogId !== undefined && dialog.id === dialogId);

if (eksisterendeDialoger.length === 1) {
const oldDialog = eksisterendeDialoger[0];
oldDialog.sisteTekst = body.tekst;
oldDialog.sisteDato = nyHenvendelse.sendt;
oldDialog.henvendelser.push(nyHenvendelse);
return oldDialog;
} else {
const nyDialog = {
id: nyHenvendelse.dialogId,
ferdigBehandlet: !body.ikkeFerdigbehandlet,
venterPaSvar: !!body.venterPaSvar,
aktivitetId: body.aktivitetId === undefined ? null : body.aktivitetId,
overskrift: body.overskrift,
sisteTekst: body.tekst,
sisteDato: new Date(),
opprettetDato: new Date(),
historisk: false,
lest: !ulesteDialoger(),
lestAvBrukerTidspunkt: null,
erLestAvBruker: false,
henvendelser: [nyHenvendelse],
egenskaper: body.egenskaper === undefined ? [] : body.egenskaper,
} as any;
dialoger.push(nyDialog);
return nyDialog;
}
};

export function setVenterPaaSvar(req: RestRequest, _res: ResponseComposition, _ctx: RestContext) {
const dialog = dialoger.filter((d) => d.id === req.params.id)[0];
dialog.venterPaSvar = req.params.bool === 'true';
return dialog;
}

export function setFerdigBehandlet(req: RestRequest, _res: ResponseComposition, _ctx: RestContext) {
const dialog = dialoger.filter((d) => d.id === req.params.id)[0];
dialog.ferdigBehandlet = req.params.bool === 'true';
return dialog;
}

export default dialoger;
4 changes: 2 additions & 2 deletions src/mocks/data/mal.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { RestRequest } from 'msw';
import { StrictRequest } from 'msw';

import { Mal } from '../../datatypes/oppfolgingTypes';
import { erEksternBruker, ingenMal } from '../demo/localStorage';
Expand Down Expand Up @@ -29,7 +29,7 @@ export function sisteMal() {
return maler[maler.length - 1];
}

export async function opprettMal(req: RestRequest) {
export async function opprettMal(req: StrictRequest<{ mal: string | undefined }>) {
const body = await req.json();

const nyMal = {
Expand Down
4 changes: 2 additions & 2 deletions src/mocks/data/malverk.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { RestRequest } from 'msw';
import { StrictRequest } from 'msw';

const egenMalverk = [
{
Expand Down Expand Up @@ -52,7 +52,7 @@ const sokeavtaleMalverk = [
},
];

export const hentMalverkMedType = async (req: RestRequest) => {
export const hentMalverkMedType = async (req: StrictRequest<{ type: 'EGEN' | 'SOKEAVTALE' }>) => {
const body = await req.json();
const { type } = body;

Expand Down
Loading