Skip to content

Commit

Permalink
Merge branch 'sif-common-types' of github.com:navikt/sif-brukerdialog…
Browse files Browse the repository at this point in the history
… into sif-common-types
  • Loading branch information
frodehansen2 committed Sep 23, 2024
2 parents 780509c + 35b13c4 commit 7e986b8
Show file tree
Hide file tree
Showing 20 changed files with 514 additions and 14 deletions.
2 changes: 1 addition & 1 deletion apps/omsorgspengerutbetaling-soknad/vitest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { defineConfig } from 'vitest/config';

export default defineConfig({
test: {
exclude: ['./e2e/**/*', './build/**/*', './dist/**/*', '**/*.spec.tsx', '**/*.spec.ts'],
exclude: ['./e2e/**/*', './build/**/*', './dist/**/*', '**/*.spec.tsx', '**/*.spec.ts', 'node_modules'],
globals: true,
environment: 'jsdom',
css: false,
Expand Down
2 changes: 1 addition & 1 deletion apps/omsorgspengesoknad/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"@navikt/ds-react": "7.0.1",
"@navikt/ds-tailwind": "7.0.1",
"@navikt/sif-app-register": "*",
"@navikt/sif-common": "workspace:*",
"@navikt/sif-common": "*",
"@navikt/sif-common-amplitude": "*",
"@navikt/sif-common-core-ds": "*",
"@navikt/sif-common-formik-ds": "*",
Expand Down
29 changes: 29 additions & 0 deletions apps/sif-demo-app/api-mock/data/søker1/arbeidsgivere-mock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"organisasjoner": [
{ "navn": "SJOKKERENDE ELEKTRIKER", "organisasjonsnummer": "947064649", "ansattFom": "2002-04-20" }
],
"frilansoppdrag": [
{
"type": "type oppdrag",
"organisasjonsnummer": "991012133",
"navn": "Hurdal frilanssenter",
"ansattFom": "2022-01-01",
"ansattTom": "2022-01-15"
},
{
"type": "type oppdrag",
"organisasjonsnummer": "991012134",
"navn": "Svandalen frilanssenter",
"ansattFom": "2022-01-01",
"ansattTom": "2022-01-15"
}
],
"privatarbeidsgiver": [
{
"navn": "Jon Jonsen",
"ansattFom": "2021-01-01",
"ansattTom": "2021-12-31",
"offentligIdent": "12345678910"
}
]
}
19 changes: 19 additions & 0 deletions apps/sif-demo-app/api-mock/data/søker1/barn-mock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"barn": [
{
"fornavn": "ALFABETISK",
"etternavn": "FAGGOTT",
"aktørId": "2811762539343",
"fødselsdato": "2019-06-08",
"fødselsnummer": "08861999573"
},
{
"fornavn": "Barn",
"mellomnavn": "Barne",
"etternavn": "Barnesen",
"fødselsdato": "2020-04-20",
"aktørId": "123"
},
{ "fødselsdato": "2015-01-02", "fornavn": "Mock", "etternavn": "Mocknes", "aktørId": "2", "mellomnavn": "" }
]
}
8 changes: 8 additions & 0 deletions apps/sif-demo-app/api-mock/data/søker1/søker-mock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"aktørId": "2320509955297",
"fødselsdato": "1995-06-02",
"fødselsnummer": "02869599259",
"fornavn": "PRESENTABEL",
"mellomnavn": null,
"etternavn": "HOFTE"
}
188 changes: 188 additions & 0 deletions apps/sif-demo-app/api-mock/mock-server.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
/* eslint-disable no-console */
const express = require('express');
const helmet = require('helmet');
const busboyCons = require('busboy');
const os = require('os');
const fs = require('fs');
const cors = require('cors');

const server = express();

server.use(express.json());
server.use(
helmet({
contentSecurityPolicy: true,
crossOriginEmbedderPolicy: false,
crossOriginResourcePolicy: false,
}),
);

server.use(
cors({
origin: 'http://localhost:8080',
methods: ['GET', 'POST', 'DELETE', 'PUT', 'OPTIONS'],
allowedHeaders: ['content-type', 'X-Brukerdialog-Git-Sha', 'x_correlation_id'],
credentials: true,
}),
);
server.options('*', cors());

const MELLOMLAGRING_JSON = `${os.tmpdir()}/omsorgspengesoknad-mellomlagring.json`;

const isJSON = (str) => {
try {
return JSON.parse(str) && !!str;
} catch (e) {
return false;
}
};

const writeFileAsync = async (path, text) => {
return new Promise((resolve, reject) => {
fs.writeFile(path, text, 'utf8', (err) => {
if (err) reject(err);
else resolve();
});
});
};

const readFileSync = (path) => {
return fs.readFileSync(path, 'utf8');
};

const existsSync = (path) => fs.existsSync(path);

const mockPath = `${__dirname}/data`;
const soker = 'søker1';

const søkerFileName = `søker-mock.json`;
const barnFileName = `barn-mock.json`;
const arbeidsgivereFileName = `arbeidsgivere-mock.json`;
const innvilgetVedtakFileName = `innvilget-vedtak-mock.json`;
const ikkeInnvilgetVedtakFileName = `ikke-innvilget-vedtak-mock.json`;

const readMockFile = (file, responseObject) => {
const filePath = `${mockPath}/${soker}/${file}`;
if (existsSync(filePath)) {
const body = readFileSync(filePath);
responseObject.send(JSON.parse(body));
} else {
responseObject.send({});
}
};

const startExpressServer = () => {
const port = process.env.PORT || 8099;

server.get('/oppslag/soker', (req, res) => {
setTimeout(() => {
readMockFile(søkerFileName, res);
}, 250);
});

server.get('/oppslag/barn', (req, res) => {
setTimeout(() => {
readMockFile(barnFileName, res);
}, 250);
});

server.get('/oppslag/arbeidsgiver', (req, res) => {
setTimeout(() => {
readMockFile(arbeidsgivereFileName, res);
}, 250);
});

/** --- Send søknad ---------- */

server.post('/omsorgspenger-utvidet-rett/innsending', (req, res) => {
const body = req.body;
console.log('[POST] body', body);
setTimeout(() => {
res.sendStatus(200);
}, 2500);
});

const errorResponse = {
type: '/problem-details/invalid-request-parameters',
title: 'invalid-request-parameters',
status: 400,
detail: 'Requesten inneholder ugyldige paramtere.',
instance: 'about:blank',
invalid_parameters: [
'høyereRisikoForFraværBeskrivelse matcher ikke tilatt møønster: ^[\\p{Punct}\\p{L}\\p{M}\\p{N}\\p{Sc}\\p{Space}«»–§�\\u2018\\u2019\\u201a\\u201b\\u201c\\u201d\\u201e\\u201f\\u00b4\\u2026]*$',
],
};
server.post('/omsorgspenger-utvidet-rett/innsending-error', (req, res) => {
const body = req.body;
console.log('[POST] body', body);
setTimeout(() => {
res.status(400).send(errorResponse);
}, 100);
});

/** --- Vedlegg ---------- */

server.post('/vedlegg', (req, res) => {
res.set('Access-Control-Expose-Headers', 'Location');
res.set('Location', 'nav.no');
const busboy = busboyCons({ headers: req.headers });
busboy.on('finish', () => {
res.writeHead(200, {
Location: 'http://localhost:8089/vedlegg/eyJraWQiOiIxIiwidHlwIjoiSldUIiwiYWxnIjoibm9uZSJ9.eyJqdG',
});
res.end();
});
req.pipe(busboy);
});

server.delete('/vedlegg', (req, res) => {
res.sendStatus(200);
});

/** --- Mellomlagring ---------- */

server.get('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => {
if (existsSync(MELLOMLAGRING_JSON)) {
const body = readFileSync(MELLOMLAGRING_JSON);
res.send(JSON.parse(body));
} else {
res.send({});
}
});
server.post('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => {
const body = req.body;
const jsBody = isJSON(body) ? JSON.parse(body) : body;
writeFileAsync(MELLOMLAGRING_JSON, JSON.stringify(jsBody, null, 2));
res.sendStatus(200);
});
server.put('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => {
const body = req.body;
const jsBody = isJSON(body) ? JSON.parse(body) : body;
writeFileAsync(MELLOMLAGRING_JSON, JSON.stringify(jsBody, null, 2));
res.sendStatus(200);
});
server.delete('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => {
writeFileAsync(MELLOMLAGRING_JSON, JSON.stringify({}, null, 2));
res.sendStatus(200);
});

server.listen(port, () => {
console.log(`Express mock-api server listening on port: ${port}`);
});

/** --- Sjekk tidligere innvilget vedtak ---------- */

server.post('/k9-sak-innsyn-api/k9sak/omsorgsdager-kronisk-sykt-barn/har-gyldig-vedtak', (req, res) => {
const body = req.body;
console.log('[POST] body', body);
setTimeout(() => {
if (body.pleietrengendeAktørId === '2') {
readMockFile(innvilgetVedtakFileName, res);
} else {
readMockFile(ikkeInnvilgetVedtakFileName, res);
}
}, 2500);
});
};

startExpressServer();
5 changes: 5 additions & 0 deletions apps/sif-demo-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"version": "0.1.1",
"scripts": {
"dev": "node ./dev-server.cjs",
"dev-api": "PORT=8089 node ./api-mock/mock-server.cjs",
"dev:vite": "vite",
"dev:debug": "vite --debug",
"build": "vite build --base=/familie/sykdom-i-familien/soknad/sif-demo-app",
Expand All @@ -18,6 +19,10 @@
"@navikt/ds-react": "7.0.1",
"@navikt/ds-tailwind": "7.0.1",
"@navikt/nav-dekoratoren-moduler": "3.1.0",
"@navikt/sif-common": "*",
"@navikt/sif-common-core-ds": "*",
"@navikt/sif-common-soknad-ds": "*",
"@navikt/sif-common-ui": "*",
"clsx": "2.1.1",
"date-fns": "4.1.0",
"react": "18.3.1",
Expand Down
47 changes: 46 additions & 1 deletion apps/sif-demo-app/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,52 @@
import { Box, Tabs } from '@navikt/ds-react';
import LoadingSpinner from '@navikt/sif-common-core-ds/src/atoms/loading-spinner/LoadingSpinner';
import Page from '@navikt/sif-common-core-ds/src/components/page/Page';
import SøkerInfo from './components/SøkerInfo';
import { useInitialData } from './hooks/useInitialData';
import '@navikt/ds-css';
import BarnInfo from './components/BarnInfo';
import ArbeidsgiverInfo from './components/ArbeidsgiverInfo';

const App = () => {
return <p>Demo app</p>;
const { initialData, isLoading } = useInitialData();

if (isLoading || !initialData) {
return (
<Page title="Henter informasjon">
<center>
<LoadingSpinner size="3xlarge" />
</center>
</Page>
);
}

const { søker, barn, arbeidsgivere } = initialData;
return (
<Page title="Forside">
<Tabs defaultValue="arbeidsgivere">
<Tabs.List>
<Tabs.Tab value="søker" label="Søker" />
<Tabs.Tab value="barn" label="Barn" />
<Tabs.Tab value="arbeidsgivere" label="Arbeidsgivere" />
</Tabs.List>
<Tabs.Panel value="søker">
<Box paddingBlock="4">
<SøkerInfo søker={søker} />
</Box>
</Tabs.Panel>
<Tabs.Panel value="barn">
<Box paddingBlock="4">
<BarnInfo barn={barn} />
</Box>
</Tabs.Panel>
<Tabs.Panel value="arbeidsgivere">
<Box paddingBlock="4">
<ArbeidsgiverInfo arbeidsgivere={arbeidsgivere} />
</Box>
</Tabs.Panel>
</Tabs>
</Page>
);
};

export default App;
33 changes: 33 additions & 0 deletions apps/sif-demo-app/src/components/ArbeidsgiverInfo.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { Heading, VStack } from '@navikt/ds-react';
import { Arbeidsgivere } from '@navikt/sif-common';
import ShadowBox from './ShadowBox';

interface Props {
arbeidsgivere: Arbeidsgivere;
}

const Organisasjon = ({ organisasjon }: { organisasjon: Arbeidsgivere['organisasjoner'][0] }) => {
return (
<ShadowBox>
<VStack gap="2">
<Heading level="2" size="medium">
{organisasjon.navn}
</Heading>
</VStack>
</ShadowBox>
);
};

const ArbeidsgiverInfo = ({ arbeidsgivere: { organisasjoner } }: Props) => {
return (
<VStack gap="8">
{organisasjoner.length > 0 ? (
organisasjoner.map((o) => <Organisasjon key={o.organisasjonsnummer} organisasjon={o} />)
) : (
<ShadowBox>Ingen arbeidsgiver registrert</ShadowBox>
)}
</VStack>
);
};

export default ArbeidsgiverInfo;
Loading

0 comments on commit 7e986b8

Please sign in to comment.