Skip to content
Draft
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
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,13 @@ import { FormattedMessage, type IntlShape, useIntl } from 'react-intl';

import { ErrorMessage, Table, VStack } from '@navikt/ds-react';

import { RhfFieldArrayAppendButton, RhfFieldArrayRemoveButton, RhfSelect, RhfTextField, useCustomValidation } from '@navikt/ft-form-hooks';
import {
RhfFieldArrayAppendButton,
RhfFieldArrayRemoveButton,
RhfSelect,
RhfTextField,
useCustomValidation,
} from '@navikt/ft-form-hooks';
import { maxValueFormatted, required } from '@navikt/ft-form-validators';
import { AktivitetStatus } from '@navikt/ft-kodeverk';
import { formatCurrencyNoKr, parseCurrencyInput, removeSpacesFromNumber } from '@navikt/ft-utils';
Expand Down
7 changes: 3 additions & 4 deletions packages/fakta-fordel-beregningsgrunnlag/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
export type { Beregningsgrunnlag as FtBeregningsgrunnlag } from '@navikt/ft-types';
export { FordelBeregningsgrunnlagFaktaIndex } from './src/FordelBeregningsgrunnlagFaktaIndex';
export { FaktaFordelBeregningAvklaringsbehovCode } from './src/types/interface/FaktaFordelBeregningAvklaringsbehovCode';
export type { FordelBeregningsgrunnlagAP } from './src/types/interface/FordelBeregningsgrunnlagAP';
export type { VurderRefusjonBeregningsgrunnlagAP } from './src/types/interface/VurderRefusjonBeregningsgrunnlagAP';
export type { VurderNyttInntektsforholdAP } from './src/types/interface/VurderNyttInntektsforholdAP';
export { FaktaFordelBeregningAvklaringsbehovCode } from './src/types/interface/FaktaFordelBeregningAvklaringsbehovCode';
export { FordelBeregningsgrunnlagFaktaIndex } from './src/FordelBeregningsgrunnlagFaktaIndex';
export type { Vilkår as FtVilkar } from './src/types/Vilkår';
export type { Beregningsgrunnlag as FtBeregningsgrunnlag } from '@navikt/ft-types';
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@ const {
ViseVurderTilkommetRefusjonskravAp5059,
SkalVurdereTilkommetØktRefusjonPåTidligereInnvilgetDelvisRefusjonAp5059,
FordelingFlereBeregningsgrunnlagKanEndreRefusjonskravAp5046,
TilkommetAktivitet,
TilkommetAktivitetMedForlengelse,
TilkommetAktiviteTreLikePerioderHelgMellomAlle,
VurderRefusjonOgTilkommetInntekt,
} = composeStories(stories);

window.ResizeObserver =
Expand Down Expand Up @@ -528,301 +524,4 @@ describe('FordelBeregningsgrunnlagFaktaIndex', () => {
],
});
});

it('skal kunne løse aksjonspunkt for tilkommet refusjonskrav når det er tilkommet inntekt i annet grunnlag', async () => {
const lagre = vi.fn();

render(<VurderRefusjonOgTilkommetInntekt submitCallback={lagre} />);

expect(
await screen.findByText(
'Nytt refusjonskrav overlapper tidligere utbetalinger. Sett endringsdato for ny refusjon.',
),
).toBeInTheDocument();
expect(screen.getByText('Bekreft og fortsett').closest('button')).toBeDisabled();
expect(screen.getAllByText('Nav Innlandet (874652202)')).toHaveLength(2);
expect(
screen.getByText('krever refusjon fra og med 07.03.2022. Det er tidligere innvilget et lavere refusjonsbeløp'),
).toBeInTheDocument();
expect(screen.getByText('Refusjonsbeløpet skal gjelde fra og med')).toBeInTheDocument();
expect(screen.getByText('Før denne datoen skal refusjonsbeløpet per måned være')).toBeInTheDocument();

const alleInputfelt = screen.getAllByRole('textbox');
expect(alleInputfelt).toHaveLength(3);
const datofelt = alleInputfelt[0];
const begrunnelsefelt = alleInputfelt[2];

await userEvent.type(datofelt, '07.03.2022');
await userEvent.type(begrunnelsefelt, 'Begrunnelse for refusjonsdato');

expect(await screen.findByText('Bekreft og fortsett')).toBeEnabled();
await userEvent.click(screen.getByText('Bekreft og fortsett'));
await waitFor(() => expect(lagre).toHaveBeenCalledTimes(1));
expect(lagre).toHaveBeenNthCalledWith(1, {
begrunnelse: 'Begrunnelse for refusjonsdato',
kode: 'VURDER_REFUSJONSKRAV',
grunnlag: [
{
periode: {
fom: '2022-03-07',
tom: '2022-05-01',
},
begrunnelse: 'Begrunnelse for refusjonsdato',
fastsatteAndeler: [
{
arbeidsgiverAktoerId: undefined,
arbeidsgiverOrgnr: '874652202',
delvisRefusjonPrMndFørStart: undefined,
fastsattRefusjonFom: '2022-03-07',
internArbeidsforholdRef: undefined,
},
],
},
],
});
});

it('skal kunne løse aksjonspunkt for tilkommet aktivitet', async () => {
const lagre = vi.fn();
render(<TilkommetAktivitet submitCallback={lagre} />);
expect(screen.getByText('Søker har et nytt arbeidsforhold i AA-registeret')).toBeInTheDocument();
expect(
screen.getByText('Har søker inntekt fra Arbeidsgiveren (999999997)...123 som kan medføre gradering mot inntekt?'),
).toBeInTheDocument();
expect(screen.getByText('Årsinntekt')).toBeInTheDocument();
await userEvent.click(screen.getByLabelText('Ja'));
await userEvent.type(screen.getByLabelText('Begrunnelse'), 'En saklig begrunnelse');
await userEvent.click(screen.getByRole('button', { name: 'Bekreft og fortsett' }));
await waitFor(() => expect(lagre).toHaveBeenCalledTimes(1));
expect(lagre).toHaveBeenCalledWith({
begrunnelse: 'En saklig begrunnelse',
grunnlag: [
{
periode: {
fom: '2022-11-08',
tom: '2022-11-08',
},
begrunnelse: 'En saklig begrunnelse',
tilkomneInntektsforhold: [
{
fom: '2022-11-09',
tom: '9999-12-31',
tilkomneInntektsforhold: [
{
aktivitetStatus: 'AT',
arbeidsforholdId: '123',
arbeidsgiverId: '999999997',
bruttoInntektPrÅr: 480000,
skalRedusereUtbetaling: true,
},
],
},
],
},
],
kode: 'VURDER_NYTT_INNTKTSFRHLD',
});
});

it('skal kunne løse aksjonspunkt for tilkommet aktivitet med forlengelse', async () => {
const lagre = vi.fn();
render(<TilkommetAktivitetMedForlengelse submitCallback={lagre} />);
expect(screen.getByText('Søker har et nytt arbeidsforhold i AA-registeret')).toBeInTheDocument();

expect(screen.getByText('09.11.2022 - 15.11.2022')).toBeInTheDocument();
await userEvent.click(screen.getByText('09.11.2022 - 15.11.2022'));

expect(screen.getAllByText('Årsinntekt')).toHaveLength(2);
expect(screen.getAllByText('450 000')).toHaveLength(1);

expect(screen.getByText('Reduserer inntektstap')).toBeInTheDocument();

expect(screen.getAllByText('Arbeidsgiveren (999999997)...123')).toHaveLength(2);
expect(screen.getAllByText('Nei')).toHaveLength(3);

expect(screen.getAllByText('Nav Troms og Finnmark (974652293)...456')).toHaveLength(2);
expect(screen.getAllByText('Ja')).toHaveLength(3);

expect(screen.getByText('300 000 kr')).toBeInTheDocument();
expect(screen.getByText('16.11.2022 - 20.11.2022')).toBeInTheDocument();
expect(
screen.getByText('Har søker inntekt fra Arbeidsgiveren (999999997)...123 som kan medføre gradering mot inntekt?'),
).toBeInTheDocument();
await userEvent.click(screen.getAllByLabelText('Nei')[0]);

expect(
screen.getByText(
'Har søker inntekt fra Nav Troms og Finnmark (974652293)...456 som kan medføre gradering mot inntekt?',
),
).toBeInTheDocument();

await userEvent.click(screen.getAllByLabelText('Ja')[1]);
expect(screen.getByLabelText('Fastsett årsinntekt')).toBeInTheDocument();

await userEvent.type(screen.getByLabelText('Fastsett årsinntekt'), '1349');
await userEvent.type(screen.getByLabelText('Begrunnelse'), 'En saklig begrunnelse');
await userEvent.click(screen.getByRole('button', { name: 'Bekreft og fortsett' }));
await waitFor(() => expect(lagre).toHaveBeenCalledTimes(1));
expect(lagre).toHaveBeenCalledWith({
begrunnelse: 'En saklig begrunnelse',
grunnlag: [
{
periode: {
fom: '2022-11-08',
tom: '2022-11-20',
},
begrunnelse: 'En saklig begrunnelse',
tilkomneInntektsforhold: [
{
fom: '2022-11-16',
tom: '2022-11-20',
tilkomneInntektsforhold: [
{
aktivitetStatus: 'AT',
arbeidsforholdId: '123',
arbeidsgiverId: '999999997',
bruttoInntektPrÅr: undefined,
skalRedusereUtbetaling: false,
},
{
aktivitetStatus: 'AT',
arbeidsforholdId: '456',
arbeidsgiverId: '974652293',
bruttoInntektPrÅr: 1349,
skalRedusereUtbetaling: true,
},
],
},
],
},
],
kode: 'VURDER_NYTT_INNTKTSFRHLD',
});
});

it('skal kunne løse aksjonspunkt for tilkommet i revurdering og legge til nye perioder', async () => {
const lagre = vi.fn();
render(<TilkommetAktiviteTreLikePerioderHelgMellomAlle submitCallback={lagre} />);
expect(screen.getByText('Søker har et nytt arbeidsforhold i AA-registeret')).toBeInTheDocument();

expect(screen.getByText('10.04.2023 - 28.04.2023')).toBeInTheDocument();
expect(screen.getByText('Del opp periode')).toBeInTheDocument();

await userEvent.click(screen.getByText('Del opp periode'));
expect(screen.getByText('Hvilken periode ønsker du å dele opp?')).toBeInTheDocument();
expect(screen.getAllByText('Del opp periode')[2].closest('button')).toBeDisabled();

expect(await screen.queryByText('Opprett ny vurdering fra')).not.toBeInTheDocument();
await userEvent.selectOptions(
screen.getByLabelText('Hvilken periode ønsker du å dele opp?'),
'10.04.2023 - 28.04.2023',
);
expect(screen.getAllByText('Del opp periode')[2].closest('button')).toBeDisabled();
expect(screen.getByText('Opprett ny vurdering fra')).toBeInTheDocument();

await userEvent.click(screen.getByLabelText('Åpne datovelger'));
await userEvent.click(screen.getByText('18'));
expect(await screen.getAllByText('Del opp periode')[2].closest('button')).toBeEnabled();
expect(screen.getByText('Nye perioder til vurdering:')).toBeInTheDocument();
expect(screen.getByText('10.04.2023 - 17.04.2023')).toBeInTheDocument();
expect(screen.getByText('18.04.2023 - 28.04.2023')).toBeInTheDocument();
await userEvent.click(screen.getAllByRole('button', { name: 'Del opp periode' })[1]);
expect(await screen.findByText('10.04.2023 - 17.04.2023')).toBeInTheDocument();
expect(screen.getByText('18.04.2023 - 28.04.2023')).toBeInTheDocument();

expect(screen.getAllByText('Ja')).toHaveLength(4);
expect(screen.getAllByText('Nei')).toHaveLength(4);

// 10.04.2023 - 17.04.2023
await userEvent.click(screen.getAllByLabelText('Nei')[0]);
await userEvent.click(screen.getAllByLabelText('Nei')[1]);

// 18.04.2023 - 28.04.2023
await userEvent.click(screen.getAllByLabelText('Ja')[2]);
await userEvent.click(screen.getAllByLabelText('Ja')[3]);
expect(screen.getAllByLabelText(/Fastsett årsinntekt/)).toHaveLength(2);

await userEvent.type(screen.getAllByLabelText('Fastsett årsinntekt')[0], '200000');
await userEvent.type(screen.getAllByLabelText('Fastsett årsinntekt')[1], '350000');

// Begrunnelse og submit
await userEvent.type(screen.getByLabelText('Begrunnelse for alle perioder'), 'En saklig begrunnelse');
await userEvent.click(screen.getByRole('button', { name: 'Bekreft og fortsett' }));

await waitFor(() => expect(lagre).toHaveBeenCalledTimes(1));
expect(lagre).toHaveBeenCalledWith({
begrunnelse: 'En saklig begrunnelse',
grunnlag: [
{
periode: {
fom: '2023-04-10',
tom: '2023-04-28',
},
begrunnelse: 'En saklig begrunnelse',
tilkomneInntektsforhold: [
{
fom: '2023-04-10',
tom: '2023-04-14',
tilkomneInntektsforhold: [
{
aktivitetStatus: 'AT',
arbeidsforholdId: '123',
arbeidsgiverId: '999999997',
bruttoInntektPrÅr: undefined,
skalRedusereUtbetaling: false,
},
],
},
{
fom: '2023-04-17',
tom: '2023-04-17',
tilkomneInntektsforhold: [
{
aktivitetStatus: 'AT',
arbeidsforholdId: '123',
arbeidsgiverId: '999999997',
bruttoInntektPrÅr: undefined,
skalRedusereUtbetaling: false,
},
],
},
{
fom: '2023-04-18',
tom: '2023-04-21',
tilkomneInntektsforhold: [
{
aktivitetStatus: 'AT',
arbeidsforholdId: '123',
arbeidsgiverId: '999999997',
bruttoInntektPrÅr: 200000,
skalRedusereUtbetaling: true,
},
],
},
{
fom: '2023-04-24',
tom: '2023-04-28',
tilkomneInntektsforhold: [
{
aktivitetStatus: 'AT',
arbeidsforholdId: '123',
arbeidsgiverId: '999999997',
bruttoInntektPrÅr: 200000,
skalRedusereUtbetaling: true,
},
{
aktivitetStatus: 'AT',
arbeidsforholdId: '456',
arbeidsgiverId: '974652293',
bruttoInntektPrÅr: 350000,
skalRedusereUtbetaling: true,
},
],
},
],
},
],
kode: 'VURDER_NYTT_INNTKTSFRHLD',
});
});
});
Loading