Skip to content

Commit 8093086

Browse files
committed
La til 'propertytest' for InntektStore for få variasjoner i testdata
1 parent 8b92c8e commit 8093086

File tree

5 files changed

+83
-5
lines changed

5 files changed

+83
-5
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ dependencies {
107107
testImplementation(Wiremock.standalone)
108108
testImplementation(KoTest.assertions)
109109
testImplementation(KoTest.runner)
110+
testImplementation(KoTest.property)
110111
testImplementation(TestContainers.postgresql)
111112
testImplementation(TestContainers.kafka)
112113
testImplementation(Mockk.mockk)

gradle/dependency-locks/testCompileClasspath.lockfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ io.kotest:kotest-extensions-jvm:4.0.3
4848
io.kotest:kotest-extensions:4.0.3
4949
io.kotest:kotest-fp-jvm:4.0.3
5050
io.kotest:kotest-fp:4.0.3
51+
io.kotest:kotest-property-jvm:4.0.3
5152
io.kotest:kotest-runner-junit5-jvm:4.0.3
5253
io.ktor:ktor-auth-jwt:1.2.6
5354
io.ktor:ktor-auth:1.2.6

gradle/dependency-locks/testImplementationDependenciesMetadata.lockfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ de.huxhorn.sulky:de.huxhorn.sulky.ulid:8.2.0
4141
io.github.microutils:kotlin-logging:1.7.9
4242
io.kotest:kotest-assertions-core-jvm:4.0.3
4343
io.kotest:kotest-assertions-core-metadata:4.0.3
44+
io.kotest:kotest-assertions-metadata:4.0.3
45+
io.kotest:kotest-assertions:4.0.3
46+
io.kotest:kotest-property-jvm:4.0.3
47+
io.kotest:kotest-property-metadata:4.0.3
4448
io.kotest:kotest-runner-junit5-jvm:4.0.3
4549
io.kotest:kotest-runner-junit5-metadata:4.0.3
4650
io.ktor:ktor-auth-jwt:1.2.6

gradle/dependency-locks/testRuntimeClasspath.lockfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ io.kotest:kotest-fp-jvm:4.0.3
7272
io.kotest:kotest-fp:4.0.3
7373
io.kotest:kotest-mpp-jvm:4.0.3
7474
io.kotest:kotest-mpp:4.0.3
75+
io.kotest:kotest-property-jvm:4.0.3
7576
io.kotest:kotest-runner-junit5-jvm:4.0.3
7677
io.ktor:ktor-auth-jwt:1.2.6
7778
io.ktor:ktor-auth:1.2.6

src/test/kotlin/no/nav/dagpenger/inntekt/db/PostgresTest.kt

Lines changed: 76 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
package no.nav.dagpenger.inntekt.db
22

33
import io.kotest.assertions.assertSoftly
4+
import io.kotest.core.spec.style.StringSpec
45
import io.kotest.matchers.shouldBe
56
import io.kotest.matchers.shouldNotBe
7+
import io.kotest.property.Arb
8+
import io.kotest.property.arbitrary.arb
9+
import io.kotest.property.arbitrary.localDate
10+
import io.kotest.property.arbitrary.next
11+
import io.kotest.property.arbitrary.string
12+
import io.kotest.property.checkAll
613
import java.time.LocalDate
714
import kotlin.test.assertEquals
815
import kotlin.test.assertFalse
@@ -93,11 +100,16 @@ internal class PostgresInntektStoreTest {
93100
val aktørId2 = "5678"
94101

95102
withMigratedDb {
103+
96104
with(PostgresInntektStore(DataSource.instance)) {
97105

106+
val aktør1 =
107+
Inntektparametre(aktørId = aktørId1, vedtakId = "1234", beregningsdato = LocalDate.now())
108+
val aktør2 =
109+
Inntektparametre(aktørId = aktørId2, vedtakId = "1234", beregningsdato = LocalDate.now())
98110
storeInntekt(
99111
StoreInntektCommand(
100-
inntektparametre = Inntektparametre(aktørId = aktørId1, vedtakId = "1234", beregningsdato = LocalDate.now()),
112+
inntektparametre = aktør1,
101113
inntekt = InntektkomponentResponse(
102114
emptyList(),
103115
Aktoer(AktoerType.AKTOER_ID, aktørId1)
@@ -107,7 +119,7 @@ internal class PostgresInntektStoreTest {
107119

108120
storeInntekt(
109121
StoreInntektCommand(
110-
inntektparametre = Inntektparametre(aktørId = aktørId2, vedtakId = "1234", beregningsdato = LocalDate.now()),
122+
inntektparametre = aktør2,
111123
inntekt = InntektkomponentResponse(
112124
emptyList(),
113125
Aktoer(AktoerType.AKTOER_ID, aktørId2)
@@ -116,9 +128,9 @@ internal class PostgresInntektStoreTest {
116128
)
117129

118130
assertSoftly {
119-
getInntektId(Inntektparametre(aktørId = aktørId1, vedtakId = "1234", beregningsdato = LocalDate.now())) shouldNotBe null
120-
getInntektId(Inntektparametre(aktørId = aktørId2, vedtakId = "1234", beregningsdato = LocalDate.now())) shouldNotBe null
121-
getInntektId(Inntektparametre(aktørId = aktørId2, vedtakId = "1234", beregningsdato = LocalDate.now())) shouldNotBe getInntektId(Inntektparametre(aktørId = aktørId1, vedtakId = "1234", beregningsdato = LocalDate.now()))
131+
getInntektId(aktør1) shouldNotBe null
132+
getInntektId(aktør2) shouldNotBe null
133+
getInntektId(aktør2) shouldNotBe getInntektId(aktør1)
122134
getInntektId(Inntektparametre(aktørId = aktørId2, vedtakId = "464664", beregningsdato = LocalDate.now())) shouldBe null
123135
getInntektId(Inntektparametre(aktørId = "3535535335", vedtakId = "1234", beregningsdato = LocalDate.now())) shouldBe null
124136
}
@@ -277,3 +289,62 @@ internal class PostgresInntektStoreTest {
277289
}
278290
}
279291
}
292+
293+
internal class InntektsStorePropertyTest : StringSpec() {
294+
295+
init {
296+
withMigratedDb {
297+
val store = PostgresInntektStore(DataSource.instance)
298+
299+
"Alle inntekter skal kunne hentes når de lagres" {
300+
checkAll(storeInntekCommandGenerator) { command: StoreInntektCommand ->
301+
val stored = store.storeInntekt(command)
302+
store.getInntektId(command.inntektparametre) shouldBe stored.inntektId
303+
}
304+
}
305+
306+
"Alle inntekter skal kunne hentes når de lagres med samme vedtak id men forskjellig person uten fødselsnummer" {
307+
checkAll(storeInntektCommandGeneratorWithSameVedtakidAndBeregningsDato) { command: StoreInntektCommand ->
308+
val stored = store.storeInntekt(command)
309+
store.getInntektId(command.inntektparametre) shouldBe stored.inntektId
310+
}
311+
}
312+
}
313+
}
314+
315+
private val storeInntekCommandGenerator = arb {
316+
val stringArb = Arb.string(10, 11)
317+
generateSequence {
318+
StoreInntektCommand(
319+
inntektparametre = Inntektparametre(
320+
aktørId = stringArb.next(it),
321+
vedtakId = stringArb.next(it),
322+
fødselnummer = stringArb.next(it),
323+
beregningsdato = Arb.localDate(minYear = 2010, maxYear = LocalDate.now().year).next(it)
324+
),
325+
inntekt = InntektkomponentResponse(
326+
arbeidsInntektMaaned = emptyList(),
327+
ident = Aktoer(AktoerType.AKTOER_ID, "1234")
328+
)
329+
)
330+
}
331+
}
332+
333+
private val storeInntektCommandGeneratorWithSameVedtakidAndBeregningsDato = arb {
334+
val stringArb = Arb.string(10, 11)
335+
generateSequence {
336+
StoreInntektCommand(
337+
inntektparametre = Inntektparametre(
338+
aktørId = stringArb.next(it),
339+
vedtakId = "12345",
340+
fødselnummer = null,
341+
beregningsdato = LocalDate.now()
342+
),
343+
inntekt = InntektkomponentResponse(
344+
arbeidsInntektMaaned = emptyList(),
345+
ident = Aktoer(AktoerType.AKTOER_ID, "1234")
346+
)
347+
)
348+
}
349+
}
350+
}

0 commit comments

Comments
 (0)