Skip to content

Commit 3aae43b

Browse files
committed
Legg på -Xconsistent-data-class-copy-visibility
1 parent 9eee976 commit 3aae43b

File tree

48 files changed

+460
-252
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+460
-252
lines changed

Diff for: behandling/revurdering/domain/src/main/kotlin/behandling/revurdering/domain/GrunnlagsdataOgVilkårsvurderingerRevurdering.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ data class GrunnlagsdataOgVilkårsvurderingerRevurdering(
8282
}
8383

8484
override fun oppdaterFradragsgrunnlag(fradragsgrunnlag: List<Fradragsgrunnlag>): GrunnlagsdataOgVilkårsvurderingerRevurdering {
85-
return copy(grunnlagsdata = grunnlagsdata.copy(fradragsgrunnlag = fradragsgrunnlag))
85+
return copy(grunnlagsdata = grunnlagsdata.oppdaterFradragsgrunnlag(fradragsgrunnlag))
8686
}
8787

8888
/* jah: Beholdes så lenge command-typene støtter fradragstypen avkorting. En mulighet er å splitte fradragstypene i command/query slik at vi ikke trenger bekymre oss for at ugyldige fradrag sniker seg inn i beregningen. */

Diff for: build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ subprojects {
137137
compilerOptions {
138138
jvmTarget.set(JvmTarget.JVM_21)
139139
freeCompilerArgs.add("-progressive")
140+
freeCompilerArgs.add("-Xconsistent-data-class-copy-visibility")
140141
allWarningsAsErrors.set(true)
141142
}
142143
}

Diff for: common/infrastructure/src/main/kotlin/no/nav/su/se/bakover/common/infrastructure/web/Resultat.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import no.nav.su.se.bakover.common.sikkerLogg
1010
import org.slf4j.LoggerFactory
1111

1212
/* forstår seg på hvordan et resultat med en melding blir til en http-response */
13-
data class Resultat private constructor(
13+
data class Resultat(
1414
val httpCode: HttpStatusCode,
1515
val json: String,
1616
private val contentType: ContentType,

Diff for: database/src/main/kotlin/no/nav/su/se/bakover/database/grunnlag/FormuegrunnlagPostgresRepo.kt

+5-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package no.nav.su.se.bakover.database.grunnlag
22

3-
import arrow.core.getOrElse
43
import kotliquery.Row
54
import no.nav.su.se.bakover.common.deserialize
65
import no.nav.su.se.bakover.common.domain.BehandlingsId
@@ -15,7 +14,7 @@ import no.nav.su.se.bakover.common.serialize
1514
import no.nav.su.se.bakover.common.serializeNullable
1615
import no.nav.su.se.bakover.common.tid.periode.Periode
1716
import vilkår.formue.domain.Formuegrunnlag
18-
import vilkår.formue.domain.Verdier
17+
import vilkår.formue.domain.Formueverdier
1918
import java.util.UUID
2019

2120
internal class FormuegrunnlagPostgresRepo(
@@ -122,8 +121,8 @@ private data class FormueverdierJson(
122121
val kontanter: Int,
123122
val depositumskonto: Int,
124123
) {
125-
fun toDomain(): Verdier {
126-
return Verdier.tryCreate(
124+
fun toDomain(): Formueverdier {
125+
return Formueverdier.create(
127126
verdiIkkePrimærbolig = verdiIkkePrimærbolig,
128127
verdiEiendommer = verdiEiendommer,
129128
verdiKjøretøy = verdiKjøretøy,
@@ -132,13 +131,11 @@ private data class FormueverdierJson(
132131
pengerSkyldt = pengerSkyldt,
133132
kontanter = kontanter,
134133
depositumskonto = depositumskonto,
135-
).getOrElse {
136-
throw IllegalArgumentException(it.toString())
137-
}
134+
)
138135
}
139136
}
140137

141-
private fun Verdier.toJson(): FormueverdierJson {
138+
private fun Formueverdier.toJson(): FormueverdierJson {
142139
return FormueverdierJson(
143140
verdiIkkePrimærbolig = verdiIkkePrimærbolig,
144141
verdiEiendommer = verdiEiendommer,

Diff for: database/src/main/kotlin/no/nav/su/se/bakover/database/grunnlag/LovligOppholdVilkårsvurderingPostgresRepo.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ internal class LovligOppholdVilkårsvurderingPostgresRepo(
118118
}
119119

120120
private fun Row.toVurderingsperiode(): VurderingsperiodeLovligOpphold {
121-
return VurderingsperiodeLovligOpphold.tryCreate(
121+
return VurderingsperiodeLovligOpphold.create(
122122
id = uuid("id"),
123123
opprettet = tidspunkt("opprettet"),
124124
vurdering = ResultatDto.valueOf(string("resultat")).toDomain(),

Diff for: database/src/test/kotlin/no/nav/su/se/bakover/database/grunnlag/FormueVilkårsvurderingPostgresRepoTest.kt

+5-4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import no.nav.su.se.bakover.test.bosituasjongrunnlagEnslig
99
import no.nav.su.se.bakover.test.create
1010
import no.nav.su.se.bakover.test.createFromGrunnlag
1111
import no.nav.su.se.bakover.test.fixedTidspunkt
12+
import no.nav.su.se.bakover.test.grunnlag.formueverdier
1213
import no.nav.su.se.bakover.test.persistence.TestDataHelper
1314
import no.nav.su.se.bakover.test.persistence.dbMetricsStub
1415
import no.nav.su.se.bakover.test.persistence.withMigratedDb
@@ -19,7 +20,7 @@ import org.junit.jupiter.api.Test
1920
import vilkår.common.domain.Vurdering
2021
import vilkår.formue.domain.FormueVilkår
2122
import vilkår.formue.domain.Formuegrunnlag
22-
import vilkår.formue.domain.Verdier
23+
import vilkår.formue.domain.Formueverdier
2324
import vilkår.formue.domain.VurderingsperiodeFormue
2425
import java.util.UUID
2526

@@ -45,7 +46,7 @@ internal class FormueVilkårsvurderingPostgresRepoTest {
4546

4647
private fun formuegrunnlag(
4748
periode: Periode,
48-
kersFormue: Verdier = Verdier.create(
49+
kersFormue: Formueverdier = formueverdier(
4950
verdiIkkePrimærbolig = 9,
5051
verdiEiendommer = 10,
5152
verdiKjøretøy = 11,
@@ -55,7 +56,7 @@ internal class FormueVilkårsvurderingPostgresRepoTest {
5556
kontanter = 15,
5657
depositumskonto = 10,
5758
),
58-
epsFormue: Verdier? = Verdier.create(
59+
epsFormue: Formueverdier? = formueverdier(
5960
verdiIkkePrimærbolig = 1,
6061
verdiEiendommer = 2,
6162
verdiKjøretøy = 3,
@@ -131,7 +132,7 @@ internal class FormueVilkårsvurderingPostgresRepoTest {
131132
grunnlag = nonEmptyListOf(
132133
formuegrunnlag(
133134
periode = periode,
134-
epsFormue = Verdier.create(
135+
epsFormue = formueverdier(
135136
verdiIkkePrimærbolig = 1,
136137
verdiEiendommer = 2,
137138
verdiKjøretøy = 3,

Diff for: database/src/test/kotlin/no/nav/su/se/bakover/database/grunnlag/FradragsgrunnlagPostgresRepoTest.kt

+10-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import no.nav.su.se.bakover.test.persistence.withTransaction
1010
import org.junit.jupiter.api.Test
1111
import vilkår.inntekt.domain.grunnlag.FradragForPeriode
1212
import vilkår.inntekt.domain.grunnlag.FradragTilhører
13+
import vilkår.inntekt.domain.grunnlag.Fradragsgrunnlag
1314
import vilkår.inntekt.domain.grunnlag.Fradragstype
1415
import vilkår.inntekt.domain.grunnlag.UtenlandskInntekt
1516

@@ -52,7 +53,9 @@ internal class FradragsgrunnlagPostgresRepoTest {
5253
)
5354

5455
grunnlagRepo.hentFradragsgrunnlag(behandling.id, tx) shouldBe listOf(
55-
fradragsgrunnlag1.copy(
56+
Fradragsgrunnlag.create(
57+
id = fradragsgrunnlag1.id,
58+
opprettet = fradragsgrunnlag1.opprettet,
5659
fradrag = FradragForPeriode(
5760
fradragstype = Fradragstype.Arbeidsinntekt,
5861
månedsbeløp = 5000.0,
@@ -65,7 +68,9 @@ internal class FradragsgrunnlagPostgresRepoTest {
6568
tilhører = FradragTilhører.BRUKER,
6669
),
6770
),
68-
fradragsgrunnlag2.copy(
71+
Fradragsgrunnlag.create(
72+
id = fradragsgrunnlag2.id,
73+
opprettet = fradragsgrunnlag2.opprettet,
6974
fradrag = FradragForPeriode(
7075
fradragstype = Fradragstype.Kontantstøtte,
7176
månedsbeløp = 15000.0,
@@ -109,7 +114,9 @@ internal class FradragsgrunnlagPostgresRepoTest {
109114
)
110115

111116
grunnlagRepo.hentFradragsgrunnlag(behandling.id, tx) shouldBe listOf(
112-
grunnlag.copy(
117+
Fradragsgrunnlag.create(
118+
id = grunnlag.id,
119+
opprettet = grunnlag.opprettet,
113120
fradrag = FradragForPeriode(
114121
fradragstype = Fradragstype.Annet("vet ikke hva dette er"),
115122
månedsbeløp = 15000.0,

Diff for: domain/src/main/kotlin/no/nav/su/se/bakover/domain/brev/FormueForBrev.kt

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

33
import vilkår.formue.domain.Formuegrunnlag
4-
import vilkår.formue.domain.Verdier
4+
import vilkår.formue.domain.Formueverdier
55

66
data class FormueForBrev(
77
valkersFormue: FormueVerdierForBrev,
@@ -27,7 +27,7 @@ fun Formuegrunnlag.tilFormueForBrev(): FormueForBrev {
2727
)
2828
}
2929

30-
fun Verdier.tilFormueVerdierForBrev(): FormueVerdierForBrev {
30+
fun Formueverdier.tilFormueVerdierForBrev(): FormueVerdierForBrev {
3131
return FormueVerdierForBrev(
3232
verdiSekundærBoliger = this.verdiEiendommer + this.verdiIkkePrimærbolig,
3333
verdiSekundærKjøretøyer = this.verdiKjøretøy,

Diff for: domain/src/main/kotlin/no/nav/su/se/bakover/domain/søknad/søknadinnhold/Søknadsinnhold.kt

+12-9
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,7 @@ sealed interface SøknadInnhold {
2828
val forNav: ForNav
2929
val ektefelle: Ektefelle?
3030

31-
fun oppdaterFnr(fnr: Fnr) = when (this) {
32-
is SøknadsinnholdAlder -> this.copy(
33-
personopplysninger = personopplysninger.copy(fnr = fnr),
34-
)
35-
36-
is SøknadsinnholdUføre -> this.copy(
37-
personopplysninger = personopplysninger.copy(fnr = fnr),
38-
)
39-
}
31+
fun oppdaterFnr(fnr: Fnr): SøknadInnhold
4032

4133
fun type() = when (this) {
4234
is SøknadsinnholdAlder -> Sakstype.ALDER
@@ -126,6 +118,12 @@ data class SøknadsinnholdAlder private constructor(
126118
) =
127119
if (!oppholdstillatelse.erNorskStatsborger && oppholdstillatelse.harOppholdstillatelse == true && oppholdstillatelseAlder.familiegjenforening == null) FeilVedValideringAvOppholdstillatelseOgOppholdstillatelseAlder.FamiliegjenforeningErIkkeutfylt.left() else Unit.right()
128120
}
121+
122+
override fun oppdaterFnr(fnr: Fnr): SøknadsinnholdAlder {
123+
return this.copy(
124+
personopplysninger = Personopplysninger(fnr),
125+
)
126+
}
129127
}
130128

131129
data class SøknadsinnholdUføre private constructor(
@@ -171,6 +169,11 @@ data class SøknadsinnholdUføre private constructor(
171169
).right()
172170
}
173171
}
172+
override fun oppdaterFnr(fnr: Fnr): SøknadsinnholdUføre {
173+
return this.copy(
174+
personopplysninger = Personopplysninger(fnr),
175+
)
176+
}
174177
}
175178

176179
sealed interface FeilVedOpprettelseAvSøknadinnhold {

Diff for: domain/src/main/kotlin/no/nav/su/se/bakover/domain/søknadsbehandling/LukketSøknadsbehandling.kt

+14-1
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ import no.nav.su.se.bakover.domain.søknad.LukkSøknadCommand
1414
import no.nav.su.se.bakover.domain.søknad.Søknad
1515
import no.nav.su.se.bakover.domain.søknadsbehandling.grunnlag.KunneIkkeLeggeTilSkattegrunnlag
1616
import no.nav.su.se.bakover.domain.søknadsbehandling.stønadsperiode.Aldersvurdering
17+
import org.jetbrains.annotations.TestOnly
1718
import vilkår.vurderinger.domain.EksterneGrunnlagSkatt
1819

1920
/**
2021
* En avvist søknadsbehandling kan resultere i et "vedtak" eller "avbrutt". Derfor arver den fra "avsluttet" og ikke "avbrutt" eller "vedtak".
2122
* "Trukket" og "Bortfalt" anses som "avbrutt".
2223
*/
23-
2424
data class LukketSøknadsbehandling private constructor(
2525
val underliggendeSøknadsbehandling: Søknadsbehandling,
2626
override valknad: Søknad.Journalført.MedOppgave.Lukket,
@@ -169,4 +169,17 @@ data class LukketSøknadsbehandling private constructor(
169169
return Unit.right()
170170
}
171171
}
172+
173+
/**
174+
* TODO jah: Det er litt uheldig at søknadsbehandlingshistorikken ligger på LukketSøknad, men ikke den underliggende søknadsbehandlingen når den lukkes fra domenet, men den ligger på begge når den hentes fra databasen. Sammen med en private konstruktør, blir det vanskelig å teste.
175+
* Måtte legge til denne funksjonen pga. privat konstruktør.
176+
*/
177+
@TestOnly
178+
fun oppdaterSøknadshistorikkForTest(historikk: Søknadsbehandlingshistorikk): LukketSøknadsbehandling {
179+
return LukketSøknadsbehandling(
180+
underliggendeSøknadsbehandling = underliggendeSøknadsbehandling,
181+
søknad = søknad,
182+
søknadsbehandlingsHistorikk = historikk,
183+
)
184+
}
172185
}

Diff for: domain/src/main/kotlin/no/nav/su/se/bakover/domain/vilkår/formue/LeggTilFormuevilkårRequest.kt

+7-7
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import no.nav.su.se.bakover.domain.søknadsbehandling.Søknadsbehandlingshendels
1313
import vilkår.formue.domain.FormueVilkår
1414
import vilkår.formue.domain.FormuegrenserFactory
1515
import vilkår.formue.domain.Formuegrunnlag
16+
import vilkår.formue.domain.Formueverdier
1617
import vilkår.formue.domain.KunneIkkeLageFormueGrunnlag
17-
import vilkår.formue.domain.Verdier
1818
import vilkår.vurderinger.domain.Konsistensproblem
1919

2020
data class LeggTilFormuevilkårRequest(
@@ -68,23 +68,23 @@ data class LeggTilFormuevilkårRequest(
6868

6969
sealed interface Grunnlag {
7070
val periode: Periode
71-
val epsFormue: Verdier?
72-
val søkersFormue: Verdier
71+
val epsFormue: Formueverdier?
72+
val søkersFormue: Formueverdier
7373
val begrunnelse: String?
7474
valInnhenteMerInformasjon: Boolean
7575

7676
data class Søknadsbehandling(
7777
override val periode: Periode,
78-
override val epsFormue: Verdier?,
79-
override valkersFormue: Verdier,
78+
override val epsFormue: Formueverdier?,
79+
override valkersFormue: Formueverdier,
8080
override val begrunnelse: String?,
8181
override valInnhenteMerInformasjon: Boolean,
8282
) : Grunnlag
8383

8484
data class Revurdering(
8585
override val periode: Periode,
86-
override val epsFormue: Verdier?,
87-
override valkersFormue: Verdier,
86+
override val epsFormue: Formueverdier?,
87+
override valkersFormue: Formueverdier,
8888
override val begrunnelse: String?,
8989

9090
) : Grunnlag {

Diff for: domain/src/main/kotlin/no/nav/su/se/bakover/domain/vilkår/lovligopphold/LeggTilLovligOppholdRequest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ data class LeggTilLovligOppholdRequest(
4343
private fun toVurderingsperiode(
4444
clock: Clock,
4545
) = vurderinger.map {
46-
VurderingsperiodeLovligOpphold.tryCreate(
46+
VurderingsperiodeLovligOpphold.create(
4747
opprettet = Tidspunkt.now(clock),
4848
vurdering = it.status.toResultat(),
4949
vurderingsperiode = it.periode,

Diff for: domain/src/test/kotlin/no/nav/su/se/bakover/domain/brev/FormueForBrevTest.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import io.kotest.matchers.shouldBe
44
import no.nav.su.se.bakover.common.tid.periode.år
55
import no.nav.su.se.bakover.test.create
66
import no.nav.su.se.bakover.test.fixedTidspunkt
7+
import no.nav.su.se.bakover.test.grunnlag.formueverdier
78
import org.junit.jupiter.api.Test
89
import vilkår.formue.domain.Formuegrunnlag
9-
import vilkår.formue.domain.Verdier
1010
import java.util.UUID
1111

1212
internal class FormueForBrevTest {
@@ -19,7 +19,7 @@ internal class FormueForBrevTest {
1919
id = UUID.randomUUID(),
2020
opprettet = fixedTidspunkt,
2121
periode = periode,
22-
epsFormue = Verdier.create(
22+
epsFormue = formueverdier(
2323
verdiIkkePrimærbolig = 10,
2424
verdiEiendommer = 10,
2525
verdiKjøretøy = 10,
@@ -29,7 +29,7 @@ internal class FormueForBrevTest {
2929
kontanter = 10,
3030
depositumskonto = 10,
3131
),
32-
søkersFormue = Verdier.create(
32+
søkersFormue = formueverdier(
3333
verdiIkkePrimærbolig = 10,
3434
verdiEiendommer = 10,
3535
verdiKjøretøy = 10,
@@ -67,7 +67,7 @@ internal class FormueForBrevTest {
6767

6868
@Test
6969
fun `regner ut verdiene av formuen riktig`() {
70-
val verdier = Verdier.create(
70+
val verdier = formueverdier(
7171
verdiIkkePrimærbolig = 10,
7272
verdiEiendommer = 10,
7373
verdiKjøretøy = 10,

Diff for: domain/src/test/kotlin/no/nav/su/se/bakover/domain/revurdering/LeggTilBosituasjonKonsistentProblemTest.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import no.nav.su.se.bakover.common.tid.periode.Periode
1010
import no.nav.su.se.bakover.common.tid.periode.år
1111
import no.nav.su.se.bakover.test.bosituasjongrunnlagEnslig
1212
import no.nav.su.se.bakover.test.bosituasjongrunnlagEpsUførFlyktning
13-
import no.nav.su.se.bakover.test.empty
1413
import no.nav.su.se.bakover.test.epsFnr
1514
import no.nav.su.se.bakover.test.fixedTidspunkt
1615
import no.nav.su.se.bakover.test.fradragsgrunnlagArbeidsinntekt
@@ -24,7 +23,7 @@ import vilkår.bosituasjon.domain.grunnlag.Bosituasjon
2423
import vilkår.bosituasjon.domain.grunnlag.Bosituasjon.Companion.harEPS
2524
import vilkår.bosituasjon.domain.grunnlag.Bosituasjon.Companion.perioderMedEPS
2625
import vilkår.bosituasjon.domain.grunnlag.Bosituasjon.Companion.perioderUtenEPS
27-
import vilkår.formue.domain.Verdier
26+
import vilkår.formue.domain.Formueverdier
2827
import vilkår.inntekt.domain.grunnlag.FradragTilhører
2928
import vilkår.inntekt.domain.grunnlag.Fradragstype
3029
import java.util.UUID
@@ -149,7 +148,7 @@ class LeggTilBosituasjonKonsistentProblemTest {
149148
).getOrFail().let { oppdatert ->
150149
oppdatert.grunnlagsdata.bosituasjon.harEPS() shouldBe true
151150
oppdatert.vilkårsvurderinger.formue.harEPSFormue() shouldBe true
152-
oppdatert.vilkårsvurderinger.formue.grunnlag.single().epsFormue shouldBe Verdier.empty()
151+
oppdatert.vilkårsvurderinger.formue.grunnlag.single().epsFormue shouldBe Formueverdier.empty()
153152
}
154153
}
155154
}

Diff for: domain/src/test/kotlin/no/nav/su/se/bakover/domain/søknadsbehandling/lukk/LukketSøknadsbehandlingTest.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ internal class LukketSøknadsbehandlingTest {
6060
lukketAv = saksbehandler,
6161
innsendtAv = veileder,
6262
),
63-
).copy(
64-
søknadsbehandlingsHistorikk = søknadsbehandling.søknadsbehandlingsHistorikk.leggTilNyHendelse(
63+
).oppdaterSøknadshistorikkForTest(
64+
historikk = søknadsbehandling.søknadsbehandlingsHistorikk.leggTilNyHendelse(
6565
nySøknadsbehandlingshendelse(
6666
tidspunkt = command.lukketTidspunkt,
6767
saksbehandler = command.saksbehandler,

0 commit comments

Comments
 (0)