Skip to content

Commit

Permalink
Fjerne avhengighet til libs (#215)
Browse files Browse the repository at this point in the history
  • Loading branch information
Watercolours authored Feb 28, 2024
1 parent 397c39b commit 0a32376
Show file tree
Hide file tree
Showing 10 changed files with 1,579 additions and 44 deletions.
4 changes: 0 additions & 4 deletions apps/etterlatte-notifikasjoner/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ dependencies {
implementation(libs.ktor.jackson)
implementation(libs.rapidAndRivers)

implementation(libs.etterlatte.common)
implementation(libs.etterlatte.ktorClientAuth)

implementation(libs.brukernotifikasjonSchemas) {
exclude("org.apache.commons", "commons-compress")
}
Expand All @@ -19,5 +16,4 @@ dependencies {
implementation(libs.kafka.clients)

testImplementation(libs.mockk)
testImplementation(libs.etterlatte.commonTest)
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package no.nav.etterlatte

import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.module.kotlin.readValue
import kotlinx.coroutines.runBlocking
import no.nav.etterlatte.libs.common.innsendtsoeknad.common.InnsendtSoeknad
import no.nav.helse.rapids_rivers.JsonMessage
import no.nav.helse.rapids_rivers.MessageContext
import no.nav.helse.rapids_rivers.RapidsConnection
Expand Down Expand Up @@ -30,7 +30,7 @@ class Notifikasjon(private val sendNotifikasjon: SendNotifikasjon, rapidsConnect

override fun onPacket(packet: JsonMessage, context: MessageContext) {
runBlocking {
val soeknad: InnsendtSoeknad = mapper.readValue(packet["@skjema_info"].toString())
val soeknad = mapper.readValue<Soeknad>(packet["@skjema_info"].toString())

sendNotifikasjon.sendMessage(soeknad)

Expand Down
21 changes: 10 additions & 11 deletions apps/etterlatte-notifikasjoner/src/main/kotlin/SendNotifikasjon.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package no.nav.etterlatte

import com.fasterxml.jackson.databind.JsonNode
import no.nav.brukernotifikasjon.schemas.builders.BeskjedInputBuilder
import no.nav.brukernotifikasjon.schemas.builders.NokkelInputBuilder
import no.nav.brukernotifikasjon.schemas.input.BeskjedInput
import no.nav.brukernotifikasjon.schemas.input.NokkelInput
import no.nav.etterlatte.libs.common.innsendtsoeknad.common.InnsendtSoeknad
import no.nav.etterlatte.libs.common.innsendtsoeknad.common.SoeknadType
import org.apache.kafka.clients.producer.KafkaProducer
import org.apache.kafka.clients.producer.Producer
import org.apache.kafka.clients.producer.ProducerRecord
Expand All @@ -29,19 +28,19 @@ class SendNotifikasjon(
private val sikkerhetsNivaa = 4
private val eksternVarsling = false

fun sendMessage(soeknad: InnsendtSoeknad) {
val innsender = soeknad.innsender.foedselsnummer.svar.value
fun sendMessage(soeknad: Soeknad) {
val innsender = soeknad.innsender.foedselsnummer.value

send(opprettNokkel(innsender), opprettBeskjed(soeknad))
send(opprettNokkel(innsender), opprettBeskjed(soeknad.type))
}

internal fun opprettBeskjed(soeknad: InnsendtSoeknad): BeskjedInput {
internal fun opprettBeskjed(type: Soeknad.Type): BeskjedInput {
val now = LocalDateTime.now(ZoneOffset.UTC)
val weekFromNow = now.plusDays(7)
val tekst = when (soeknad.type) {
SoeknadType.GJENLEVENDEPENSJON -> "Vi har mottatt søknaden din om gjenlevendepensjon"
SoeknadType.BARNEPENSJON -> "Vi har mottatt søknaden din om barnepensjon"
SoeknadType.OMSTILLINGSSTOENAD -> "Vi har mottatt søknaden din om omstillingsstønad"
val tekst = when (type) {
Soeknad.Type.GJENLEVENDEPENSJON -> "Vi har mottatt søknaden din om gjenlevendepensjon"
Soeknad.Type.BARNEPENSJON -> "Vi har mottatt søknaden din om barnepensjon"
Soeknad.Type.OMSTILLINGSSTOENAD -> "Vi har mottatt søknaden din om omstillingsstønad"
}

return BeskjedInputBuilder()
Expand All @@ -65,7 +64,7 @@ class SendNotifikasjon(
producer.send(ProducerRecord(brukernotifikasjontopic, nokkel, beskjed)).get(10, TimeUnit.SECONDS)
} catch (e: Exception) {
logger.error(
"Beskjed til $brukernotifikasjontopic (Ditt NAV) for søknad med id ${nokkel.getGrupperingsId()} feilet.",
"Beskjed til $brukernotifikasjontopic (Ditt NAV) for søknad med id ${nokkel.grupperingsId} feilet.",
e
)
}
Expand Down
25 changes: 25 additions & 0 deletions apps/etterlatte-notifikasjoner/src/main/kotlin/Soeknad.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package no.nav.etterlatte

import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonProperty

@JsonIgnoreProperties(ignoreUnknown = true)
data class Soeknad(
val innsender: Innsender,
val type: Type
) {
enum class Type {
GJENLEVENDEPENSJON,
BARNEPENSJON,
OMSTILLINGSSTOENAD
}
}

data class Innsender(
val foedselsnummer: Foedselsnummer
)

data class Foedselsnummer(
@JsonProperty("svar")
val value: String
)
41 changes: 24 additions & 17 deletions apps/etterlatte-notifikasjoner/src/test/kotlin/NotifikasjonTest.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.module.kotlin.readValue
import io.mockk.mockk
import no.nav.brukernotifikasjon.schemas.input.BeskjedInput
import no.nav.brukernotifikasjon.schemas.input.NokkelInput
import no.nav.etterlatte.Notifikasjon
import no.nav.etterlatte.SendNotifikasjon
import no.nav.etterlatte.libs.common.test.InnsendtSoeknadFixtures
import no.nav.etterlatte.Soeknad
import no.nav.etterlatte.mapper
import no.nav.helse.rapids_rivers.JsonMessage
import no.nav.helse.rapids_rivers.testsupport.TestRapid
Expand Down Expand Up @@ -34,7 +36,9 @@ internal class NotifikasjonTest {

@Test
fun `Skal opprette notifikasjon til innsender ved innsending av gjenlevendepensjon`() {
val soeknad: String = mapper.writeValueAsString(InnsendtSoeknadFixtures.gjenlevendepensjon())
val json = this::class.java.getResource("gjenlevendepensjon.json")!!.readText()
val soeknad: Soeknad = mapper.readValue(json)

val inspector = TestRapid()
.apply {
Notifikasjon(
Expand All @@ -49,7 +53,7 @@ internal class NotifikasjonTest {
"@event_name" to "soeknad_innsendt",
"@dokarkivRetur" to "123456",
"@fnr_soeker" to "07106123912",
"@skjema_info" to mapper.readTree(soeknad),
"@skjema_info" to mapper.readTree(json),
"@lagret_soeknad_id" to "4",
"@dokarkivRetur" to (mapOf("journalpostId" to "3"))
)
Expand All @@ -65,18 +69,20 @@ internal class NotifikasjonTest {
assertEquals("SendNotifikasjon 3", inspector.key(0))
assertEquals(mockKafkaProducer.history().size, 1)
assertEquals(
mockKafkaProducer.history()[0].value().getTekst(),
mockKafkaProducer.history()[0].value().tekst,
"Vi har mottatt søknaden din om gjenlevendepensjon"
)
assertEquals(
InnsendtSoeknadFixtures.gjenlevendepensjon().innsender.foedselsnummer.svar.value,
mockKafkaProducer.history()[0].key().getFodselsnummer()
soeknad.innsender.foedselsnummer.value,
mockKafkaProducer.history()[0].key().fodselsnummer
)
}

@Test
fun `Skal opprette notifikasjon til innsender ved innsending av barnepensjon`() {
val soeknad: String = mapper.writeValueAsString(InnsendtSoeknadFixtures.barnepensjon())
val json = this::class.java.getResource("barnepensjon.json")!!.readText()
val soeknad: Soeknad = mapper.readValue(json)

val inspector = TestRapid()
.apply {
Notifikasjon(
Expand All @@ -91,7 +97,7 @@ internal class NotifikasjonTest {
"@event_name" to "soeknad_innsendt",
"@dokarkivRetur" to "123456",
"@fnr_soeker" to "07106123912",
"@skjema_info" to mapper.readTree(soeknad),
"@skjema_info" to mapper.readTree(json),
"@lagret_soeknad_id" to "4",
"@dokarkivRetur" to (mapOf("journalpostId" to "5"))
)
Expand All @@ -106,17 +112,18 @@ internal class NotifikasjonTest {
assertEquals("4", inspector.message(0).get("@lagret_soeknad_id").asText())
assertEquals("SendNotifikasjon 5", inspector.key(0))
assertEquals(mockKafkaProducer.history().size, 1)
assertEquals(mockKafkaProducer.history()[0].value().getTekst(), "Vi har mottatt søknaden din om barnepensjon")
assertEquals(mockKafkaProducer.history()[0].value().tekst, "Vi har mottatt søknaden din om barnepensjon")
assertEquals(
InnsendtSoeknadFixtures.barnepensjon().innsender.foedselsnummer.svar.value,
mockKafkaProducer.history()[0].key().getFodselsnummer()
soeknad.innsender.foedselsnummer.value,
mockKafkaProducer.history()[0].key().fodselsnummer
)
}

@Test
fun `Skal opprette notifikasjon til innsender ved innsending av omstillingsstoenad`() {
val omstillingsstoenadSoeknad = InnsendtSoeknadFixtures.omstillingsSoeknad()
val soeknad: String = mapper.writeValueAsString(omstillingsstoenadSoeknad)
val json = this::class.java.getResource("omstillingsstoenad.json")!!.readText()
val soeknad: Soeknad = mapper.readValue(json)

val inspector = TestRapid()
.apply {
Notifikasjon(
Expand All @@ -131,7 +138,7 @@ internal class NotifikasjonTest {
"@event_name" to "soeknad_innsendt",
"@dokarkivRetur" to "123456",
"@fnr_soeker" to "07106123912",
"@skjema_info" to mapper.readTree(soeknad),
"@skjema_info" to mapper.readTree(json),
"@lagret_soeknad_id" to "4",
"@dokarkivRetur" to (mapOf("journalpostId" to "5"))
)
Expand All @@ -147,12 +154,12 @@ internal class NotifikasjonTest {
assertEquals("SendNotifikasjon 5", inspector.key(0))
assertEquals(mockKafkaProducer.history().size, 1)
assertEquals(
mockKafkaProducer.history()[0].value().getTekst(),
mockKafkaProducer.history()[0].value().tekst,
"Vi har mottatt søknaden din om omstillingsstønad"
)
assertEquals(
omstillingsstoenadSoeknad.innsender.foedselsnummer.svar.value,
mockKafkaProducer.history()[0].key().getFodselsnummer()
soeknad.innsender.foedselsnummer.value,
mockKafkaProducer.history()[0].key().fodselsnummer
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ import io.mockk.mockk
import no.nav.brukernotifikasjon.schemas.input.BeskjedInput
import no.nav.brukernotifikasjon.schemas.input.NokkelInput
import no.nav.etterlatte.SendNotifikasjon
import no.nav.etterlatte.libs.common.test.InnsendtSoeknadFixtures
import no.nav.etterlatte.Soeknad
import org.apache.kafka.clients.producer.Producer
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneOffset

class SendNotifikasjonTest {
internal class SendNotifikasjonTest {
private val mockKafkaProducer = mockk<Producer<NokkelInput, BeskjedInput>>()
private val sendNotifikasjon = SendNotifikasjon(
mapOf(
Expand All @@ -20,7 +20,7 @@ class SendNotifikasjonTest {

@Test
fun `skal opprette melding for gjenlevendepensjon`() {
val beskjed = sendNotifikasjon.opprettBeskjed(InnsendtSoeknadFixtures.gjenlevendepensjon())
val beskjed = sendNotifikasjon.opprettBeskjed(Soeknad.Type.GJENLEVENDEPENSJON)
assertEquals(false, beskjed.getEksternVarsling())
assertEquals("Vi har mottatt søknaden din om gjenlevendepensjon", beskjed.getTekst())
assertEquals(true, isWithin10Seconds(beskjed.getTidspunkt().toLocalDateTime()))
Expand All @@ -37,7 +37,7 @@ class SendNotifikasjonTest {

@Test
fun `skal opprette melding for barnepensjon`() {
val beskjed = sendNotifikasjon.opprettBeskjed(InnsendtSoeknadFixtures.barnepensjon())
val beskjed = sendNotifikasjon.opprettBeskjed(Soeknad.Type.BARNEPENSJON)
assertEquals(false, beskjed.getEksternVarsling())
assertEquals("Vi har mottatt søknaden din om barnepensjon", beskjed.getTekst())
assertEquals(true, isWithin10Seconds(beskjed.getTidspunkt().toLocalDateTime()))
Expand All @@ -54,7 +54,7 @@ class SendNotifikasjonTest {

@Test
fun `skal opprette melding for omstillingsstoenad`() {
val beskjed = sendNotifikasjon.opprettBeskjed(InnsendtSoeknadFixtures.omstillingsSoeknad())
val beskjed = sendNotifikasjon.opprettBeskjed(Soeknad.Type.OMSTILLINGSSTOENAD)
assertEquals(false, beskjed.getEksternVarsling())
assertEquals("Vi har mottatt søknaden din om omstillingsstønad", beskjed.getTekst())
assertEquals(true, isWithin10Seconds(beskjed.getTidspunkt().toLocalDateTime()))
Expand Down
Loading

0 comments on commit 0a32376

Please sign in to comment.