Skip to content

Commit cc06fe4

Browse files
committed
IT test for beregnet avslag
1 parent d9a1ab8 commit cc06fe4

File tree

25 files changed

+411
-74
lines changed

25 files changed

+411
-74
lines changed

behandling/søknadsbehandling/domain/src/main/kotlin/behandling/søknadsbehandling/domain/KunneIkkeOppretteSøknadsbehandling.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ package behandling.søknadsbehandling.domain
33
sealed interface KunneIkkeOppretteSøknadsbehandling {
44
data object ErLukket : KunneIkkeOppretteSøknadsbehandling
55
data object ManglerOppgave : KunneIkkeOppretteSøknadsbehandling
6-
data object HarÅpenSøknadsbehandling : KunneIkkeOppretteSøknadsbehandling
6+
data object KanIkkeStarteNyBehandling : KunneIkkeOppretteSøknadsbehandling
77
data object FeilVedOpprettingAvOppgave : KunneIkkeOppretteSøknadsbehandling
88
}

behandling/søknadsbehandling/presentation/src/main/kotlin/behandling/søknadsbehandling/presentation/KunneIkkeOppretteSøknadsbehandlingEx.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import no.nav.su.se.bakover.common.infrastructure.web.errorJson
88
fun KunneIkkeOppretteSøknadsbehandling.tilResultat() = when (this) {
99
KunneIkkeOppretteSøknadsbehandling.ErLukket -> Feilresponser.søknadErLukket
1010
KunneIkkeOppretteSøknadsbehandling.ManglerOppgave -> Feilresponser.søknadManglerOppgave
11-
KunneIkkeOppretteSøknadsbehandling.HarÅpenSøknadsbehandling -> HttpStatusCode.BadRequest.errorJson(
11+
KunneIkkeOppretteSøknadsbehandling.KanIkkeStarteNyBehandling -> HttpStatusCode.BadRequest.errorJson(
1212
"Det finnes en eksisterende åpen søknadsbehandling. Iverksett eller lukk denne først.",
1313
"finnes_åpen_søknadsbehandling",
1414
)

domain/src/main/kotlin/no/nav/su/se/bakover/domain/søknadsbehandling/IverksattSøknadsbehandling.kt

+7-12
Original file line numberDiff line numberDiff line change
@@ -108,14 +108,15 @@ sealed interface IverksattSøknadsbehandling : Søknadsbehandling, KanGenerereBr
108108
}
109109

110110
sealed interface Avslag : IverksattSøknadsbehandling, ErAvslag, KanGenerereAvslagsbrev {
111+
val erSøknadÅpen: Boolean get() = søknad !is Søknad.Journalført.MedOppgave.Lukket
112+
111113
/**
112114
* Lager en ny behandling, og kopierer over data. Behandlingen vil være i tilsvarende tilstand som originalen, før attestering & iverksetting
113115
* Saksbehandler får da muligheten til å endre behandlingen slik som dem ønsker
114116
*
115117
* Merk at opplysningsplikt vilkåret ved [Avslag.UtenBeregning] blir satt til innvilget.
116118
*/
117119
fun opprettNySøknadsbehandling(
118-
kanOppretteNyBehandling: Boolean,
119120
nyOppgaveId: OppgaveId,
120121
saksbehandler: NavIdentBruker.Saksbehandler,
121122
clock: Clock,
@@ -163,13 +164,12 @@ sealed interface IverksattSøknadsbehandling : Søknadsbehandling, KanGenerereBr
163164
vilkårsvurderinger.avslagsgrunner + avslagsgrunnForBeregning
164165

165166
override fun opprettNySøknadsbehandling(
166-
kanOppretteNyBehandling: Boolean,
167167
nyOppgaveId: OppgaveId,
168168
saksbehandler: NavIdentBruker.Saksbehandler,
169169
clock: Clock,
170170
): Either<KunneIkkeOppretteSøknadsbehandling, Søknadsbehandling> {
171-
return kanOppretteNyBehandling.whenever(
172-
isFalse = { KunneIkkeOppretteSøknadsbehandling.HarÅpenSøknadsbehandling.left() },
171+
return erSøknadÅpen.whenever(
172+
isFalse = { KunneIkkeOppretteSøknadsbehandling.ErLukket.left() },
173173
isTrue = {
174174
val opprettet = Tidspunkt.now(clock)
175175
BeregnetSøknadsbehandling.Avslag(
@@ -183,7 +183,7 @@ sealed interface IverksattSøknadsbehandling : Søknadsbehandling, KanGenerereBr
183183
beregning = beregning,
184184
fritekstTilBrev = fritekstTilBrev,
185185
aldersvurdering = aldersvurdering,
186-
grunnlagsdataOgVilkårsvurderinger = grunnlagsdataOgVilkårsvurderinger,
186+
grunnlagsdataOgVilkårsvurderinger = grunnlagsdataOgVilkårsvurderinger.copyWithNewIds(),
187187
attesteringer = Attesteringshistorikk.empty(),
188188
søknadsbehandlingsHistorikk = Søknadsbehandlingshistorikk.nyHistorikk(
189189
Søknadsbehandlingshendelse(
@@ -234,18 +234,13 @@ sealed interface IverksattSøknadsbehandling : Søknadsbehandling, KanGenerereBr
234234
override val avslagsgrunner: List<Avslagsgrunn> = vilkårsvurderinger.avslagsgrunner
235235

236236
override fun opprettNySøknadsbehandling(
237-
kanOppretteNyBehandling: Boolean,
238237
nyOppgaveId: OppgaveId,
239238
saksbehandler: NavIdentBruker.Saksbehandler,
240239
clock: Clock,
241240
): Either<KunneIkkeOppretteSøknadsbehandling, Søknadsbehandling> {
242241
// TODO - må sjekke stønadsperioden ikke overlapper. Dette blir stoppet ved iverksetting, men dem kan få tilbakemelding mye tidligere
243-
244-
if (søknad is Søknad.Journalført.MedOppgave.Lukket) {
245-
return KunneIkkeOppretteSøknadsbehandling.ErLukket.left()
246-
}
247-
return kanOppretteNyBehandling.whenever(
248-
isFalse = { KunneIkkeOppretteSøknadsbehandling.HarÅpenSøknadsbehandling.left() },
242+
return erSøknadÅpen.whenever(
243+
isFalse = { KunneIkkeOppretteSøknadsbehandling.ErLukket.left() },
249244
isTrue = {
250245
val opprettet = Tidspunkt.now(clock)
251246
val erAvslagGrunnetOpplysningsplikt = vilkårsvurderinger.opplysningsplikt.erAvslag

domain/src/main/kotlin/no/nav/su/se/bakover/domain/søknadsbehandling/opprett/OpprettNySøknadsbehandling.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fun Sak.opprettNySøknadsbehandling(
4545
oppdaterOppgave: ((oppgaveId: OppgaveId, saksbehandler: NavIdentBruker.Saksbehandler) -> Either<Unit, OppgaveHttpKallResponse>)?,
4646
): Either<KunneIkkeOppretteSøknadsbehandling, Triple<Sak, VilkårsvurdertSøknadsbehandling.Uavklart, StatistikkEvent.Behandling.Søknad.Opprettet>> {
4747
if (harÅpenSøknadsbehandling()) {
48-
return KunneIkkeOppretteSøknadsbehandling.HarÅpenSøknadsbehandling.left()
48+
return KunneIkkeOppretteSøknadsbehandling.KanIkkeStarteNyBehandling.left()
4949
}
5050
val søknad = hentSøknad(søknadId).fold(
5151
ifLeft = { throw IllegalArgumentException("Fant ikke søknad $søknadId") },

domain/src/main/kotlin/no/nav/su/se/bakover/domain/vedtak/Avslagsvedtak.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package no.nav.su.se.bakover.domain.vedtak
22

33
import no.nav.su.se.bakover.common.tid.periode.Periode
4-
import no.nav.su.se.bakover.domain.søknad.Søknad
54
import no.nav.su.se.bakover.domain.søknadsbehandling.IverksattSøknadsbehandling
65
import no.nav.su.se.bakover.domain.søknadsbehandling.avslag.ErAvslag
76
import java.time.Clock
@@ -22,7 +21,7 @@ sealed interface Avslagsvedtak : VedtakIverksattSøknadsbehandling, ErAvslag {
2221
*
2322
* Denne sjekker ikke på om det allerede finnes en åpen behandling fra før
2423
*/
25-
val kanStarteNyBehandling: Boolean get() = behandling.søknad !is Søknad.Journalført.MedOppgave.Lukket
24+
val kanStarteNyBehandling: Boolean get() = behandling.erSøknadÅpen
2625

2726
companion object {
2827
fun fromSøknadsbehandlingMedBeregning(

domain/src/test/kotlin/no/nav/su/se/bakover/domain/søknadsbehandling/IverksattSøknadsbehandlingTest.kt

+22-24
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package no.nav.su.se.bakover.domain.søknadsbehandling
22

33
import arrow.core.nonEmptyListOf
44
import behandling.søknadsbehandling.domain.VilkårsvurderingerSøknadsbehandling
5-
import io.kotest.matchers.shouldBe
65
import no.nav.su.se.bakover.common.domain.attestering.Attesteringshistorikk
76
import no.nav.su.se.bakover.common.domain.oppgave.OppgaveId
87
import no.nav.su.se.bakover.common.ident.NavIdentBruker
@@ -28,33 +27,34 @@ class IverksattSøknadsbehandlingTest {
2827
val (sak, original) = søknadsbehandlingIverksattAvslagMedBeregning()
2928

3029
original.opprettNySøknadsbehandling(
31-
kanOppretteNyBehandling = true,
3230
nyOppgaveId = OppgaveId(value = "ny oppgaveId"),
3331
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
3432
clock = fixedClock,
3533
).getOrFail().let {
36-
it shouldBe BeregnetSøknadsbehandling.Avslag(
37-
id = it.id,
38-
opprettet = fixedTidspunkt,
39-
sakId = sak.id,
40-
saksnummer = sak.saksnummer,
41-
søknad = original.søknad,
42-
oppgaveId = OppgaveId(value = "ny oppgaveId"),
43-
fnr = sak.fnr,
44-
beregning = original.beregning,
45-
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
46-
attesteringer = Attesteringshistorikk.empty(),
47-
søknadsbehandlingsHistorikk = Søknadsbehandlingshistorikk.nyHistorikk(
48-
Søknadsbehandlingshendelse(
49-
handling = SøknadsbehandlingsHandling.StartetBehandlingFraEtAvslag(original.id),
50-
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
51-
tidspunkt = fixedTidspunkt,
34+
it.shouldBeEqualToExceptId(
35+
BeregnetSøknadsbehandling.Avslag(
36+
id = it.id,
37+
opprettet = fixedTidspunkt,
38+
sakId = sak.id,
39+
saksnummer = sak.saksnummer,
40+
søknad = original.søknad,
41+
oppgaveId = OppgaveId(value = "ny oppgaveId"),
42+
fnr = sak.fnr,
43+
beregning = original.beregning,
44+
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
45+
attesteringer = Attesteringshistorikk.empty(),
46+
søknadsbehandlingsHistorikk = Søknadsbehandlingshistorikk.nyHistorikk(
47+
Søknadsbehandlingshendelse(
48+
handling = SøknadsbehandlingsHandling.StartetBehandlingFraEtAvslag(original.id),
49+
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
50+
tidspunkt = fixedTidspunkt,
51+
),
5252
),
53+
fritekstTilBrev = original.fritekstTilBrev,
54+
aldersvurdering = original.aldersvurdering,
55+
grunnlagsdataOgVilkårsvurderinger = original.grunnlagsdataOgVilkårsvurderinger,
56+
sakstype = sak.type,
5357
),
54-
fritekstTilBrev = original.fritekstTilBrev,
55-
aldersvurdering = original.aldersvurdering,
56-
grunnlagsdataOgVilkårsvurderinger = original.grunnlagsdataOgVilkårsvurderinger,
57-
sakstype = sak.type,
5858
)
5959
}
6060
}
@@ -69,7 +69,6 @@ class IverksattSøknadsbehandlingTest {
6969
)
7070

7171
original.opprettNySøknadsbehandling(
72-
kanOppretteNyBehandling = true,
7372
nyOppgaveId = OppgaveId(value = "ny oppgaveId"),
7473
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
7574
clock = fixedClock,
@@ -124,7 +123,6 @@ class IverksattSøknadsbehandlingTest {
124123
val (sak, original) = søknadsbehandlingIverksattAvslagUtenBeregning()
125124

126125
original.opprettNySøknadsbehandling(
127-
kanOppretteNyBehandling = true,
128126
nyOppgaveId = OppgaveId(value = "ny oppgaveId"),
129127
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
130128
clock = fixedClock,

domain/src/test/kotlin/no/nav/su/se/bakover/domain/søknadsbehandling/opprett/OpprettNySøknadsbehandlingTest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ internal class OpprettNySøknadsbehandlingTest {
3838
søknadId = søknad.id,
3939
clock = fixedClock,
4040
saksbehandler = saksbehandler,
41-
) { _, _ -> nyOppgaveHttpKallResponse().right() } shouldBe KunneIkkeOppretteSøknadsbehandling.HarÅpenSøknadsbehandling.left()
41+
) { _, _ -> nyOppgaveHttpKallResponse().right() } shouldBe KunneIkkeOppretteSøknadsbehandling.KanIkkeStarteNyBehandling.left()
4242
}
4343

4444
@Test

service/src/test/kotlin/no/nav/su/se/bakover/service/søknad/AvslåSøknadManglendeDokumentasjonServiceImplTest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ internal class AvslåSøknadManglendeDokumentasjonServiceImplTest {
406406
fritekstTilBrev = "fritekstTilBrev",
407407
),
408408
) shouldBe KunneIkkeAvslåSøknad.KunneIkkeOppretteSøknadsbehandling(
409-
KunneIkkeOppretteSøknadsbehandling.HarÅpenSøknadsbehandling,
409+
KunneIkkeOppretteSøknadsbehandling.KanIkkeStarteNyBehandling,
410410
).left()
411411

412412
verify(it.sakService).hentSakForSøknad(nySøknad.id)

service/src/test/kotlin/no/nav/su/se/bakover/service/søknadsbehandling/SøknadsbehandlingServiceOpprettetTest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ internal class SøknadsbehandlingServiceOpprettetTest {
134134
sakId = nySøknad.sakId,
135135
saksbehandler = saksbehandler,
136136
),
137-
) shouldBe KunneIkkeOppretteSøknadsbehandling.HarÅpenSøknadsbehandling.left()
137+
) shouldBe KunneIkkeOppretteSøknadsbehandling.KanIkkeStarteNyBehandling.left()
138138
}
139139
}
140140

vedtak/application/src/main/kotlin/no/nav/su/se/bakover/vedtak/application/VedtakServiceImpl.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,11 @@ class VedtakServiceImpl(
101101
return KunneIkkeStarteNySøknadsbehandling.FeilVedHentingAvPersonForOpprettelseAvOppgave(it).left()
102102
}
103103

104+
if (sak.harÅpenSøknadsbehandling()) {
105+
return KunneIkkeStarteNySøknadsbehandling.ÅpenBehandlingFinnes.left()
106+
}
107+
104108
return vedtak.behandling.opprettNySøknadsbehandling(
105-
kanOppretteNyBehandling = !sak.harÅpenSøknadsbehandling(),
106109
nyOppgaveId = oppgaveService.opprettOppgave(
107110
OppgaveConfig.Søknad(
108111
aktørId = aktørId,

vedtak/domain/src/main/kotlin/no/nav/su/se/bakover/vedtak/domain/KunneIkkeStarteNySøknadsbehandling.kt

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ sealed interface KunneIkkeStarteNySøknadsbehandling {
1313
data class FeilVedHentingAvPersonForOpprettelseAvOppgave(val feil: KunneIkkeHentePerson) :
1414
KunneIkkeStarteNySøknadsbehandling
1515

16+
data object ÅpenBehandlingFinnes : KunneIkkeStarteNySøknadsbehandling
17+
1618
// TODO - ta inn feilmelding - må flytte ting til oppgave-modulen
1719
data object FeilVedOpprettelseAvOppgave : KunneIkkeStarteNySøknadsbehandling
1820
}

web-regresjonstest/src/test/kotlin/no/nav/su/se/bakover/web/LocalTestDataRoutes.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import no.nav.su.se.bakover.test.fixedLocalDate
1717
import no.nav.su.se.bakover.test.generer
1818
import no.nav.su.se.bakover.web.routes.søknad.SØKNAD_PATH
1919
import no.nav.su.se.bakover.web.søknad.ny.nyDigitalSøknad
20-
import no.nav.su.se.bakover.web.søknadsbehandling.opprettAvslåttSøknadsbehandling
20+
import no.nav.su.se.bakover.web.søknadsbehandling.opprettAvslåttSøknadsbehandlingPgaVilkår
2121
import no.nav.su.se.bakover.web.søknadsbehandling.opprettInnvilgetSøknadsbehandling
2222

2323
val localClient = HttpClient(Java) {
@@ -60,7 +60,7 @@ internal fun Route.testDataRoutes() {
6060
appComponents = null,
6161
)
6262
} else {
63-
opprettAvslåttSøknadsbehandling(
63+
opprettAvslåttSøknadsbehandlingPgaVilkår(
6464
fnr = it.fnr ?: Fnr.generer().toString(),
6565
fraOgMed = it.fraOgMed ?: fixedLocalDate.startOfMonth().toString(),
6666
tilOgMed = it.tilOgMed ?: fixedLocalDate.startOfMonth().plusMonths(11).endOfMonth().toString(),

web-regresjonstest/src/test/kotlin/no/nav/su/se/bakover/web/komponenttest/AvslagKomponentTest.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import no.nav.su.se.bakover.test.fixedClock
1313
import no.nav.su.se.bakover.test.generer
1414
import no.nav.su.se.bakover.test.shouldBeType
1515
import no.nav.su.se.bakover.web.søknadsbehandling.BehandlingJson
16-
import no.nav.su.se.bakover.web.søknadsbehandling.opprettAvslåttSøknadsbehandling
16+
import no.nav.su.se.bakover.web.søknadsbehandling.opprettAvslåttSøknadsbehandlingPgaVilkår
1717
import org.junit.jupiter.api.Test
1818
import vilkår.common.domain.Avslagsgrunn
1919
import java.util.UUID
@@ -26,7 +26,7 @@ class AvslagKomponentTest {
2626
) { appComponents ->
2727
val fnr = Fnr.generer()
2828

29-
val sakId = opprettAvslåttSøknadsbehandling(
29+
val sakId = opprettAvslåttSøknadsbehandlingPgaVilkår(
3030
fnr = fnr.toString(),
3131
client = this.client,
3232
).let { søknadsbehandlingJson ->

0 commit comments

Comments
 (0)