Skip to content

Commit

Permalink
Legg til tester for GjenåpneForespørselTask (#371)
Browse files Browse the repository at this point in the history
* Legg til tester for GjenåpneForespørselTask

* Samle tester for oppdaterForespørsler

* Fjern ubrukt import

* retter navn på tester

---------

Co-authored-by: oyvemb <[email protected]>
  • Loading branch information
mortenoosvik and oyvemb authored Feb 6, 2025
1 parent e516e9d commit c282687
Show file tree
Hide file tree
Showing 2 changed files with 122 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import no.nav.familie.inntektsmelding.koder.ForespørselStatus;
import no.nav.familie.inntektsmelding.koder.Ytelsetype;
import no.nav.familie.inntektsmelding.typer.dto.ForespørselAksjon;
import no.nav.familie.inntektsmelding.typer.dto.ForespørselResultat;
import no.nav.familie.inntektsmelding.typer.dto.NyBeskjedResultat;
import no.nav.familie.inntektsmelding.typer.dto.OrganisasjonsnummerDto;
import no.nav.familie.inntektsmelding.typer.dto.SaksnummerDto;
Expand Down Expand Up @@ -217,6 +216,18 @@ void setUp() {
assertThat(lagret2.map( ForespørselEntitet::getStatus)).isEqualTo(Optional.of(ForespørselStatus.UNDER_BEHANDLING));
}

@Test
void skal_ikke_opprette_ny_forespørsel_dersom_det_eksisterer_en_for_samme_stp() {
var forespørselUuid = forespørselRepository.lagreForespørsel(SKJÆRINGSTIDSPUNKT, YTELSETYPE, AKTØR_ID, BRREG_ORGNUMMER, SAKSNUMMMER,
SKJÆRINGSTIDSPUNKT);
forespørselRepository.oppdaterArbeidsgiverNotifikasjonSakId(forespørselUuid, SAK_ID);

var forespørsler = List.of(new OppdaterForespørselDto(SKJÆRINGSTIDSPUNKT, new OrganisasjonsnummerDto(BRREG_ORGNUMMER), ForespørselAksjon.OPPRETT));
forespørselBehandlingTjeneste.oppdaterForespørsler(YTELSETYPE, new AktørIdEntitet(AKTØR_ID), forespørsler, new SaksnummerDto(SAKSNUMMMER));

verifyNoInteractions(prosessTaskTjeneste);
}

@Test
void skal_opprette_forespørsel_dersom_det_ikke_eksisterer_en_for_stp() {
mockInfoForOpprettelse(AKTØR_ID, YTELSETYPE, BRREG_ORGNUMMER, SAK_ID, OPPGAVE_ID);
Expand All @@ -237,18 +248,6 @@ void setUp() {
assertThat(taskdata.getPropertyValue(OpprettForespørselTask.STP)).isEqualTo(SKJÆRINGSTIDSPUNKT.toString());
}

@Test
void skal_ikke_opprette_ny_forespørsel_dersom_det_eksisterer_en_for_samme_stp() {
var forespørselUuid = forespørselRepository.lagreForespørsel(SKJÆRINGSTIDSPUNKT, YTELSETYPE, AKTØR_ID, BRREG_ORGNUMMER, SAKSNUMMMER,
SKJÆRINGSTIDSPUNKT);
forespørselRepository.oppdaterArbeidsgiverNotifikasjonSakId(forespørselUuid, SAK_ID);

var forespørsler = List.of(new OppdaterForespørselDto(SKJÆRINGSTIDSPUNKT, new OrganisasjonsnummerDto(BRREG_ORGNUMMER), ForespørselAksjon.OPPRETT));
forespørselBehandlingTjeneste.oppdaterForespørsler(YTELSETYPE, new AktørIdEntitet(AKTØR_ID), forespørsler, new SaksnummerDto(SAKSNUMMMER));

verifyNoInteractions(prosessTaskTjeneste);
}

@Test
void skal_opprette_ny_forespørsel_og_beholde_gammel_dersom_vi_ber_om_et_nytt_stp() {
mockInfoForOpprettelse(AKTØR_ID, YTELSETYPE, BRREG_ORGNUMMER, SAK_ID, OPPGAVE_ID);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
package no.nav.familie.inntektsmelding.forespørsel.tjenester.task;

import no.nav.familie.inntektsmelding.forespørsel.modell.ForespørselEntitet;
import no.nav.familie.inntektsmelding.forespørsel.tjenester.ForespørselBehandlingTjeneste;
import no.nav.familie.inntektsmelding.imdialog.rest.InntektsmeldingResponseDto;
import no.nav.familie.inntektsmelding.imdialog.rest.SendInntektsmeldingRequestDto;
import no.nav.familie.inntektsmelding.imdialog.tjenester.InntektsmeldingTjeneste;
import no.nav.familie.inntektsmelding.koder.ForespørselStatus;
import no.nav.familie.inntektsmelding.typer.dto.AktørIdDto;
import no.nav.familie.inntektsmelding.typer.dto.ArbeidsgiverDto;
import no.nav.familie.inntektsmelding.typer.dto.YtelseTypeDto;
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData;

import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
import java.util.UUID;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.*;

class GjenåpneForespørselTaskTest {

private final UUID forespørselUuid = UUID.randomUUID();
private final ForespørselEntitet entitet = new ForespørselEntitet();
private final InntektsmeldingResponseDto inntektsmeldingResponseDto = new InntektsmeldingResponseDto(
1L,
UUID.randomUUID(),
mock(AktørIdDto.class),
mock(YtelseTypeDto.class),
mock(ArbeidsgiverDto.class),
mock(SendInntektsmeldingRequestDto.KontaktpersonRequestDto.class),
LocalDate.now(),
new BigDecimal("50000.00"),
LocalDateTime.now(),
List.of(mock(SendInntektsmeldingRequestDto.Refusjon.class)),
List.of(mock(SendInntektsmeldingRequestDto.BortfaltNaturalytelseRequestDto.class)),
List.of(mock(SendInntektsmeldingRequestDto.EndringsårsakerRequestDto.class))
);

private final ForespørselBehandlingTjeneste forespørselBehandlingTjeneste = Mockito.mock(ForespørselBehandlingTjeneste.class);
private final InntektsmeldingTjeneste inntektsmeldingTjeneste = Mockito.mock(InntektsmeldingTjeneste.class);

@Test
void skal_gjenåpne_forespørsel() {
var task = new GjenåpneForespørselTask(forespørselBehandlingTjeneste, inntektsmeldingTjeneste);
var taskdata = ProsessTaskData.forProsessTask(GjenåpneForespørselTask.class);
taskdata.setProperty(SettForespørselTilUtgåttTask.FORESPØRSEL_UUID, forespørselUuid.toString());

entitet.setStatus(ForespørselStatus.UTGÅTT);
when(forespørselBehandlingTjeneste.hentForespørsel(forespørselUuid)).thenReturn(Optional.of(entitet));
when(inntektsmeldingTjeneste.hentInntektsmeldinger(forespørselUuid)).thenReturn(List.of(inntektsmeldingResponseDto));

task.doTask(taskdata);

verify(forespørselBehandlingTjeneste).gjenåpneForespørsel(entitet);
}

@Test
void skal_ikke_gjenåpne_dersom_status_er_under_behandling() {
var task = new GjenåpneForespørselTask(forespørselBehandlingTjeneste, inntektsmeldingTjeneste);
var taskdata = ProsessTaskData.forProsessTask(GjenåpneForespørselTask.class);
taskdata.setProperty(SettForespørselTilUtgåttTask.FORESPØRSEL_UUID, forespørselUuid.toString());

entitet.setStatus(ForespørselStatus.UNDER_BEHANDLING);
when(forespørselBehandlingTjeneste.hentForespørsel(forespørselUuid)).thenReturn(Optional.of(entitet));
when(inntektsmeldingTjeneste.hentInntektsmeldinger(forespørselUuid)).thenReturn(List.of(inntektsmeldingResponseDto));

task.doTask(taskdata);

verify(forespørselBehandlingTjeneste, times(0)).gjenåpneForespørsel(entitet);
}

@Test
void skal_ikke_gjenåpne_dersom_status_er_ferdig() {
var task = new GjenåpneForespørselTask(forespørselBehandlingTjeneste, inntektsmeldingTjeneste);
var taskdata = ProsessTaskData.forProsessTask(GjenåpneForespørselTask.class);
taskdata.setProperty(SettForespørselTilUtgåttTask.FORESPØRSEL_UUID, forespørselUuid.toString());

entitet.setStatus(ForespørselStatus.FERDIG);
when(forespørselBehandlingTjeneste.hentForespørsel(forespørselUuid)).thenReturn(Optional.of(entitet));
when(inntektsmeldingTjeneste.hentInntektsmeldinger(forespørselUuid)).thenReturn(List.of(inntektsmeldingResponseDto));

task.doTask(taskdata);

verify(forespørselBehandlingTjeneste, times(0)).gjenåpneForespørsel(entitet);
}

@Test
void skal_kaste_feil_dersom_vi_ikke_finner_im() {
var task = new GjenåpneForespørselTask(forespørselBehandlingTjeneste, inntektsmeldingTjeneste);
var taskdata = ProsessTaskData.forProsessTask(GjenåpneForespørselTask.class);
taskdata.setProperty(SettForespørselTilUtgåttTask.FORESPØRSEL_UUID, forespørselUuid.toString());

entitet.setStatus(ForespørselStatus.UTGÅTT);
when(forespørselBehandlingTjeneste.hentForespørsel(forespørselUuid)).thenReturn(Optional.of(entitet));
when(inntektsmeldingTjeneste.hentInntektsmeldinger(forespørselUuid)).thenReturn(List.of());

Exception exception = assertThrows(IllegalArgumentException.class, () -> task.doTask(taskdata));
assertEquals("Kan ikke gjenåpne forespørsel som ikke har fått inn inntektsmelding", exception.getMessage());

verify(forespørselBehandlingTjeneste, times(0)).gjenåpneForespørsel(entitet);
}
}

0 comments on commit c282687

Please sign in to comment.