Skip to content

Commit fef76cf

Browse files
bumper r&r og tbd-libs
1 parent 37c4d11 commit fef76cf

File tree

3 files changed

+60
-79
lines changed

3 files changed

+60
-79
lines changed

build.gradle.kts

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
val junitJupiterVersion = "5.11.3"
2-
2+
val rapidsAndRiversVersion = "2024111211071731406062.648687519469"
3+
val tbdLibsVersion = "2024.11.12-11.09-16cf2599"
34
plugins {
45
kotlin("jvm") version "2.0.21"
56
}
@@ -24,7 +25,9 @@ repositories {
2425
}
2526

2627
dependencies {
27-
implementation("com.github.navikt:rapids-and-rivers:2024020507581707116327.1c34df474331")
28+
implementation("com.github.navikt:rapids-and-rivers:$rapidsAndRiversVersion")
29+
30+
testImplementation("com.github.navikt.tbd-libs:rapids-and-rivers-test:$tbdLibsVersion")
2831

2932
testImplementation("org.junit.jupiter:junit-jupiter:$junitJupiterVersion")
3033
testRuntimeOnly("org.junit.platform:junit-platform-launcher")

src/main/kotlin/no/nav/helse/behovsakkumulator/Behovsakkumulator.kt

+11-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,16 @@ package no.nav.helse.behovsakkumulator
22

33
import com.fasterxml.jackson.databind.JsonNode
44
import com.fasterxml.jackson.databind.node.ObjectNode
5+
import com.github.navikt.tbd_libs.rapids_and_rivers.JsonMessage
6+
import com.github.navikt.tbd_libs.rapids_and_rivers.River
7+
import com.github.navikt.tbd_libs.rapids_and_rivers.asLocalDateTime
8+
import com.github.navikt.tbd_libs.rapids_and_rivers.isMissingOrNull
9+
import com.github.navikt.tbd_libs.rapids_and_rivers_api.MessageContext
10+
import com.github.navikt.tbd_libs.rapids_and_rivers_api.MessageMetadata
11+
import com.github.navikt.tbd_libs.rapids_and_rivers_api.MessageProblems
12+
import com.github.navikt.tbd_libs.rapids_and_rivers_api.RapidsConnection
13+
import io.micrometer.core.instrument.MeterRegistry
514
import net.logstash.logback.argument.StructuredArguments.keyValue
6-
import no.nav.helse.rapids_rivers.*
715
import org.slf4j.Logger
816
import org.slf4j.LoggerFactory
917
import java.time.LocalDateTime
@@ -30,11 +38,11 @@ class Behovsakkumulator(rapidsConnection: RapidsConnection) : River.PacketListen
3038
}.register(this)
3139
}
3240

33-
override fun onError(problems: MessageProblems, context: MessageContext) {
41+
override fun onError(problems: MessageProblems, context: MessageContext, metadata: MessageMetadata) {
3442
sikkerLog.error("forstår ikke behov:\n${problems.toExtendedReport()}")
3543
}
3644

37-
override fun onPacket(packet: JsonMessage, context: MessageContext) {
45+
override fun onPacket(packet: JsonMessage, context: MessageContext, metadata: MessageMetadata, meterRegistry: MeterRegistry) {
3846
loggBehov(log, packet)
3947
loggBehov(sikkerLog, packet)
4048

src/test/kotlin/no/nav/helse/behovsakkumulator/BehovsakkumulatorTest.kt

+44-74
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import com.fasterxml.jackson.databind.SerializationFeature
66
import com.fasterxml.jackson.databind.node.ObjectNode
77
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
88
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
9-
import no.nav.helse.rapids_rivers.MessageContext
10-
import no.nav.helse.rapids_rivers.RapidsConnection
9+
import com.github.navikt.tbd_libs.rapids_and_rivers.test_support.TestRapid
1110
import org.junit.jupiter.api.Assertions.assertEquals
1211
import org.junit.jupiter.api.Assertions.assertNotEquals
1312
import org.junit.jupiter.api.Assertions.assertTrue
@@ -38,14 +37,14 @@ internal class BehovsakkumulatorTest {
3837
fun `frittstående svar blir markert final`() {
3938
val behov4 = objectMapper.readTree("""{"@id": "${UUID.randomUUID()}", "@behovId": "behovsid5", "@opprettet": "${LocalDateTime.now()}", "vedtaksperiodeId": "id", "@behov": ["AndreYtelser"]}""")
4039
val løsning4 = behov4.medLøsning("""{ "AndreYtelser": { "felt1": null, "felt2": {}} }""")
41-
rapid.sendTestMessage("behovsid5", behov4.toString())
42-
rapid.sendTestMessage("behovsid5", løsning4)
43-
44-
assertEquals(1, rapid.sentMessages.size)
45-
assertEquals("behovsid5", rapid.sentMessages.first().first)
46-
assertTrue(rapid.sentMessages.first().second["@final"].asBoolean())
47-
assertDoesNotThrow { LocalDateTime.parse(rapid.sentMessages.first().second["@besvart"].asText()) }
48-
val løsninger = rapid.sentMessages.first().second["@løsning"].fields().asSequence().toList()
40+
rapid.sendTestMessage(behov4.toString(), "behovsid5")
41+
rapid.sendTestMessage(løsning4, "behovsid5")
42+
43+
assertEquals(1, rapid.inspektør.size)
44+
assertEquals("behovsid5", rapid.inspektør.key(0))
45+
assertTrue(rapid.inspektør.field(0, "@final").asBoolean())
46+
assertDoesNotThrow { LocalDateTime.parse(rapid.inspektør.field(0, "@besvart").asText()) }
47+
val løsninger = rapid.inspektør.field(0, "@løsning").fields().asSequence().toList()
4948
val løsningTyper = løsninger.map { it.key }
5049
assertTrue(løsningTyper.containsAll(listOf("AndreYtelser")))
5150
assertEquals(1, løsningTyper.size)
@@ -58,17 +57,17 @@ internal class BehovsakkumulatorTest {
5857
val løsning1 = behov1.medLøsning("""{ "Sykepengehistorikk": [] }""")
5958
val løsning2 = behov1.medLøsning("""{ "AndreYtelser": { "felt1": null, "felt2": {}} }""")
6059
val løsning3 = behov1.medLøsning("""{ "Foreldrepenger": {} }""")
61-
rapid.sendTestMessage("behovsid1", behov1.toString())
62-
rapid.sendTestMessage("behovsid1", løsning1)
63-
rapid.sendTestMessage("behovsid1", løsning2)
64-
rapid.sendTestMessage("behovsid1", løsning3)
60+
rapid.sendTestMessage(behov1.toString(), "behovsid1")
61+
rapid.sendTestMessage(løsning1, "behovsid1")
62+
rapid.sendTestMessage(løsning2, "behovsid1")
63+
rapid.sendTestMessage(løsning3, "behovsid1")
6564

6665
val idLøsning3 = objectMapper.readTree(løsning3).path("@id").asText()
67-
assertEquals(1, rapid.sentMessages.size)
68-
val løsninger = rapid.sentMessages.first().second["@løsning"].fields().asSequence().toList()
66+
assertEquals(1, rapid.inspektør.size)
67+
val løsninger = rapid.inspektør.field(0, "@løsning").fields().asSequence().toList()
6968
val løsningTyper = løsninger.map { it.key }
7069
assertTrue(løsningTyper.containsAll(listOf("Foreldrepenger", "AndreYtelser", "Sykepengehistorikk")))
71-
assertEquals(idLøsning3, rapid.sentMessages.last().second.path("@forårsaket_av").path("id").asText())
70+
assertEquals(idLøsning3, rapid.inspektør.field(rapid.inspektør.size - 1, "@forårsaket_av").path("id").asText())
7271
}
7372

7473
@Test
@@ -83,16 +82,16 @@ internal class BehovsakkumulatorTest {
8382
val løsning1ForBehov3 = behov3.medLøsning("""{ "Sykepengehistorikk": [] }""")
8483
val løsning2ForBehov3 = behov3.medLøsning("""{ "AndreYtelser": { "felt1": null, "felt2": {}} }""")
8584
val løsning3ForBehov3 = behov3.medLøsning("""{ "Foreldrepenger": {} }""")
86-
rapid.sendTestMessage("behovsid2", behov2.toString())
87-
rapid.sendTestMessage("behovsid3", behov3.toString())
88-
rapid.sendTestMessage("behovsid2", løsning1ForBehov2)
89-
rapid.sendTestMessage("behovsid3", løsning2ForBehov3)
90-
rapid.sendTestMessage("behovsid2", løsning2ForBehov2)
91-
rapid.sendTestMessage("behovsid3", løsning1ForBehov3)
92-
rapid.sendTestMessage("behovsid3", løsning3ForBehov3)
93-
94-
assertEquals(1, rapid.sentMessages.size)
95-
val record = rapid.sentMessages.first().second
85+
rapid.sendTestMessage(behov2.toString(), "behovsid2")
86+
rapid.sendTestMessage(behov3.toString(), "behovsid3")
87+
rapid.sendTestMessage(løsning1ForBehov2, "behovsid2")
88+
rapid.sendTestMessage(løsning2ForBehov3, "behovsid3")
89+
rapid.sendTestMessage(løsning2ForBehov2, "behovsid2")
90+
rapid.sendTestMessage(løsning1ForBehov3, "behovsid3")
91+
rapid.sendTestMessage(løsning3ForBehov3, "behovsid3")
92+
93+
assertEquals(1, rapid.inspektør.size)
94+
val record = rapid.inspektør.message(0)
9695
val løsninger = record["@løsning"].fields().asSequence().toList()
9796
val løsningTyper = løsninger.map { it.key }
9897
assertTrue(løsningTyper.containsAll(listOf("Foreldrepenger", "AndreYtelser", "Sykepengehistorikk")))
@@ -122,29 +121,28 @@ internal class BehovsakkumulatorTest {
122121
"@løsning": { "Foreldrepenger": [] }
123122
}""".trimMargin()
124123

125-
rapid.sendTestMessage(behovsid0, "THIS IS INVALID JSON")
126-
rapid.sendTestMessage(behovsid1, behov1)
127-
rapid.sendTestMessage(behovsid1, løsning1)
124+
rapid.sendTestMessage("THIS IS INVALID JSON", behovsid0)
125+
rapid.sendTestMessage(behov1, behovsid1)
126+
rapid.sendTestMessage(løsning1, behovsid1)
128127

129-
assertEquals(1, rapid.sentMessages.size)
128+
assertEquals(1, rapid.inspektør.size)
130129
}
131130

132131
@Test
133132
fun `publiserer endelig svar med samme key som siste melding`() {
134133
val behov = objectMapper.readTree("""{"@id": "${UUID.randomUUID()}", "@behovId": "en_behovId", "@opprettet": "${LocalDateTime.now()}", "vedtaksperiodeId": "id", "@behov": ["AndreYtelser", "HeltAndreYtelser"]}""")
135134
val løsning1 = behov.medLøsning("""{ "AndreYtelser": { "felt1": null, "felt2": {}} }""")
136135
val løsning2 = behov.medLøsning("""{ "HeltAndreYtelser": { "felt1": null, "felt2": {}} }""")
137-
rapid.sendTestMessage("behov_nøkkel", behov.toString())
138-
rapid.sendTestMessage("behov_nøkkel", løsning1)
136+
rapid.sendTestMessage(behov.toString(), "behov_nøkkel")
137+
rapid.sendTestMessage(løsning1, "behov_nøkkel")
139138
// I virkeligheten skjer det neppe at en løsning kommer på en annen key enn behovet, dette er bare for å vise
140139
// hva aktuell oppførsel er
141140
val usannsynligKey = "behov_nøkkel_sist"
142-
rapid.sendTestMessage(usannsynligKey, løsning2)
141+
rapid.sendTestMessage(løsning2, usannsynligKey)
143142

144-
assertEquals(1, rapid.sentMessages.size)
145-
val (key, packet) = rapid.sentMessages.first()
146-
assertEquals(usannsynligKey, key)
147-
assertTrue(packet["@final"].asBoolean())
143+
assertEquals(1, rapid.inspektør.size)
144+
assertEquals(usannsynligKey, rapid.inspektør.key(0))
145+
assertTrue(rapid.inspektør.field(0, "@final").asBoolean())
148146
}
149147

150148
@Test
@@ -155,47 +153,19 @@ internal class BehovsakkumulatorTest {
155153
val løsningBehov2 =
156154
objectMapper.readTree("""{"@id": "${UUID.randomUUID()}", "@behovId": "en_annen_behovId", "@opprettet": "${LocalDateTime.now()}", "vedtaksperiodeId": "id2", "@behov": ["AndreYtelser", "NoenAndreYtelser"]}""")
157155
.medLøsning("""{ "AndreYtelser": { "felt1": null, "felt2": {}} }""")
158-
rapid.sendTestMessage("behov_nøkkel", behov.toString())
159-
rapid.sendTestMessage("behov_nøkkel", løsning1)
160-
rapid.sendTestMessage("behov_nøkkel", løsningBehov2)
161-
162-
assertEquals(1, rapid.sentMessages.size)
163-
val (key, packet) = rapid.sentMessages.first()
164-
assertNotEquals("behov_nøkkel", key)
165-
assertEquals(behovId_somIkkeBlirKomplett, key)
166-
assertEquals("behov_uten_fullstendig_løsning", packet["@event_name"].asText())
156+
rapid.sendTestMessage(behov.toString(), "behov_nøkkel")
157+
rapid.sendTestMessage(løsning1, "behov_nøkkel")
158+
rapid.sendTestMessage(løsningBehov2, "behov_nøkkel")
159+
160+
assertEquals(1, rapid.inspektør.size)
161+
assertNotEquals("behov_nøkkel", rapid.inspektør.key(0))
162+
assertEquals(behovId_somIkkeBlirKomplett, rapid.inspektør.key(0))
163+
assertEquals("behov_uten_fullstendig_løsning", rapid.inspektør.field(0, "@event_name").asText())
167164
}
168165

169166
private fun JsonNode.medLøsning(løsning: String) =
170167
(this.deepCopy() as ObjectNode).apply {
171168
put("@id", UUID.randomUUID().toString())
172169
set<ObjectNode>("@løsning", objectMapper.readTree(løsning))
173170
}.toString()
174-
175-
private class TestRapid : RapidsConnection() {
176-
val sentMessages = mutableListOf<Pair<String, JsonNode>>()
177-
178-
fun sendTestMessage(key: String, message: String) {
179-
val context = TestContext(key)
180-
notifyMessage(message, context)
181-
}
182-
183-
override fun publish(message: String) {}
184-
override fun publish(key: String, message: String) {}
185-
override fun rapidName(): String = "test"
186-
override fun start() {}
187-
override fun stop() {}
188-
189-
private inner class TestContext(private val originalKey: String) : MessageContext {
190-
override fun publish(message: String) {
191-
publish(originalKey, message)
192-
}
193-
194-
override fun publish(key: String, message: String) {
195-
sentMessages.add(key to objectMapper.readTree(message))
196-
}
197-
198-
override fun rapidName(): String = "test"
199-
}
200-
}
201171
}

0 commit comments

Comments
 (0)