diff --git a/components/pageComponents/standard/Vedlegg/Vedlegg.test.tsx b/components/pageComponents/standard/Vedlegg/Vedlegg.test.tsx new file mode 100644 index 00000000..a447b81c --- /dev/null +++ b/components/pageComponents/standard/Vedlegg/Vedlegg.test.tsx @@ -0,0 +1,137 @@ +import { renderStepSoknadStandard, screen } from 'setupTests'; +import { Step, StepWizard } from 'components/StepWizard'; +import React from 'react'; +import { toHaveNoViolations } from 'jest-axe'; +import messagesNb from 'translations/nb.json'; +import userEvent from '@testing-library/user-event'; +import Vedlegg from './Vedlegg'; +import { SØKNAD_CONTEXT_VERSION } from '../../../../context/soknadContextCommon'; +import { GenericSoknadContextState } from '../../../../types/SoknadContext'; +import { Soknad } from '../../../../types/Soknad'; +import { Relasjon } from '../Barnetillegg/AddBarnModal'; +import { JaEllerNei } from '../../../../types/Generic'; + +expect.extend(toHaveNoViolations); + +const requiredVedlegg = [ + { + filterType: 'FORELDER', + type: 'bc68d022-7f2e-43fa-8e83-067d405850b1', + description: 'Fødselsattest eller adopsjonsbevis for Tor dafaf', + }, + { + filterType: 'FOSTERFORELDER', + type: '56f7e798-4d50-43bd-9734-27cb4de437b3', + description: 'Dokumentasjon på at du er fosterforelder for tor gfsdg, og fra når', + }, + { + type: 'OMSORGSSTØNAD', + description: 'Kopi av avtalen om omsorgsstønad fra kommunen din', + }, + { + type: 'UTLANDSSTØNAD', + description: 'Dokumentasjon av ytelser fra utenlandske trygdemyndigheter', + }, + { + type: 'SYKESTIPEND', + description: 'Kopi av vedtaket eller søknaden om sykestipend fra Lånekassen', + }, + { + type: 'LÅN', + description: 'Dokumentasjon på studielån fra Lånekassen', + }, + { + type: 'LØNN_OG_ANDRE_GODER', + // eslint-disable-next-line max-len + description: 'Dokumentasjon av ekstra utbetalinger fra arbeidsgiver', + }, + { + type: 'AVBRUTT_STUDIE', + description: 'Bekreftelse fra studiested på hvilken dato studiet ble avbrutt fra.', + }, +]; +const soknadContextInitial: GenericSoknadContextState = { + version: SØKNAD_CONTEXT_VERSION, + type: undefined, + søknad: { + manuelleBarn: [ + { + navn: { + fornavn: 'Barn', + etternavn: 'Barnnes', + }, + fødseldato: new Date(), + relasjon: Relasjon.FORELDER, + harInntekt: JaEllerNei.NEI, + internId: 'bc68d022-7f2e-43fa-8e83-067d405850b1', + }, + { + navn: { + fornavn: 'Barn', + etternavn: 'Barnesen', + }, + fødseldato: new Date(), + relasjon: Relasjon.FOSTERFORELDER, + harInntekt: JaEllerNei.NEI, + internId: '56f7e798-4d50-43bd-9734-27cb4de437b3', + }, + ], + }, + requiredVedlegg, + søknadUrl: undefined, +}; + +describe('Vedlegg', () => { + const user = userEvent.setup(); + + const Component = () => { + return ( + + + + + + ); + }; + + it('Omsorgsstønad input-boks er synlig', async () => { + renderStepSoknadStandard('VEDLEGG', , {}, soknadContextInitial); + const textOmsorgsstønad = messagesNb.søknad.andreUtbetalinger.stønad.values.omsorgsstønad; + expect(await screen.findByRole('heading', { level: 1, name: textOmsorgsstønad })).toBeVisible(); + }); + it('Avbrutt studie input-boks er synlig', async () => { + renderStepSoknadStandard('VEDLEGG', , {}, soknadContextInitial); + const text = messagesNb.søknad.student.vedlegg.name; + expect(await screen.findByRole('heading', { level: 1, name: text })).toBeVisible(); + }); + it('Utenlandsstønad input-boks er synlig', async () => { + renderStepSoknadStandard('VEDLEGG', , {}, soknadContextInitial); + const text = messagesNb.søknad.andreUtbetalinger.stønad.values.utland; + expect(await screen.findByRole('heading', { level: 1, name: text })).toBeVisible(); + }); + it('Sykestipend input-boks er synlig', async () => { + renderStepSoknadStandard('VEDLEGG', , {}, soknadContextInitial); + const text = messagesNb.søknad.andreUtbetalinger.stønad.values.stipend; + expect(await screen.findByRole('heading', { level: 1, name: text })).toBeVisible(); + }); + it('Fosterforelder input-boks er synlig', async () => { + renderStepSoknadStandard('VEDLEGG', , {}, soknadContextInitial); + const text = messagesNb.søknad.vedlegg.andreBarn.title.FOSTERFORELDER; + expect(await screen.findByRole('heading', { level: 1, name: text })).toBeVisible(); + }); + it('Forelder input-boks er synlig', async () => { + renderStepSoknadStandard('VEDLEGG', , {}, soknadContextInitial); + const text = messagesNb.søknad.vedlegg.andreBarn.title.FORELDER; + expect(await screen.findByRole('heading', { level: 1, name: text })).toBeVisible(); + }); + it('Lønn og andre goder input-boks er synlig', async () => { + renderStepSoknadStandard('VEDLEGG', , {}, soknadContextInitial); + const text = messagesNb.søknad.andreUtbetalinger.lønn.title; + expect(await screen.findByRole('heading', { level: 1, name: text })).toBeVisible(); + }); + it('Lån input-boks er synlig', async () => { + renderStepSoknadStandard('VEDLEGG', , {}, soknadContextInitial); + const text = messagesNb.søknad.andreUtbetalinger.stønad.values.lån; + expect(await screen.findByRole('heading', { level: 1, name: text })).toBeVisible(); + }); +}); diff --git a/components/pageComponents/standard/Vedlegg/Vedlegg.tsx b/components/pageComponents/standard/Vedlegg/Vedlegg.tsx index e1480e47..555c1faa 100644 --- a/components/pageComponents/standard/Vedlegg/Vedlegg.tsx +++ b/components/pageComponents/standard/Vedlegg/Vedlegg.tsx @@ -43,7 +43,7 @@ const Vedlegg = ({ onBackClick }: Props) => { .filter((error): error is SøknadValidationError => error !== undefined); const harPåkrevdeVedlegg = søknadState.requiredVedlegg.length > 0; - + console.log('manuelle', søknadState?.søknad?.manuelleBarn); return ( { @@ -106,12 +106,29 @@ const Vedlegg = ({ onBackClick }: Props) => { files={søknadState.søknad?.vedlegg?.AVBRUTT_STUDIE || []} /> )} - + {søknadState?.requiredVedlegg?.find((e) => e.type === 'OMSORGSSTØNAD') && ( + { + addVedlegg(søknadDispatch, vedlegg, 'OMSORGSSTØNAD'); + }} + onDelete={(vedlegg) => { + deleteVedlegg(søknadDispatch, vedlegg, 'OMSORGSSTØNAD'); + }} + deleteUrl={deleteUrl} + uploadUrl={uploadUrl} + readAttachmentUrl={readAttachmentUrl} + files={søknadState.søknad?.vedlegg?.OMSORGSSTØNAD || []} + /> + )} {søknadState?.requiredVedlegg?.find((e) => e.type === 'LØNN_OG_ANDRE_GODER') && ( { addVedlegg(søknadDispatch, vedlegg, 'LØNN_OG_ANDRE_GODER'); diff --git a/setupTests.tsx b/setupTests.tsx index 79052d4d..ff4a116b 100644 --- a/setupTests.tsx +++ b/setupTests.tsx @@ -5,7 +5,7 @@ import '@testing-library/jest-dom'; import { render as rtlRender, configure } from '@testing-library/react'; import { AppStateContext, AppStateContextState } from 'context/appStateContext'; -import { SoknadContextData } from 'context/soknadContextCommon'; +import { SoknadContextData, soknadContextInititalState } from 'context/soknadContextCommon'; import { soknadContextInititalStateStandard, SoknadContextStandard, @@ -15,7 +15,7 @@ import { StepWizardContext, StepWizardContextState } from 'context/stepWizardCon import { ReactElement, useReducer } from 'react'; import { IntlProvider } from 'react-intl'; import { Soknad } from 'types/Soknad'; -import { SøknadType } from 'types/SoknadContext'; +import { GenericSoknadContextState, SøknadType } from 'types/SoknadContext'; import { messages, flattenMessages } from 'utils/message'; import links from 'translations/links.json'; jest.setTimeout(10 * 1000); @@ -40,10 +40,12 @@ function render(ui: ReactElement, { locale = 'nb', ...options } = {}) { function renderStepSoknadStandard( stepName: string, ui: ReactElement, - { locale = 'nb', ...options } = {} + { locale = 'nb', ...options } = {}, + initialState?: GenericSoknadContextState ) { function ProvidersWrapper({ children }: { children: ReactElement }): ReactElement { - const [state, dispatch] = useReducer(soknadReducerStandard, soknadContextInititalStateStandard); + const initialSoknadContext = initialState || soknadContextInititalState; + const [state, dispatch] = useReducer(soknadReducerStandard, initialSoknadContext); const soknadContext: SoknadContextData = { søknadState: state, søknadDispatch: dispatch, diff --git a/translations/nb.json b/translations/nb.json index c2edc38d..addea4d2 100644 --- a/translations/nb.json +++ b/translations/nb.json @@ -324,6 +324,7 @@ "text": "Hvis du får utbetalinger fra NAV, arbeidsgiver eller andre, kan din AAP bli redusert. Vi spør om dette fordi du ikke alltid har krav på å få flere typer utbetalinger samtidig. Vi prøver å unngå feilutbetalinger." }, "lønn": { + "title": "Lønn og andre goder", "label": "Har du fått eller skal du få ekstra utbetalinger fra arbeidsgiver?", "readMore": { "title": "Hva menes med \"ekstra utbetalinger\"?", diff --git a/translations/nn.json b/translations/nn.json index c18b8aa5..5c7c7e44 100644 --- a/translations/nn.json +++ b/translations/nn.json @@ -324,6 +324,7 @@ "text": "Dersom du får utbetalingar frå NAV, arbeidsgivar eller andre, kan AAP-en din bli redusert. Vi spør om dette fordi du ikkje alltid har krav på å få fleire typar utbetalingar samstundes. Vi prøver å unngå feilutbetalingar." }, "lønn": { + "title": "Lønn og andre goder", "label": "Har du fått eller skal du få ekstra utbetalingar frå arbeidsgivar?", "readMore": { "title": "Kva vil «ekstra utbetalingar» seie?",