Skip to content

Commit e4d5c55

Browse files
committed
Fix hentSakerSomMåGenerereMeldeperioderFra test
1 parent c67ff74 commit e4d5c55

File tree

6 files changed

+80
-28
lines changed

6 files changed

+80
-28
lines changed

app/src/main/kotlin/no/nav/tiltakspenger/saksbehandling/meldekort/ports/MeldeperiodeRepo.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import no.nav.tiltakspenger.libs.common.SakId
55
import no.nav.tiltakspenger.libs.persistering.domene.SessionContext
66
import no.nav.tiltakspenger.saksbehandling.meldekort.domene.Meldeperiode
77
import no.nav.tiltakspenger.saksbehandling.meldekort.domene.MeldeperiodeKjeder
8-
import no.nav.tiltakspenger.saksbehandling.saksbehandling.domene.sak.Sak
98
import java.time.LocalDate
109
import java.time.LocalDateTime
1110

@@ -35,5 +34,5 @@ interface MeldeperiodeRepo {
3534
sessionContext: SessionContext? = null,
3635
): Meldeperiode?
3736

38-
fun hentSakerSomMåGenerereMeldeperioderFra(ikkeGenererEtter: LocalDate): List<Sak>
37+
fun hentSakerSomMåGenerereMeldeperioderFra(ikkeGenererEtter: LocalDate, limit: Int = 10): List<SakId>
3938
}

app/src/main/kotlin/no/nav/tiltakspenger/saksbehandling/meldekort/service/GenererMeldeperioderService.kt

+7-6
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,23 @@ class GenererMeldeperioderService(
1616
val logger = KotlinLogging.logger { }
1717

1818
fun genererMeldeperioderForSaker(): List<Either<SakId, SakId>> {
19-
val saker: List<Sak> = meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(Sak.ikkeGenererEtter())
20-
val resultat = saker.map { sak ->
19+
val sakIDer: List<SakId> = meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(Sak.ikkeGenererEtter())
20+
val resultat = sakIDer.map { sakId ->
2121
Either.catch {
22+
val sak = sakRepo.hentForSakId(sakId)!!
2223
val (sakMedNyeMeldeperioder, meldeperioder) = sak.genererMeldeperioder()
2324
sessionFactory.withTransactionContext { tx ->
2425
sakRepo.oppdaterSisteDagSomGirRett(
25-
sakId = sak.id,
26+
sakId = sakId,
2627
sisteDagSomGirRett = sakMedNyeMeldeperioder.sisteDagSomGirRett,
2728
sessionContext = tx,
2829
)
2930
meldeperiodeRepo.lagre(meldeperioder, tx)
3031
}
31-
sak.id
32+
sakId
3233
}.mapLeft {
33-
logger.error(it) { "Feil oppstod ved generering av nye meldeperioder for sak ${sak.id}" }
34-
sak.id
34+
logger.error(it) { "Feil oppstod ved generering av nye meldeperioder for sak $sakId" }
35+
sakId
3536
}
3637
}
3738
return resultat

app/src/main/kotlin/no/nav/tiltakspenger/saksbehandling/repository/meldekort/MeldeperiodePostgresRepo.kt

+6-7
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ import no.nav.tiltakspenger.libs.persistering.infrastruktur.sqlQuery
1818
import no.nav.tiltakspenger.saksbehandling.meldekort.domene.Meldeperiode
1919
import no.nav.tiltakspenger.saksbehandling.meldekort.domene.MeldeperiodeKjeder
2020
import no.nav.tiltakspenger.saksbehandling.meldekort.ports.MeldeperiodeRepo
21-
import no.nav.tiltakspenger.saksbehandling.repository.sak.SakPostgresRepo.Companion.toSak
22-
import no.nav.tiltakspenger.saksbehandling.saksbehandling.domene.sak.Sak
2321
import no.nav.tiltakspenger.saksbehandling.saksbehandling.domene.sak.Saksnummer
2422
import java.time.LocalDate
2523
import java.time.LocalDateTime
@@ -92,20 +90,21 @@ internal class MeldeperiodePostgresRepo(
9290
}
9391
}
9492

95-
override fun hentSakerSomMåGenerereMeldeperioderFra(ikkeGenererEtter: LocalDate): List<Sak> {
93+
override fun hentSakerSomMåGenerereMeldeperioderFra(ikkeGenererEtter: LocalDate, limit: Int): List<SakId> {
9694
return sessionFactory.withSessionContext { sessionContext ->
9795
sessionContext.withSession { session ->
9896
session.run(
9997
queryOf(
98+
// language=SQL
10099
"""
101100
with temp as (
102-
select s.*, max(m.til_og_med) as til_og_med from sak s join meldeperiode m on s.id = m.sak_id
103-
group by s.id)
104-
select * from temp where til_og_med < siste_dag_som_gir_rett and til_og_med < :ikkeGenererEtter;
101+
select s.id, s.siste_dag_som_gir_rett, max(m.til_og_med) as til_og_med from sak s join meldeperiode m on s.id = m.sak_id group by s.id
102+
)
103+
select * from temp where til_og_med < siste_dag_som_gir_rett and til_og_med < :ikkeGenererEtter limit $limit;
105104
""".trimIndent(),
106105
mapOf("ikkeGenererEtter" to ikkeGenererEtter),
107106
).map {
108-
it.toSak(sessionContext)
107+
SakId.fromString(it.string("id"))
109108
}.asList,
110109
)
111110
}

app/src/test/kotlin/no/nav/tiltakspenger/saksbehandling/db/TestDataHelperBehandlingEx.kt

+15
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,21 @@ internal fun TestDataHelper.persisterAvbruttFørstegangsbehandling(
148148
return sakRepo.hentForSakId(sakMedFørstegangsbehandling.id)!! to avbruttBehandling
149149
}
150150

151+
/** Skal kun persistere en helt tom sak */
152+
internal fun TestDataHelper.persisterNySak(
153+
sakId: SakId = SakId.random(),
154+
fnr: Fnr = Fnr.random(),
155+
saksnummer: Saksnummer = this.saksnummerGenerator.neste(),
156+
): Sak {
157+
return ObjectMother.nySak(
158+
sakId = sakId,
159+
fnr = fnr,
160+
saksnummer = saksnummer,
161+
).also {
162+
sakRepo.opprettSak(it)
163+
}
164+
}
165+
151166
/**
152167
* Persisterer og et rammevedtak.
153168
*/

app/src/test/kotlin/no/nav/tiltakspenger/saksbehandling/fakes/repos/MeldeperiodeFakeRepo.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("UnusedImport")
2+
13
package no.nav.tiltakspenger.saksbehandling.fakes.repos
24

35
import arrow.atomic.Atomic
@@ -7,7 +9,6 @@ import no.nav.tiltakspenger.libs.persistering.domene.SessionContext
79
import no.nav.tiltakspenger.saksbehandling.meldekort.domene.Meldeperiode
810
import no.nav.tiltakspenger.saksbehandling.meldekort.domene.MeldeperiodeKjeder
911
import no.nav.tiltakspenger.saksbehandling.meldekort.ports.MeldeperiodeRepo
10-
import no.nav.tiltakspenger.saksbehandling.saksbehandling.domene.sak.Sak
1112
import java.time.LocalDate
1213
import java.time.LocalDateTime
1314

@@ -45,7 +46,7 @@ class MeldeperiodeFakeRepo : MeldeperiodeRepo {
4546
return data.get()[meldeperiodeId]
4647
}
4748

48-
override fun hentSakerSomMåGenerereMeldeperioderFra(ikkeGenererEtter: LocalDate): List<Sak> {
49+
override fun hentSakerSomMåGenerereMeldeperioderFra(ikkeGenererEtter: LocalDate, limit: Int): List<SakId> {
4950
TODO("????")
5051
}
5152
}

app/src/test/kotlin/no/nav/tiltakspenger/saksbehandling/repository/meldekort/MeldeperiodePostgresRepoTest.kt

+48-11
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package no.nav.tiltakspenger.saksbehandling.repository.meldekort
22

33
import io.kotest.matchers.shouldBe
4+
import no.nav.tiltakspenger.libs.periodisering.Periode
45
import no.nav.tiltakspenger.saksbehandling.db.persisterIverksattFørstegangsbehandling
6+
import no.nav.tiltakspenger.saksbehandling.db.persisterNySak
57
import no.nav.tiltakspenger.saksbehandling.db.withMigratedDb
6-
import no.nav.tiltakspenger.saksbehandling.felles.april
78
import no.nav.tiltakspenger.saksbehandling.felles.februar
89
import no.nav.tiltakspenger.saksbehandling.felles.januar
9-
import no.nav.tiltakspenger.saksbehandling.felles.mai
1010
import no.nav.tiltakspenger.saksbehandling.felles.mars
11+
import no.nav.tiltakspenger.saksbehandling.objectmothers.ObjectMother
1112
import org.junit.jupiter.api.Nested
1213
import org.junit.jupiter.api.Test
1314

@@ -43,18 +44,54 @@ class MeldeperiodePostgresRepoTest {
4344
}
4445

4546
@Test
46-
fun `sak må generere`() {
47+
fun `hentSakerSomMåGenerereMeldeperioderFra - `() {
4748
withMigratedDb { testDataHelper ->
4849
val meldeperiodeRepo = testDataHelper.meldeperiodeRepo
4950
val sakRepo = testDataHelper.sakRepo
50-
val (sak) = testDataHelper.persisterIverksattFørstegangsbehandling(
51-
deltakelseFom = 24.februar(2025),
52-
deltakelseTom = 6.april(2025),
53-
)
54-
sakRepo.oppdaterSisteDagSomGirRett(sak.id, sak.sisteDagSomGirRett)
55-
// TODO: Denne testen ser ut til å være avhengig av dagens dato om må fikses slik at den oppfører seg likt uansett hvilken dag det er
56-
// sak.meldeperiodeKjeder.meldeperioder.size shouldBe 1
57-
meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(1.mai(2025)) shouldBe listOf(sak)
51+
52+
// Lager en test som kun tester databasespørringen hentSakerSomMåGenerereMeldeperioderFra - uavhengig av domeneimplementasjonen
53+
val sak = testDataHelper.persisterNySak()
54+
55+
// Tester at det ikke er generert noen meldeperioder enda. Skal ikke spille noen rolle hvilken dag vi sender inn her.
56+
meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(1.januar(2000)) shouldBe emptyList()
57+
meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(1.januar(2025)) shouldBe emptyList()
58+
meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(1.januar(2050)) shouldBe emptyList()
59+
// Later som det finnes et vedtak som siste dag gir rett 31.januar(2025)
60+
sakRepo.oppdaterSisteDagSomGirRett(sak.id, 31.januar(2025))
61+
// TODO jah: Virkelig bug som må fikses. Vi må også persistere førsteDagSomGirRett, for å kunne avgjøre om vi skal generere en meldeperiode dersom det ikke finnes meldeperioder fra før.
62+
// meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(ikkeGenererEtter = 1.januar(2050)) shouldBe listOf(sak)
63+
64+
testDataHelper.sessionFactory.withSessionContext {
65+
meldeperiodeRepo.lagre(
66+
ObjectMother.meldeperiode(
67+
sakId = sak.id,
68+
saksnummer = sak.saksnummer,
69+
periode = Periode(6.januar(2025), 19.januar(2025)),
70+
),
71+
it,
72+
)
73+
}
74+
75+
meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(19.januar(2025)) shouldBe emptyList()
76+
meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(20.januar(2025)) shouldBe listOf(sak.id)
77+
testDataHelper.sessionFactory.withSessionContext {
78+
meldeperiodeRepo.lagre(
79+
ObjectMother.meldeperiode(
80+
sakId = sak.id,
81+
saksnummer = sak.saksnummer,
82+
periode = Periode(20.januar(2025), 2.februar(2025)),
83+
),
84+
it,
85+
)
86+
}
87+
meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(19.januar(2025)) shouldBe emptyList()
88+
89+
sakRepo.oppdaterSisteDagSomGirRett(sak.id, 2.februar(2025))
90+
meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(2.februar(2025)) shouldBe emptyList()
91+
92+
sakRepo.oppdaterSisteDagSomGirRett(sak.id, 3.februar(2025))
93+
meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(2.februar(2025)) shouldBe emptyList()
94+
meldeperiodeRepo.hentSakerSomMåGenerereMeldeperioderFra(3.februar(2025)) shouldBe listOf(sak.id)
5895
}
5996
}
6097
}

0 commit comments

Comments
 (0)