@@ -6,8 +6,7 @@ import com.fasterxml.jackson.databind.SerializationFeature
6
6
import com.fasterxml.jackson.databind.node.ObjectNode
7
7
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
8
8
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
11
10
import org.junit.jupiter.api.Assertions.assertEquals
12
11
import org.junit.jupiter.api.Assertions.assertNotEquals
13
12
import org.junit.jupiter.api.Assertions.assertTrue
@@ -38,14 +37,14 @@ internal class BehovsakkumulatorTest {
38
37
fun `frittstående svar blir markert final` () {
39
38
val behov4 = objectMapper.readTree(""" {"@id": "${UUID .randomUUID()} ", "@behovId": "behovsid5", "@opprettet": "${LocalDateTime .now()} ", "vedtaksperiodeId": "id", "@behov": ["AndreYtelser"]}""" )
40
39
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()
49
48
val løsningTyper = løsninger.map { it.key }
50
49
assertTrue(løsningTyper.containsAll(listOf (" AndreYtelser" )))
51
50
assertEquals(1 , løsningTyper.size)
@@ -58,17 +57,17 @@ internal class BehovsakkumulatorTest {
58
57
val løsning1 = behov1.medLøsning(""" { "Sykepengehistorikk": [] }""" )
59
58
val løsning2 = behov1.medLøsning(""" { "AndreYtelser": { "felt1": null, "felt2": {}} }""" )
60
59
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" )
65
64
66
65
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()
69
68
val løsningTyper = løsninger.map { it.key }
70
69
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())
72
71
}
73
72
74
73
@Test
@@ -83,16 +82,16 @@ internal class BehovsakkumulatorTest {
83
82
val løsning1ForBehov3 = behov3.medLøsning(""" { "Sykepengehistorikk": [] }""" )
84
83
val løsning2ForBehov3 = behov3.medLøsning(""" { "AndreYtelser": { "felt1": null, "felt2": {}} }""" )
85
84
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 )
96
95
val løsninger = record[" @løsning" ].fields().asSequence().toList()
97
96
val løsningTyper = løsninger.map { it.key }
98
97
assertTrue(løsningTyper.containsAll(listOf (" Foreldrepenger" , " AndreYtelser" , " Sykepengehistorikk" )))
@@ -122,29 +121,28 @@ internal class BehovsakkumulatorTest {
122
121
"@løsning": { "Foreldrepenger": [] }
123
122
}""" .trimMargin()
124
123
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 )
128
127
129
- assertEquals(1 , rapid.sentMessages .size)
128
+ assertEquals(1 , rapid.inspektør .size)
130
129
}
131
130
132
131
@Test
133
132
fun `publiserer endelig svar med samme key som siste melding` () {
134
133
val behov = objectMapper.readTree(""" {"@id": "${UUID .randomUUID()} ", "@behovId": "en_behovId", "@opprettet": "${LocalDateTime .now()} ", "vedtaksperiodeId": "id", "@behov": ["AndreYtelser", "HeltAndreYtelser"]}""" )
135
134
val løsning1 = behov.medLøsning(""" { "AndreYtelser": { "felt1": null, "felt2": {}} }""" )
136
135
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" )
139
138
// I virkeligheten skjer det neppe at en løsning kommer på en annen key enn behovet, dette er bare for å vise
140
139
// hva aktuell oppførsel er
141
140
val usannsynligKey = " behov_nøkkel_sist"
142
- rapid.sendTestMessage(usannsynligKey, løsning2 )
141
+ rapid.sendTestMessage(løsning2, usannsynligKey )
143
142
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())
148
146
}
149
147
150
148
@Test
@@ -155,47 +153,19 @@ internal class BehovsakkumulatorTest {
155
153
val løsningBehov2 =
156
154
objectMapper.readTree(""" {"@id": "${UUID .randomUUID()} ", "@behovId": "en_annen_behovId", "@opprettet": "${LocalDateTime .now()} ", "vedtaksperiodeId": "id2", "@behov": ["AndreYtelser", "NoenAndreYtelser"]}""" )
157
155
.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())
167
164
}
168
165
169
166
private fun JsonNode.medL øsning (løsning : String ) =
170
167
(this .deepCopy() as ObjectNode ).apply {
171
168
put(" @id" , UUID .randomUUID().toString())
172
169
set<ObjectNode >(" @løsning" , objectMapper.readTree(løsning))
173
170
}.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
- }
201
171
}
0 commit comments