Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nav 22888 småting tilbakekreving #2022

Merged
merged 10 commits into from
Jan 8, 2025
9 changes: 6 additions & 3 deletions src/frontend/komponenter/Fagsak/Fakta/FaktaSkjema.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ const FaktaSkjema: React.FC<IProps> = ({
senderInn,
gåTilForrige,
} = useFeilutbetalingFakta();
const { settIkkePersistertKomponent } = useBehandling();
const { settIkkePersistertKomponent, harUlagredeData } = useBehandling();
const erKravgrunnlagKnyttetTilEnEnEldreRevurdering =
behandling.fagsystemsbehandlingId !== feilutbetalingFakta.kravgrunnlagReferanse;

Expand Down Expand Up @@ -101,7 +101,10 @@ const FaktaSkjema: React.FC<IProps> = ({
<Checkbox
size="small"
checked={behandlePerioderSamlet === true}
onChange={() => settBehandlePerioderSamlet(!behandlePerioderSamlet)}
onChange={() => {
settIkkePersistertKomponent('fakta');
settBehandlePerioderSamlet(!behandlePerioderSamlet);
}}
>
Behandle alle perioder samlet
</Checkbox>
Expand Down Expand Up @@ -211,7 +214,7 @@ const FaktaSkjema: React.FC<IProps> = ({
loading={senderInn}
disabled={erLesevisning && !stegErBehandlet}
>
{stegErBehandlet ? 'Neste' : 'Bekreft og fortsett'}
{!stegErBehandlet || harUlagredeData ? 'Bekreft og fortsett' : 'Neste'}
</Button>
{behandling.harVerge && (
<Button variant="secondary" onClick={gåTilForrige}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,20 @@ import { type Ressurs, RessursStatus } from '@navikt/familie-typer';
import { FeilutbetalingVilkårsvurderingProvider } from './FeilutbetalingVilkårsvurderingContext';
import VilkårsvurderingContainer from './VilkårsvurderingContainer';
import { useBehandlingApi } from '../../../api/behandling';
import { useBehandling } from '../../../context/BehandlingContext';
import { BehandlingProvider } from '../../../context/BehandlingContext';
import { Aktsomhet, Fagsystem, HendelseType, Vilkårsresultat, Ytelsetype } from '../../../kodeverk';
import { Behandlingstatus, IBehandling } from '../../../typer/behandling';
import { IFagsak } from '../../../typer/fagsak';
import {
IFeilutbetalingVilkårsvurdering,
VilkårsvurderingPeriode,
} from '../../../typer/feilutbetalingtyper';
import { useHttp } from '@navikt/familie-http';

jest.setTimeout(25000);

jest.mock('@navikt/familie-http', () => {
return {
useHttp: () => ({
request: () => jest.fn(),
}),
};
});

jest.mock('../../../context/BehandlingContext', () => ({
useBehandling: jest.fn(),
jest.mock('@navikt/familie-http', () => ({
useHttp: jest.fn(),
}));

jest.mock('../../../api/behandling', () => ({
Expand Down Expand Up @@ -69,12 +62,7 @@ describe('Tester: VilkårsvurderingContainer', () => {
rettsgebyr: 1199,
};

const setupMock = (
behandlet: boolean,
lesevisning: boolean,
autoutført: boolean,
vilkårsvurdering?: IFeilutbetalingVilkårsvurdering
) => {
const setupUseBehandlingApiMock = (vilkårsvurdering?: IFeilutbetalingVilkårsvurdering) => {
if (vilkårsvurdering) {
// @ts-expect-error mock
useBehandlingApi.mockImplementation(() => ({
Expand All @@ -94,30 +82,35 @@ describe('Tester: VilkårsvurderingContainer', () => {
},
}));
}
};

const setupHttpMock = () => {
// @ts-expect-error mock
useBehandling.mockImplementation(() => ({
erStegBehandlet: () => behandlet,
erStegAutoutført: () => autoutført,
visVenteModal: false,
behandlingILesemodus: lesevisning,
hentBehandlingMedBehandlingId: () => Promise.resolve(),
settIkkePersistertKomponent: jest.fn(),
nullstillIkkePersisterteKomponenter: jest.fn(),
useHttp.mockImplementation(() => ({
request: () => {
return Promise.resolve({
status: RessursStatus.SUKSESS,
data: mock<IBehandling>({ eksternBrukId: '1' }),
});
},
}));
};

test('- totalbeløp under 4 rettsgebyr - alle perioder har ikke brukt 6.ledd', async () => {
const user = userEvent.setup();
setupMock(false, false, false, feilutbetalingVilkårsvurdering);
setupUseBehandlingApiMock(feilutbetalingVilkårsvurdering);
setupHttpMock();
const behandling = mock<IBehandling>();
const fagsak = mock<IFagsak>();
fagsak.ytelsestype = Ytelsetype.BARNETILSYN;

const { getByText, getByRole, getByLabelText, getByTestId, queryAllByText, queryByText } =
render(
<FeilutbetalingVilkårsvurderingProvider behandling={behandling} fagsak={fagsak}>
<VilkårsvurderingContainer behandling={behandling} fagsak={fagsak} />
</FeilutbetalingVilkårsvurderingProvider>
<BehandlingProvider>
<FeilutbetalingVilkårsvurderingProvider behandling={behandling} fagsak={fagsak}>
<VilkårsvurderingContainer behandling={behandling} fagsak={fagsak} />
</FeilutbetalingVilkårsvurderingProvider>
</BehandlingProvider>
);

await waitFor(async () => {
Expand All @@ -137,10 +130,20 @@ describe('Tester: VilkårsvurderingContainer', () => {

expect(
getByRole('button', {
name: 'Bekreft og fortsett',
name: 'Bekreft',
})
).toBeDisabled();

await act(() =>
user.type(getByLabelText('Vilkårene for tilbakekreving'), 'Begrunnelse vilkårene 1')
);

expect(
getByRole('button', {
name: 'Bekreft',
})
).toBeEnabled();

await act(() =>
user.click(
getByRole('button', {
Expand All @@ -149,11 +152,8 @@ describe('Tester: VilkårsvurderingContainer', () => {
)
);

expect(queryAllByText('Feltet må fylles ut')).toHaveLength(2);
expect(queryAllByText('Feltet må fylles ut')).toHaveLength(1);

await act(() =>
user.type(getByLabelText('Vilkårene for tilbakekreving'), 'Begrunnelse vilkårene 1')
);
await act(() =>
user.click(
getByLabelText(
Expand All @@ -168,6 +168,12 @@ describe('Tester: VilkårsvurderingContainer', () => {

expect(getByText('Aktsomhet')).toBeTruthy();

expect(
getByRole('button', {
name: 'Bekreft',
})
).toBeEnabled();

await act(() =>
user.click(
getByRole('button', {
Expand Down Expand Up @@ -313,17 +319,20 @@ describe('Tester: VilkårsvurderingContainer', () => {

test('- vis og fyll ut perioder og send inn - god tro - bruker kopiering', async () => {
const user = userEvent.setup();
setupMock(false, false, false, feilutbetalingVilkårsvurdering);
setupUseBehandlingApiMock(feilutbetalingVilkårsvurdering);
setupHttpMock();

const fagsak = mock<IFagsak>({ fagsystem: Fagsystem.EF, eksternFagsakId: '1' });
const behandling = mock<IBehandling>({ eksternBrukId: '1' });

fagsak.ytelsestype = Ytelsetype.BARNETILSYN;

const { getByText, getByRole, getByLabelText, queryAllByText } = render(
<FeilutbetalingVilkårsvurderingProvider behandling={behandling} fagsak={fagsak}>
<VilkårsvurderingContainer behandling={behandling} fagsak={fagsak} />
</FeilutbetalingVilkårsvurderingProvider>
<BehandlingProvider>
<FeilutbetalingVilkårsvurderingProvider behandling={behandling} fagsak={fagsak}>
<VilkårsvurderingContainer behandling={behandling} fagsak={fagsak} />
</FeilutbetalingVilkårsvurderingProvider>
</BehandlingProvider>
);

await waitFor(async () => {
Expand Down Expand Up @@ -412,7 +421,7 @@ describe('Tester: VilkårsvurderingContainer', () => {

test('- vis utfylt - forstod/burde forstått - forsto', async () => {
const user = userEvent.setup();
setupMock(true, false, false, {
setupUseBehandlingApiMock({
perioder: [
{
...perioder[0],
Expand Down Expand Up @@ -448,9 +457,11 @@ describe('Tester: VilkårsvurderingContainer', () => {
});

const { getByText, getByRole, getByLabelText, queryByText, queryByLabelText } = render(
<FeilutbetalingVilkårsvurderingProvider behandling={behandling} fagsak={fagsak}>
<VilkårsvurderingContainer behandling={behandling} fagsak={fagsak} />
</FeilutbetalingVilkårsvurderingProvider>
<BehandlingProvider>
<FeilutbetalingVilkårsvurderingProvider behandling={behandling} fagsak={fagsak}>
<VilkårsvurderingContainer behandling={behandling} fagsak={fagsak} />
</FeilutbetalingVilkårsvurderingProvider>
</BehandlingProvider>
);

await waitFor(async () => {
Expand Down Expand Up @@ -545,7 +556,7 @@ describe('Tester: VilkårsvurderingContainer', () => {

test('- vis utfylt - forstod/burde forstått - forsto - lesevisning', async () => {
const user = userEvent.setup();
setupMock(true, true, false, {
setupUseBehandlingApiMock({
perioder: [
{
...perioder[0],
Expand Down Expand Up @@ -575,15 +586,18 @@ describe('Tester: VilkårsvurderingContainer', () => {
],
rettsgebyr: 1199,
});
setupHttpMock();
const behandling = mock<IBehandling>({ status: Behandlingstatus.FATTER_VEDTAK });
const fagsak = mock<IFagsak>({
ytelsestype: Ytelsetype.BARNETRYGD,
});

const { getByText, getByRole, getByLabelText } = render(
<FeilutbetalingVilkårsvurderingProvider behandling={behandling} fagsak={fagsak}>
<VilkårsvurderingContainer behandling={behandling} fagsak={fagsak} />
</FeilutbetalingVilkårsvurderingProvider>
<BehandlingProvider>
<FeilutbetalingVilkårsvurderingProvider behandling={behandling} fagsak={fagsak}>
<VilkårsvurderingContainer behandling={behandling} fagsak={fagsak} />
</FeilutbetalingVilkårsvurderingProvider>
</BehandlingProvider>
);

await waitFor(async () => {
Expand Down Expand Up @@ -634,17 +648,19 @@ describe('Tester: VilkårsvurderingContainer', () => {
})
).toBeTruthy();

// Knapper for navigering mellom faner skal alltid være synlige og enabled
// Knapp for navigering tilbake mellom faner skal alltid være synlig enabled
expect(
getByRole('button', {
name: 'Forrige',
})
).toBeEnabled();

// Knapp for navigering til neste fane skal være synlig men disabled når vilkårspanel er åpent
expect(
getByRole('button', {
name: 'Neste',
})
).toBeEnabled();
).toBeDisabled();
});

await act(() =>
Expand Down Expand Up @@ -704,38 +720,37 @@ describe('Tester: VilkårsvurderingContainer', () => {
})
).toBeTruthy();

// Knapper for navigering mellom faner skal alltid være synlige og enabled
// Knapp for navigering tilbake mellom faner skal alltid være synlig enabled
expect(
getByRole('button', {
name: 'Forrige',
})
).toBeEnabled();

// Knapp for navigering til neste fane skal være synlig men disabled når vilkårspanel er åpent
expect(
getByRole('button', {
name: 'Neste',
})
).toBeEnabled();
});

test('- vis autoutført', async () => {
setupMock(false, false, true);

const behandling = mock<IBehandling>();
const fagsak = mock<IFagsak>();
fagsak.ytelsestype = Ytelsetype.BARNETILSYN;
).toBeDisabled();

const { getByText, getByRole } = render(
<FeilutbetalingVilkårsvurderingProvider behandling={behandling} fagsak={fagsak}>
<VilkårsvurderingContainer behandling={behandling} fagsak={fagsak} />
</FeilutbetalingVilkårsvurderingProvider>
await act(() =>
// Bruker klikker på lukk knapp
user.click(
getByRole('button', {
name: 'Lukk',
})
)
);

await waitFor(async () => {
expect(getByText('Tilbakekreving')).toBeTruthy();
});

expect(getByText('Automatisk vurdert. Alle perioder er foreldet.')).toBeTruthy();
// Knapp for navigering tilbake mellom faner skal alltid være synlig enabled
expect(
getByRole('button', {
name: 'Forrige',
})
).toBeEnabled();

// Knapp for navigering til neste fane skal nå være synlig og enabled
expect(
getByRole('button', {
name: 'Neste',
Expand Down
Loading
Loading