Skip to content

Commit 052af47

Browse files
committed
tester for opprettelse av ny behandling fra et iverksatt-avslag
1 parent 1fe5857 commit 052af47

File tree

8 files changed

+264
-19
lines changed

8 files changed

+264
-19
lines changed

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ sealed interface IverksattSøknadsbehandling : Søknadsbehandling, KanGenerereBr
178178
sakId = sakId,
179179
saksnummer = saksnummer,
180180
søknad = søknad,
181-
oppgaveId = oppgaveId,
181+
oppgaveId = nyOppgaveId,
182182
fnr = fnr,
183183
beregning = beregning,
184184
fritekstTilBrev = fritekstTilBrev,
@@ -254,7 +254,7 @@ sealed interface IverksattSøknadsbehandling : Søknadsbehandling, KanGenerereBr
254254
isFalse = {
255255
VilkårsvurdertSøknadsbehandling.Avslag(
256256
opprettet = opprettet,
257-
oppgaveId = oppgaveId,
257+
oppgaveId = nyOppgaveId,
258258
saksbehandler = saksbehandler,
259259
iverksattSøknadsbehandling = this,
260260
grunnlagsdataOgVilkårsvurderinger = grunnlagsdataOgVilkårsvurderinger.copyWithNewIds(),
@@ -263,7 +263,7 @@ sealed interface IverksattSøknadsbehandling : Søknadsbehandling, KanGenerereBr
263263
isTrue = {
264264
VilkårsvurdertSøknadsbehandling.Avslag(
265265
opprettet = opprettet,
266-
oppgaveId = oppgaveId,
266+
oppgaveId = nyOppgaveId,
267267
saksbehandler = saksbehandler,
268268
iverksattSøknadsbehandling = this,
269269
grunnlagsdataOgVilkårsvurderinger = grunnlagsdataOgVilkårsvurderinger.copyWithNewIds()

domain/src/main/kotlin/no/nav/su/se/bakover/domain/søknadsbehandling/VilkårsvurdertSøknadsbehandling.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,8 @@ sealed interface VilkårsvurdertSøknadsbehandling :
191191
}
192192
}
193193

194-
data class Avslag private constructor(
194+
// internal for tester
195+
data class Avslag internal constructor(
195196
override val opprettet: Tidspunkt,
196197
override val sakId: UUID,
197198
override val saksnummer: Saksnummer,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
package no.nav.su.se.bakover.domain.søknadsbehandling
2+
3+
import arrow.core.nonEmptyListOf
4+
import behandling.søknadsbehandling.domain.VilkårsvurderingerSøknadsbehandling
5+
import io.kotest.matchers.shouldBe
6+
import no.nav.su.se.bakover.common.domain.attestering.Attesteringshistorikk
7+
import no.nav.su.se.bakover.common.domain.oppgave.OppgaveId
8+
import no.nav.su.se.bakover.common.ident.NavIdentBruker
9+
import no.nav.su.se.bakover.common.tid.periode.år
10+
import no.nav.su.se.bakover.test.fixedClock
11+
import no.nav.su.se.bakover.test.fixedTidspunkt
12+
import no.nav.su.se.bakover.test.getOrFail
13+
import no.nav.su.se.bakover.test.shouldBeEqualToExceptId
14+
import no.nav.su.se.bakover.test.søknadsbehandlingIverksattAvslagMedBeregning
15+
import no.nav.su.se.bakover.test.søknadsbehandlingIverksattAvslagUtenBeregning
16+
import no.nav.su.se.bakover.test.vilkår.institusjonsoppholdvilkårInnvilget
17+
import no.nav.su.se.bakover.test.vilkår.utilstrekkeligDokumentert
18+
import org.junit.jupiter.api.Test
19+
import vilkår.opplysningsplikt.domain.OpplysningspliktBeskrivelse
20+
import vilkår.opplysningsplikt.domain.OpplysningspliktVilkår
21+
import vilkår.opplysningsplikt.domain.Opplysningspliktgrunnlag
22+
import vilkår.opplysningsplikt.domain.VurderingsperiodeOpplysningsplikt
23+
24+
class IverksattSøknadsbehandlingTest {
25+
26+
@Test
27+
fun `et avslag med beregning kan opprette ny behandling - innholdet i nye blir for det meste en kopi`() {
28+
val (sak, original) = søknadsbehandlingIverksattAvslagMedBeregning()
29+
30+
original.opprettNySøknadsbehandling(
31+
kanOppretteNyBehandling = true,
32+
nyOppgaveId = OppgaveId(value = "ny oppgaveId"),
33+
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
34+
clock = fixedClock,
35+
).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,
52+
),
53+
),
54+
fritekstTilBrev = original.fritekstTilBrev,
55+
aldersvurdering = original.aldersvurdering,
56+
grunnlagsdataOgVilkårsvurderinger = original.grunnlagsdataOgVilkårsvurderinger,
57+
sakstype = sak.type,
58+
)
59+
}
60+
}
61+
62+
@Test
63+
fun `et avslag uten beregning (pga opplysningsplikt) kan opprette ny behandling - vi innvilger opplysningsplikt, resten er for det meste kopi`() {
64+
val (sak, original) = søknadsbehandlingIverksattAvslagUtenBeregning(
65+
customVilkår = listOf(
66+
institusjonsoppholdvilkårInnvilget(),
67+
utilstrekkeligDokumentert(),
68+
),
69+
)
70+
71+
original.opprettNySøknadsbehandling(
72+
kanOppretteNyBehandling = true,
73+
nyOppgaveId = OppgaveId(value = "ny oppgaveId"),
74+
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
75+
clock = fixedClock,
76+
).getOrFail().let {
77+
it.shouldBeEqualToExceptId(
78+
VilkårsvurdertSøknadsbehandling.Avslag(
79+
id = it.id,
80+
opprettet = fixedTidspunkt,
81+
sakId = sak.id,
82+
saksnummer = sak.saksnummer,
83+
søknad = original.søknad,
84+
oppgaveId = OppgaveId(value = "ny oppgaveId"),
85+
fnr = sak.fnr,
86+
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
87+
attesteringer = Attesteringshistorikk.empty(),
88+
søknadsbehandlingsHistorikk = Søknadsbehandlingshistorikk.nyHistorikk(
89+
Søknadsbehandlingshendelse(
90+
handling = SøknadsbehandlingsHandling.StartetBehandlingFraEtAvslag(original.id),
91+
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
92+
tidspunkt = fixedTidspunkt,
93+
),
94+
),
95+
fritekstTilBrev = original.fritekstTilBrev,
96+
aldersvurdering = original.aldersvurdering,
97+
grunnlagsdataOgVilkårsvurderinger = original.grunnlagsdataOgVilkårsvurderinger.copy(
98+
vilkårsvurderinger = (original.vilkårsvurderinger as VilkårsvurderingerSøknadsbehandling.Uføre).copy(
99+
opplysningsplikt = OpplysningspliktVilkår.Vurdert.tryCreate(
100+
vurderingsperioder = nonEmptyListOf(
101+
VurderingsperiodeOpplysningsplikt.create(
102+
id = (it.grunnlagsdataOgVilkårsvurderinger.vilkårsvurderinger.opplysningsplikt as OpplysningspliktVilkår.Vurdert).vurderingsperioder.single().id,
103+
opprettet = fixedTidspunkt,
104+
periode = år(2021),
105+
grunnlag = Opplysningspliktgrunnlag(
106+
id = (it.grunnlagsdataOgVilkårsvurderinger.vilkårsvurderinger.opplysningsplikt as OpplysningspliktVilkår.Vurdert).vurderingsperioder.single().grunnlag.id,
107+
opprettet = fixedTidspunkt,
108+
periode = år(2021),
109+
beskrivelse = OpplysningspliktBeskrivelse.TilstrekkeligDokumentasjon,
110+
),
111+
),
112+
),
113+
).getOrFail(),
114+
),
115+
),
116+
sakstype = sak.type,
117+
),
118+
)
119+
}
120+
}
121+
122+
@Test
123+
fun `et avslag uten beregning (pga vilkår annet en opplysningsplikt) kan opprette ny behandling`() {
124+
val (sak, original) = søknadsbehandlingIverksattAvslagUtenBeregning()
125+
126+
original.opprettNySøknadsbehandling(
127+
kanOppretteNyBehandling = true,
128+
nyOppgaveId = OppgaveId(value = "ny oppgaveId"),
129+
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
130+
clock = fixedClock,
131+
).getOrFail().let {
132+
it.shouldBeEqualToExceptId(
133+
VilkårsvurdertSøknadsbehandling.Avslag(
134+
id = it.id,
135+
opprettet = fixedTidspunkt,
136+
sakId = sak.id,
137+
saksnummer = sak.saksnummer,
138+
søknad = original.søknad,
139+
oppgaveId = OppgaveId(value = "ny oppgaveId"),
140+
fnr = sak.fnr,
141+
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
142+
attesteringer = Attesteringshistorikk.empty(),
143+
søknadsbehandlingsHistorikk = Søknadsbehandlingshistorikk.nyHistorikk(
144+
Søknadsbehandlingshendelse(
145+
handling = SøknadsbehandlingsHandling.StartetBehandlingFraEtAvslag(original.id),
146+
saksbehandler = NavIdentBruker.Saksbehandler(navIdent = "ny saksbehandler"),
147+
tidspunkt = fixedTidspunkt,
148+
),
149+
),
150+
fritekstTilBrev = original.fritekstTilBrev,
151+
aldersvurdering = original.aldersvurdering,
152+
grunnlagsdataOgVilkårsvurderinger = original.grunnlagsdataOgVilkårsvurderinger,
153+
sakstype = sak.type,
154+
),
155+
156+
)
157+
}
158+
}
159+
}

test-common/src/main/kotlin/SøknadsbehandlingTestData.kt

+29-5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import no.nav.su.se.bakover.common.domain.sak.Sakstype
1616
import no.nav.su.se.bakover.common.extensions.mapFirst
1717
import no.nav.su.se.bakover.common.extensions.mapSecond
1818
import no.nav.su.se.bakover.common.extensions.toNonEmptyList
19+
import no.nav.su.se.bakover.common.extensions.whenever
1920
import no.nav.su.se.bakover.common.ident.NavIdentBruker
2021
import no.nav.su.se.bakover.common.journal.JournalpostId
2122
import no.nav.su.se.bakover.common.person.Fnr
@@ -1079,9 +1080,6 @@ fun vilkårsvurdertSøknadsbehandling(
10791080
"Vi støtter ikke delvis vurderte vilkår i søknadsbehandlingen (enda), da må denne funksjonen endres"
10801081
}
10811082
}
1082-
customVilkår.filterIsInstance<OpplysningspliktVilkår>().ifNotEmpty {
1083-
throw IllegalArgumentException("Vi støtter ikke å manuelt legge til opplysningsplikt-vilkår i søknadsbehandlingen (enda)")
1084-
}
10851083

10861084
val (defaultGrunnlagsdata, defaultVilkår) = GrunnlagsdataOgVilkårsvurderingerSøknadsbehandling(
10871085
grunnlagsdata = grunnlagsdataEnsligUtenFradrag(
@@ -1110,7 +1108,20 @@ fun vilkårsvurdertSøknadsbehandling(
11101108
).let { (sak, søknadsbehandling) ->
11111109
val vilkårsvurdert = when (defaultVilkår) {
11121110
is VilkårsvurderingerSøknadsbehandling.Alder -> {
1113-
søknadsbehandling
1111+
søknadsbehandling.let {
1112+
customVilkår.filterIsInstance<OpplysningspliktVilkår.Vurdert>().isNotEmpty().whenever(
1113+
isFalse = {
1114+
it
1115+
},
1116+
isTrue = {
1117+
it.leggTilOpplysningspliktVilkår(
1118+
vilkår = customVilkår.customOrDefault { defaultVilkår.opplysningsplikt as OpplysningspliktVilkår.Vurdert },
1119+
saksbehandler = saksbehandler,
1120+
)
1121+
.getOrFail()
1122+
},
1123+
)
1124+
}
11141125
.leggTilPensjonsVilkår(
11151126
saksbehandler = saksbehandler,
11161127
vilkår = customVilkår.customOrDefault { defaultVilkår.pensjon as PensjonsVilkår.Vurdert },
@@ -1174,7 +1185,20 @@ fun vilkårsvurdertSøknadsbehandling(
11741185
}
11751186

11761187
is VilkårsvurderingerSøknadsbehandling.Uføre -> {
1177-
søknadsbehandling.leggTilUførevilkår(
1188+
søknadsbehandling.let {
1189+
customVilkår.filterIsInstance<OpplysningspliktVilkår.Vurdert>().isNotEmpty().whenever(
1190+
isFalse = {
1191+
it
1192+
},
1193+
isTrue = {
1194+
it.leggTilOpplysningspliktVilkår(
1195+
vilkår = customVilkår.customOrDefault { defaultVilkår.opplysningsplikt as OpplysningspliktVilkår.Vurdert },
1196+
saksbehandler = saksbehandler,
1197+
)
1198+
.getOrFail()
1199+
},
1200+
)
1201+
}.leggTilUførevilkår(
11781202
saksbehandler = saksbehandler,
11791203
vilkår = customVilkår.customOrDefault { defaultVilkår.uføre as UføreVilkår.Vurdert },
11801204
).getOrFail()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package no.nav.su.se.bakover.test
2+
3+
import io.kotest.matchers.equality.shouldBeEqualToIgnoringFields
4+
import no.nav.su.se.bakover.domain.søknadsbehandling.Søknadsbehandling
5+
import vilkår.vurderinger.domain.GrunnlagsdataOgVilkårsvurderinger
6+
7+
fun Søknadsbehandling.shouldBeEqualToExceptId(other: Søknadsbehandling) {
8+
this.shouldBeEqualToIgnoringFields(
9+
other,
10+
Søknadsbehandling::id,
11+
Søknadsbehandling::grunnlagsdataOgVilkårsvurderinger,
12+
GrunnlagsdataOgVilkårsvurderinger::grunnlagsdata,
13+
GrunnlagsdataOgVilkårsvurderinger::vilkårsvurderinger,
14+
GrunnlagsdataOgVilkårsvurderinger::eksterneGrunnlag,
15+
)
16+
this.grunnlagsdataOgVilkårsvurderinger.shouldBeEqualToExceptId(other.grunnlagsdataOgVilkårsvurderinger)
17+
}

test-common/src/main/kotlin/VilkårOgGrunnlagTestEx.kt

+48
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import arrow.core.Nel
44
import arrow.core.getOrElse
55
import behandling.revurdering.domain.VilkårsvurderingerRevurdering
66
import behandling.søknadsbehandling.domain.VilkårsvurderingerSøknadsbehandling
7+
import io.kotest.assertions.fail
78
import io.kotest.matchers.equality.shouldBeEqualToIgnoringFields
89
import io.kotest.matchers.shouldBe
910
import io.kotest.matchers.shouldNotBe
@@ -23,9 +24,15 @@ import vilkår.inntekt.domain.grunnlag.Fradragsgrunnlag
2324
import vilkår.lovligopphold.domain.LovligOppholdVilkår
2425
import vilkår.opplysningsplikt.domain.OpplysningspliktVilkår
2526
import vilkår.personligoppmøte.domain.PersonligOppmøteVilkår
27+
import vilkår.skatt.domain.Skattegrunnlag
2628
import vilkår.uføre.domain.UføreVilkår
2729
import vilkår.uføre.domain.VurderingsperiodeUføre
30+
import vilkår.vurderinger.domain.EksterneGrunnlag
31+
import vilkår.vurderinger.domain.EksterneGrunnlagSkatt
2832
import vilkår.vurderinger.domain.Grunnlagsdata
33+
import vilkår.vurderinger.domain.GrunnlagsdataOgVilkårsvurderinger
34+
import vilkår.vurderinger.domain.StøtterHentingAvEksternGrunnlag
35+
import vilkår.vurderinger.domain.StøtterIkkeHentingAvEksternGrunnlag
2936
import vilkår.vurderinger.domain.Vilkårsvurderinger
3037
import java.util.UUID
3138

@@ -296,6 +303,47 @@ fun List<Fradragsgrunnlag>.shouldBeEqualToExceptId(expected: List<Fradragsgrunnl
296303
}
297304
}
298305

306+
fun GrunnlagsdataOgVilkårsvurderinger.shouldBeEqualToExceptId(expected: GrunnlagsdataOgVilkårsvurderinger) {
307+
this.grunnlagsdata.shouldBeEqualToExceptId(expected.grunnlagsdata)
308+
this.vilkårsvurderinger.shouldBeEqualToExceptId(expected.vilkårsvurderinger)
309+
this.eksterneGrunnlag.shouldBeEqualToExceptId(expected.eksterneGrunnlag)
310+
}
311+
312+
fun EksterneGrunnlag.shouldBeEqualToExceptId(expected: EksterneGrunnlag) {
313+
when (this) {
314+
is StøtterHentingAvEksternGrunnlag -> this.shouldBeEqualToExceptId(expected as StøtterHentingAvEksternGrunnlag)
315+
StøtterIkkeHentingAvEksternGrunnlag -> this shouldBe expected
316+
}
317+
}
318+
319+
fun StøtterHentingAvEksternGrunnlag.shouldBeEqualToExceptId(expected: StøtterHentingAvEksternGrunnlag) {
320+
this.skatt.shouldBeEqualToExceptId(expected.skatt)
321+
}
322+
323+
fun EksterneGrunnlagSkatt.shouldBeEqualToExceptId(expected: EksterneGrunnlagSkatt) {
324+
when (this) {
325+
is EksterneGrunnlagSkatt.Hentet -> {
326+
if (expected !is EksterneGrunnlagSkatt.Hentet) {
327+
fail("Actual er EksternGrunnlagSkatt.Hentet, expected er EksternGrunnlagSkatt.IkkeHentet")
328+
}
329+
330+
this.søkers.shouldBeEqualToIgnoringFields(expected.søkers, Skattegrunnlag::id)
331+
this.eps.let {
332+
if (it == null) {
333+
expected.eps shouldBe null
334+
} else {
335+
expected.eps shouldNotBe null
336+
it.shouldBeEqualToIgnoringFields(expected.eps!!, Skattegrunnlag::id)
337+
}
338+
}
339+
}
340+
341+
EksterneGrunnlagSkatt.IkkeHentet -> {
342+
this shouldBe expected
343+
}
344+
}
345+
}
346+
299347
fun Grunnlagsdata.shouldBeEqualToExceptId(expected: Grunnlagsdata) {
300348
this.bosituasjon.shouldBeEqualToExceptId(expected.bosituasjon)
301349
this.fradragsgrunnlag.shouldBeEqualToExceptId(expected.fradragsgrunnlag)
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package vilkår.vurderinger
22

3-
import io.kotest.matchers.equality.shouldBeEqualToIgnoringFields
3+
import io.kotest.matchers.shouldNotBe
44
import no.nav.su.se.bakover.test.eksterneGrunnlag.eksternGrunnlagHentet
5+
import no.nav.su.se.bakover.test.shouldBeEqualToExceptId
56
import org.junit.jupiter.api.Test
6-
import vilkår.skatt.domain.Skattegrunnlag
77
import vilkår.vurderinger.domain.EksterneGrunnlagSkatt
88

99
class EksternGrunnlagTest {
@@ -12,10 +12,8 @@ class EksternGrunnlagTest {
1212
fun `kopierer innholdet med ny id`() {
1313
val eksternGrunnlag = eksternGrunnlagHentet()
1414
eksternGrunnlag.copyWithNewIds().let {
15-
(it.skatt as EksterneGrunnlagSkatt.Hentet).søkers.shouldBeEqualToIgnoringFields(
16-
(eksternGrunnlag.skatt as EksterneGrunnlagSkatt.Hentet).søkers,
17-
Skattegrunnlag::id,
18-
)
15+
it.shouldBeEqualToExceptId(eksternGrunnlag)
16+
(it.skatt as EksterneGrunnlagSkatt.Hentet).søkers.id shouldNotBe (eksternGrunnlag.skatt as EksterneGrunnlagSkatt.Hentet).søkers.id
1917
}
2018
}
2119
}

0 commit comments

Comments
 (0)