Skip to content

Commit

Permalink
Legger til sanity tekster i "Om barnet" steget (#1439)
Browse files Browse the repository at this point in the history
* Legger til Sanity tekster i Oppfølgningsspørsmål

* Bytter andre-forelder tekster til å bruke Sanity

* Bytter til Sanity tekster for bosted og bodd sammen med andre forelder

* Legger til feilmdeldinger fra Sanity

* Legger til flere feilmeldinger fra Sanity

* Flytter useDatovelgerFeltMedUkjentForSanity til riktig mappe

* Fjerner feilmelding avhengighet

* Fikser alle tester utenom 1

* Fjerner test for å sjekke tekster i språkfil

* Legger til div wrapper for bostedInfo

* Fjerner unødvendige TODOs
  • Loading branch information
ole-kristian-rudjord authored Dec 13, 2024
1 parent 84d9e83 commit f9f2e84
Show file tree
Hide file tree
Showing 19 changed files with 525 additions and 342 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ const Datovelger: React.FC<DatoVelgerProps> = ({
<DatePicker.Input
{...inputProps}
id={felt.id}
data-testid={felt.id}
disabled={disabled}
size={'medium'}
label={label}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export const SkjemaCheckboxForSanity: React.FC<SkjemaFeltInputForSanityProps> =
<div>
<Checkbox
id={felt.id}
data-testid={felt.id}
checked={felt.verdi === ESvar.JA}
onChange={event =>
felt.validerOgSettFelt(event.target.checked ? ESvar.JA : ESvar.NEI)
Expand Down
5 changes: 3 additions & 2 deletions src/frontend/components/Felleskomponenter/SkjemaFieldset.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ import { Fieldset, VStack } from '@navikt/ds-react';
import SpråkTekst from './SpråkTekst/SpråkTekst';

const SkjemaFieldset: React.FC<{
legend?: ReactNode;
legendSpråkId: string;
språkValues?: { [key: string]: ReactNode };
dynamisk?: boolean;
children?: ReactNode;
}> = ({ legendSpråkId, språkValues, dynamisk = false, children }) => {
}> = ({ legend, legendSpråkId, språkValues, dynamisk = false, children }) => {
return (
<Fieldset
aria-live={dynamisk ? 'polite' : 'off'}
legend={<SpråkTekst id={legendSpråkId} values={språkValues} />}
legend={legend ? legend : <SpråkTekst id={legendSpråkId} values={språkValues} />}
>
<VStack gap="10">{children}</VStack>
</Fieldset>
Expand Down
73 changes: 33 additions & 40 deletions src/frontend/components/SøknadsSteg/OmBarnet/AndreForelder.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,13 @@ import { dagensDato } from '../../../utils/dato';
import { Arbeidsperiode } from '../../Felleskomponenter/Arbeidsperiode/Arbeidsperiode';
import Datovelger from '../../Felleskomponenter/Datovelger/Datovelger';
import { Pensjonsperiode } from '../../Felleskomponenter/Pensjonsmodal/Pensjonsperiode';
import { SkjemaCheckbox } from '../../Felleskomponenter/SkjemaCheckbox/SkjemaCheckbox';
import { SkjemaFeltInput } from '../../Felleskomponenter/SkjemaFeltInput/SkjemaFeltInput';
import TekstBlock from '../../Felleskomponenter/Sanity/TekstBlock';
import { SkjemaCheckboxForSanity } from '../../Felleskomponenter/SkjemaCheckbox/SkjemaCheckboxForSanity';
import { SkjemaFeltInputForSanity } from '../../Felleskomponenter/SkjemaFeltInput/SkjemaFeltInputForSanity';
import SkjemaFieldset from '../../Felleskomponenter/SkjemaFieldset';
import SpråkTekst from '../../Felleskomponenter/SpråkTekst/SpråkTekst';
import AndreForelderOppsummering from '../Oppsummering/OppsummeringSteg/OmBarnet/AndreForelderOppsummering';

import SammeSomAnnetBarnRadio from './SammeSomAnnetBarnRadio';
import { OmBarnetSpørsmålsId, omBarnetSpørsmålSpråkId } from './spørsmål';

const AndreForelder: React.FC<{
barn: IBarnMedISøknad;
Expand All @@ -46,10 +45,18 @@ const AndreForelder: React.FC<{
annetBarn => annetBarn.id === skjema.felter.sammeForelderSomAnnetBarn.verdi
);

const { barnetsAndreForelder } = tekster().OM_BARNET;
const {
barnetsAndreForelder,
navnAndreForelder,
foedselsnummerDnummerAndreForelder,
foedselsdatoAndreForelder,
} = tekster().OM_BARNET;

return (
<SkjemaFieldset legendSpråkId={'ombarnet.andre-forelder'}>
<SkjemaFieldset
legend={plainTekst(barnetsAndreForelder)}
legendSpråkId={'ombarnet.andre-forelder'}
>
{skjema.felter.sammeForelderSomAnnetBarn.erSynlig && (
<SammeSomAnnetBarnRadio
andreBarnSomErFyltUt={andreBarnSomErFyltUt}
Expand All @@ -62,42 +69,38 @@ const AndreForelder: React.FC<{
AlternativtSvarForInput.ANNEN_FORELDER ? (
<>
<div>
<SkjemaFeltInput
<SkjemaFeltInputForSanity
felt={skjema.felter.andreForelderNavn}
visFeilmeldinger={skjema.visFeilmeldinger}
labelSpråkTekstId={
omBarnetSpørsmålSpråkId[OmBarnetSpørsmålsId.andreForelderNavn]
}
label={<TekstBlock block={navnAndreForelder.sporsmal} />}
disabled={
skjema.felter.andreForelderKanIkkeGiOpplysninger.verdi === ESvar.JA
}
/>
<SkjemaCheckbox
labelSpråkTekstId={
omBarnetSpørsmålSpråkId[
OmBarnetSpørsmålsId.andreForelderKanIkkeGiOpplysninger
]
}
<SkjemaCheckboxForSanity
felt={skjema.felter.andreForelderKanIkkeGiOpplysninger}
label={<TekstBlock block={navnAndreForelder.checkboxLabel} />}
/>
</div>
{skjema.felter.andreForelderFnr.erSynlig && (
<div>
<SkjemaFeltInput
<SkjemaFeltInputForSanity
felt={skjema.felter.andreForelderFnr}
visFeilmeldinger={skjema.visFeilmeldinger}
labelSpråkTekstId={
omBarnetSpørsmålSpråkId[OmBarnetSpørsmålsId.andreForelderFnr]
label={
<TekstBlock
block={foedselsnummerDnummerAndreForelder.sporsmal}
/>
}
disabled={skjema.felter.andreForelderFnrUkjent.verdi === ESvar.JA}
/>
<SkjemaCheckbox
labelSpråkTekstId={
omBarnetSpørsmålSpråkId[
OmBarnetSpørsmålsId.andreForelderFnrUkjent
]
}
<SkjemaCheckboxForSanity
felt={skjema.felter.andreForelderFnrUkjent}
label={
<TekstBlock
block={foedselsnummerDnummerAndreForelder.checkboxLabel}
/>
}
/>
</div>
)}
Expand All @@ -106,28 +109,18 @@ const AndreForelder: React.FC<{
<Datovelger
felt={skjema.felter.andreForelderFødselsdato}
skjema={skjema}
label={
<SpråkTekst
id={
omBarnetSpørsmålSpråkId[
OmBarnetSpørsmålsId.andreForelderFødselsdato
]
}
/>
}
label={<TekstBlock block={foedselsdatoAndreForelder.sporsmal} />}
avgrensMaxDato={dagensDato()}
disabled={
skjema.felter.andreForelderFødselsdatoUkjent.verdi === ESvar.JA
}
strategy={'absolute'}
/>
<SkjemaCheckbox
labelSpråkTekstId={
omBarnetSpørsmålSpråkId[
OmBarnetSpørsmålsId.andreForelderFødselsdatoUkjent
]
}
<SkjemaCheckboxForSanity
felt={skjema.felter.andreForelderFødselsdatoUkjent}
label={
<TekstBlock block={foedselsdatoAndreForelder.checkboxLabel} />
}
/>
</div>
)}
Expand Down
60 changes: 21 additions & 39 deletions src/frontend/components/SøknadsSteg/OmBarnet/OmBarnet.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import {
silenceConsoleErrors,
spyOnUseApp,
TestProvidere,
TestProvidereMedEkteTekster,
} from '../../../utils/testing';
import { EøsBarnSpørsmålId } from '../EøsSteg/Barn/spørsmål';
import { OmBarnaDineSpørsmålId } from '../OmBarnaDine/spørsmål';
Expand Down Expand Up @@ -289,31 +288,14 @@ describe('OmBarnet', () => {
silenceConsoleErrors();
});

test(`Kan rendre Om Barnet og alle tekster finnes i språkfil`, async () => {
spyOnUseApp({
barnInkludertISøknaden: [jens],
sisteUtfylteStegIndex: 4,
});

await act(async () => {
render(
<TestProvidereMedEkteTekster mocketNettleserHistorikk={['/om-barnet/barn/1']}>
<OmBarnet barnetsId={'random-id-jens'} />
</TestProvidereMedEkteTekster>
);
});

expect(console.error).toHaveBeenCalledTimes(0);
});

test(`Kan navigere mellom to barn`, async () => {
spyOnUseApp({
barnInkludertISøknaden: [jens, line],
sisteUtfylteStegIndex: 4,
dokumentasjon: [],
});

const { findByText, findByTestId } = render(
const { findByTestId, getByTestId } = render(
<TestProvidere
tekster={{ 'ombarnet.sidetittel': 'Om {navn}' }}
mocketNettleserHistorikk={['/om-barnet/barn/1']}
Expand All @@ -326,8 +308,8 @@ describe('OmBarnet', () => {
const location = await findByTestId('location');
expect(JSON.parse(location.innerHTML).pathname).toEqual('/om-barnet/barn/1');

const jensTittel = await findByText('Om Jens');
expect(jensTittel).toBeInTheDocument();
const stegTittel = await getByTestId('steg-tittel');
expect(stegTittel).toBeInTheDocument();

const gåVidere = await findByTestId('neste-steg');
await act(() => gåVidere.click());
Expand All @@ -343,7 +325,7 @@ describe('OmBarnet', () => {
dokumentasjon: [],
});

const { findByText, findByTestId } = render(
const { findByTestId, getByTestId } = render(
<TestProvidere
tekster={{ 'ombarnet.sidetittel': 'Om {navn}' }}
mocketNettleserHistorikk={['/om-barnet/barn/1']}
Expand All @@ -356,8 +338,8 @@ describe('OmBarnet', () => {
const location = await findByTestId('location');
expect(JSON.parse(location.innerHTML).pathname).toEqual('/om-barnet/barn/1');

const jensTittel = await findByText('Om Jens');
expect(jensTittel).toBeInTheDocument();
const stegTittel = await getByTestId('steg-tittel');
expect(stegTittel).toBeInTheDocument();

const gåVidere = await findByTestId('neste-steg');
await act(() => gåVidere.click());
Expand All @@ -382,7 +364,7 @@ describe('OmBarnet', () => {
dokumentasjon: [],
});

const { findByLabelText, findByText, queryByText } = render(
const { getByTestId, queryByTestId } = render(
<TestProvidere
tekster={{ 'ombarnet.sidetittel': 'Om {navn}' }}
mocketNettleserHistorikk={['/om-barnet/barn/1']}
Expand All @@ -391,16 +373,17 @@ describe('OmBarnet', () => {
</TestProvidere>
);

const ikkeOppgiOpplysninger = await findByLabelText(
/ombarnet.andre-forelder.navn-ukjent.spm/
);
const andreForelderFnrLabel = await findByText(/felles.fødsels-eller-dnummer.label/);
const ikkeOppgiOpplysninger = await getByTestId('andre-forelder-kan-ikke-gi-opplysninger');
const andreForelderFnrLabel = await queryByTestId('andre-forelder-fødsels-/dnummer-ukjent');
const andreForelderFødselsdato = await queryByTestId('andreForelderFødselsdato');

expect(queryByText(/felles.fødselsdato.label/)).not.toBeInTheDocument();
expect(andreForelderFødselsdato).not.toBeInTheDocument();
expect(andreForelderFnrLabel).toBeInTheDocument();

await act(() => ikkeOppgiOpplysninger.click());

expect(andreForelderFnrLabel).not.toBeInTheDocument();
expect(queryByText(/felles.fødselsdato.label/)).not.toBeInTheDocument();
expect(andreForelderFødselsdato).not.toBeInTheDocument();
});

test('Får opp feilmelding ved feil postnummer', async () => {
Expand All @@ -425,20 +408,19 @@ describe('OmBarnet', () => {
const { erStegUtfyltFrafør } = spyOnUseApp(oppdatertSøknad);
erStegUtfyltFrafør.mockReturnValue(false);

const { queryByText, findAllByText, findByTestId } = render(
const { findByTestId, getByTestId } = render(
<TestProvidere mocketNettleserHistorikk={['/om-barnet/barn/1']}>
<OmBarnet barnetsId={endretBarn.id} />
</TestProvidere>
);

const gåVidere = await findByTestId('neste-steg');
expect(
queryByText(/ombarnet.institusjon.postnummer.format.feilmelding/)
).not.toBeInTheDocument();
act(() => gåVidere.click());
const feilmelding = await findAllByText(
/ombarnet.institusjon.postnummer.format.feilmelding/
);
expect(feilmelding).toHaveLength(2);

const feiloppsummering = getByTestId('skjema-feiloppsummering');
expect(feiloppsummering).toBeInTheDocument();

const feilmeldingInstitusjon = getByTestId('feilmelding-institusjonspostnummer');
expect(feilmeldingInstitusjon).toBeInTheDocument();
});
});
Loading

0 comments on commit f9f2e84

Please sign in to comment.