Skip to content

Commit dc361e0

Browse files
authored
FIX: Oppretter behandling også dersom opphørshendelse flyttes lenger fram i tid (#218)
* FIX: Oppretter behandling også dersom opphørshendelse flyttes lenger fram i tid * FIX: Validerer også årsak
1 parent 2411142 commit dc361e0

File tree

2 files changed

+59
-9
lines changed

2 files changed

+59
-9
lines changed

domenetjenester/hendelsemottak/src/main/java/no/nav/ung/sak/hendelsemottak/tjenester/UngdomsprogramOpphørFagsakTilVurderingUtleder.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import java.util.Map;
77
import java.util.Optional;
88

9+
import no.nav.fpsak.tidsserie.LocalDateTimeline;
10+
import no.nav.ung.sak.ungdomsprogram.UngdomsprogramPeriodeTjeneste;
911
import org.slf4j.Logger;
1012
import org.slf4j.LoggerFactory;
1113

@@ -25,7 +27,7 @@ public class UngdomsprogramOpphørFagsakTilVurderingUtleder implements FagsakerT
2527

2628
private static final Logger logger = LoggerFactory.getLogger(UngdomsprogramOpphørFagsakTilVurderingUtleder.class);
2729
private BehandlingRepository behandlingRepository;
28-
private UngdomsprogramPeriodeRepository ungdomsprogramPeriodeRepository;
30+
private UngdomsprogramPeriodeTjeneste ungdomsprogramPeriodeTjeneste;
2931
private FinnFagsakerForAktørTjeneste finnFagsakerForAktørTjeneste;
3032

3133
public UngdomsprogramOpphørFagsakTilVurderingUtleder() {
@@ -34,10 +36,10 @@ public class UngdomsprogramOpphørFagsakTilVurderingUtleder implements FagsakerT
3436

3537
@Inject
3638
public UngdomsprogramOpphørFagsakTilVurderingUtleder(BehandlingRepository behandlingRepository,
37-
UngdomsprogramPeriodeRepository ungdomsprogramPeriodeRepository,
39+
UngdomsprogramPeriodeTjeneste ungdomsprogramPeriodeTjeneste,
3840
FinnFagsakerForAktørTjeneste finnFagsakerForAktørTjeneste) {
3941
this.behandlingRepository = behandlingRepository;
40-
this.ungdomsprogramPeriodeRepository = ungdomsprogramPeriodeRepository;
42+
this.ungdomsprogramPeriodeTjeneste = ungdomsprogramPeriodeTjeneste;
4143
this.finnFagsakerForAktørTjeneste = finnFagsakerForAktørTjeneste;
4244
}
4345

@@ -76,10 +78,10 @@ private boolean erNyInformasjonIHendelsen(Fagsak fagsak, LocalDate opphørsdato,
7678
}
7779

7880
Behandling behandling = behandlingOpt.get();
79-
var periodeGrunnlag = ungdomsprogramPeriodeRepository.hentGrunnlag(behandling.getId());
80-
if (periodeGrunnlag.isPresent()) {
81-
var harIngenPerioderEtterOpphør = periodeGrunnlag.get().getUngdomsprogramPerioder().getPerioder().stream().noneMatch(p -> p.getPeriode().getTomDato().isAfter(opphørsdato));
82-
if (harIngenPerioderEtterOpphør) {
81+
final var ungdomsprogramTidslinje = ungdomsprogramPeriodeTjeneste.finnPeriodeTidslinje(behandling.getId());
82+
if (!ungdomsprogramTidslinje.isEmpty()) {
83+
var erSisteDatoAlleredeSattTilOpphørsdato = ungdomsprogramTidslinje.getMaxLocalDate().equals(opphørsdato);
84+
if (erSisteDatoAlleredeSattTilOpphørsdato) {
8385
logger.info("Datagrunnlag på behandling {} for {} hadde ingen perioder med ungdomsprogram etter opphørsdato. Trigget av hendelse {}.", behandling.getUuid(), fagsak.getSaksnummer(), hendelseId);
8486
return false;
8587
}

domenetjenester/hendelsemottak/src/test/java/no/nav/ung/sak/hendelsemottak/tjenester/UngdomsprogramOpphørFagsakTilVurderingUtlederTest.java

+50-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
package no.nav.ung.sak.hendelsemottak.tjenester;
22

3+
import static no.nav.ung.kodeverk.behandling.BehandlingÅrsakType.RE_HENDELSE_OPPHØR_UNGDOMSPROGRAM;
34
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
45
import static org.mockito.Mockito.mock;
56

67
import java.time.LocalDate;
78
import java.time.LocalDateTime;
89
import java.util.List;
10+
import java.util.Map;
911

12+
import no.nav.ung.kodeverk.behandling.BehandlingÅrsakType;
13+
import no.nav.ung.sak.behandlingslager.fagsak.Fagsak;
14+
import no.nav.ung.sak.ungdomsprogram.UngdomsprogramPeriodeTjeneste;
15+
import org.assertj.core.api.AbstractIntegerAssert;
1016
import org.junit.jupiter.api.BeforeEach;
1117
import org.junit.jupiter.api.Test;
1218
import org.junit.jupiter.api.extension.ExtendWith;
@@ -49,7 +55,7 @@ public class UngdomsprogramOpphørFagsakTilVurderingUtlederTest {
4955
void setUp() {
5056
var fagsakRepository = new FagsakRepository(entityManager);
5157
this.utleder = new UngdomsprogramOpphørFagsakTilVurderingUtleder(
52-
new BehandlingRepository(entityManager), ungdomsprogramPeriodeRepository, new FinnFagsakerForAktørTjeneste(entityManager, fagsakRepository));
58+
new BehandlingRepository(entityManager), new UngdomsprogramPeriodeTjeneste(ungdomsprogramPeriodeRepository), new FinnFagsakerForAktørTjeneste(entityManager, fagsakRepository));
5359
scenarioBuilder = TestScenarioBuilder.builderMedSøknad(FagsakYtelseType.UNGDOMSYTELSE)
5460
.medBruker(BRUKER_AKTØR_ID);
5561
}
@@ -74,7 +80,7 @@ void setUp() {
7480
}
7581

7682
@Test
77-
void skal_ikke_returnere_årsak_dersom_ingen_ungdomsprogramperioder_etter_opphørsdato() {
83+
void skal_ikke_returnere_årsak_dersom_ungdomsprogramperiode_sluttdato_er_lik_opphørsdato() {
7884
var behandling = scenarioBuilder.lagre(entityManager);
7985
scenarioBuilder.lagreFagsak(behandlingRepositoryProvider);
8086
ungdomsprogramPeriodeRepository.lagre(behandling.getId(), List.of(new UngdomsprogramPeriode(DatoIntervallEntitet.fraOgMedTilOgMed(STP, OPPHØRSDATO))));
@@ -92,6 +98,43 @@ void setUp() {
9298
assertThat(fagsakBehandlingÅrsakTypeMap.isEmpty()).isTrue();
9399
}
94100

101+
@Test
102+
void skal_returnere_årsak_dersom_ungdomsprogramperiode_sluttdato_er_etter_opphørsdato() {
103+
var behandling = scenarioBuilder.lagre(entityManager);
104+
scenarioBuilder.lagreFagsak(behandlingRepositoryProvider);
105+
ungdomsprogramPeriodeRepository.lagre(behandling.getId(), List.of(new UngdomsprogramPeriode(DatoIntervallEntitet.fraOgMedTilOgMed(STP, OPPHØRSDATO.plusDays(1)))));
106+
107+
behandling.avsluttBehandling();
108+
entityManager.flush();
109+
110+
var builder = new HendelseInfo.Builder();
111+
builder.leggTilAktør(BRUKER_AKTØR_ID);
112+
builder.medHendelseId("1");
113+
builder.medOpprettet(LocalDateTime.now());
114+
var fagsakBehandlingÅrsakTypeMap = utleder.finnFagsakerTilVurdering(new UngdomsprogramOpphørHendelse(builder.build(), OPPHØRSDATO));
115+
116+
117+
validerHarÅrsak(fagsakBehandlingÅrsakTypeMap);
118+
}
119+
120+
@Test
121+
void skal_returnere_årsak_dersom_ungdomsprogramperiode_sluttdato_er_før_opphørsdato() {
122+
var behandling = scenarioBuilder.lagre(entityManager);
123+
scenarioBuilder.lagreFagsak(behandlingRepositoryProvider);
124+
ungdomsprogramPeriodeRepository.lagre(behandling.getId(), List.of(new UngdomsprogramPeriode(DatoIntervallEntitet.fraOgMedTilOgMed(STP, OPPHØRSDATO.minusDays(1)))));
125+
126+
behandling.avsluttBehandling();
127+
entityManager.flush();
128+
129+
var builder = new HendelseInfo.Builder();
130+
builder.leggTilAktør(BRUKER_AKTØR_ID);
131+
builder.medHendelseId("1");
132+
builder.medOpprettet(LocalDateTime.now());
133+
var fagsakBehandlingÅrsakTypeMap = utleder.finnFagsakerTilVurdering(new UngdomsprogramOpphørHendelse(builder.build(), OPPHØRSDATO));
134+
135+
136+
validerHarÅrsak(fagsakBehandlingÅrsakTypeMap);
137+
}
95138

96139
@Test
97140
void skal_returnere_årsak_dersom_en_ungdomsprogramperiode_som_går_over_opphørsdato() {
@@ -109,7 +152,12 @@ void setUp() {
109152
var fagsakBehandlingÅrsakTypeMap = utleder.finnFagsakerTilVurdering(new UngdomsprogramOpphørHendelse(builder.build(), OPPHØRSDATO));
110153

111154

155+
validerHarÅrsak(fagsakBehandlingÅrsakTypeMap);
156+
}
157+
158+
private static void validerHarÅrsak(Map<Fagsak, BehandlingÅrsakType> fagsakBehandlingÅrsakTypeMap) {
112159
assertThat(fagsakBehandlingÅrsakTypeMap.keySet().size()).isEqualTo(1);
160+
assertThat(fagsakBehandlingÅrsakTypeMap.values().iterator().next()).isEqualTo(RE_HENDELSE_OPPHØR_UNGDOMSPROGRAM);
113161
}
114162

115163
}

0 commit comments

Comments
 (0)