Skip to content

Commit

Permalink
Legg til JsonSerializer for BA- og KS VersjonertSøknad (#988)
Browse files Browse the repository at this point in the history
* Legg til JsonSerializer for BA- og KS VersjonertSøknad

Pga. nestingen til selve dataobjektet vil det å deserialisere og deretter serialisere samme objekt feile. En custom serialiserer fikser dette.

* Fiks skrivefeil

* Legg til tester for serialisering og deserialisering av søknader

Inkluderer enkle datageneratorer for å gjenbruke samme kode for testene.
  • Loading branch information
GardOS authored Jan 21, 2025
1 parent 78b5a16 commit 1b256a5
Show file tree
Hide file tree
Showing 8 changed files with 849 additions and 622 deletions.
Original file line number Diff line number Diff line change
@@ -1,17 +1,31 @@
package no.nav.familie.kontrakter.ba.søknad

import com.fasterxml.jackson.core.JsonGenerator
import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.DeserializationContext
import com.fasterxml.jackson.databind.JsonDeserializer
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.JsonSerializer
import com.fasterxml.jackson.databind.SerializerProvider
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import com.fasterxml.jackson.databind.annotation.JsonSerialize
import no.nav.familie.kontrakter.felles.søknad.BaksSøknadBase
import no.nav.familie.kontrakter.felles.søknad.MissingVersionException
import no.nav.familie.kontrakter.felles.søknad.UnsupportedVersionException
import no.nav.familie.kontrakter.ba.søknad.v7.Søknad as BarnetrygdSøknadV7
import no.nav.familie.kontrakter.ba.søknad.v8.Søknad as BarnetrygdSøknadV8
import no.nav.familie.kontrakter.ba.søknad.v9.BarnetrygdSøknad as BarnetrygdSøknadV9

class VersjonertBarnetrygdSøknadSerializer : JsonSerializer<VersjonertBarnetrygdSøknad>() {
override fun serialize(
value: VersjonertBarnetrygdSøknad,
jsonGenerator: JsonGenerator,
serializers: SerializerProvider,
) {
jsonGenerator.writePOJO(value.barnetrygdSøknad)
}
}

class VersjonertBarnetrygdSøknadDeserializer : JsonDeserializer<VersjonertBarnetrygdSøknad>() {
/**
* @throws MissingVersionException `kontraktVersjon` ikke finnes i JSON-string.
Expand All @@ -35,6 +49,7 @@ class VersjonertBarnetrygdSøknadDeserializer : JsonDeserializer<VersjonertBarne
}
}

@JsonSerialize(using = VersjonertBarnetrygdSøknadSerializer::class)
@JsonDeserialize(using = VersjonertBarnetrygdSøknadDeserializer::class)
sealed class VersjonertBarnetrygdSøknad(
open val barnetrygdSøknad: BaksSøknadBase,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
package no.nav.familie.kontrakter.ba.søknad

import no.nav.familie.kontrakter.ba.søknad.v1.SIVILSTANDTYPE
import no.nav.familie.kontrakter.ba.søknad.v1.SøknadAdresse
import no.nav.familie.kontrakter.ba.søknad.v4.Søknadstype
import no.nav.familie.kontrakter.ba.søknad.v5.RegistrertBostedType
import no.nav.familie.kontrakter.felles.søknad.Søknadsfelt
import no.nav.familie.kontrakter.ba.søknad.v7.Barn as BarnV7
import no.nav.familie.kontrakter.ba.søknad.v7.Søker as SøkerV7
import no.nav.familie.kontrakter.ba.søknad.v7.Søknad as BarnetrygdSøknadV7
import no.nav.familie.kontrakter.ba.søknad.v8.Barn as BarnV8
import no.nav.familie.kontrakter.ba.søknad.v8.Søker as SøkerV8
import no.nav.familie.kontrakter.ba.søknad.v8.Søknad as BarnetrygdSøknadV8
import no.nav.familie.kontrakter.ba.søknad.v9.BarnetrygdSøknad as BarnetrygdSøknadV9

fun lagBarnetrygdSøknadV9(
kerFnr: String,
barnFnr: String,
): BarnetrygdSøknadV9 =
BarnetrygdSøknadV9(
kontraktVersjon = 9,
søker = lagSøkerV8(søkerFnr),
barn = listOf(lagBarnV8(barnFnr)),
antallEøsSteg = 0,
dokumentasjon = emptyList(),
originalSpråk = "NB",
finnesPersonMedAdressebeskyttelse = false,
søknadstype = Søknadstype.ORDINÆR,
spørsmål = emptyMap(),
teksterUtenomSpørsmål = emptyMap(),
)

fun lagBarnetrygdSøknadV8(
kerFnr: String,
barnFnr: String,
): BarnetrygdSøknadV8 =
BarnetrygdSøknadV8(
kontraktVersjon = 8,
søker = lagSøkerV8(søkerFnr),
barn = listOf(lagBarnV8(barnFnr)),
antallEøsSteg = 0,
dokumentasjon = emptyList(),
originalSpråk = "NB",
søknadstype = Søknadstype.ORDINÆR,
spørsmål = emptyMap(),
teksterUtenomSpørsmål = emptyMap(),
)

fun lagBarnetrygdSøknadV7(
kerFnr: String,
barnFnr: String,
): BarnetrygdSøknadV7 =
BarnetrygdSøknadV7(
kontraktVersjon = 7,
søker = lagSøkerV7(søkerFnr),
barn = listOf(lagBarnV7(barnFnr)),
antallEøsSteg = 0,
dokumentasjon = emptyList(),
originalSpråk = "NB",
søknadstype = Søknadstype.ORDINÆR,
spørsmål = emptyMap(),
teksterUtenomSpørsmål = emptyMap(),
)

fun <T> lagStringSøknadsfelt(verdi: T): Søknadsfelt<T> =
Søknadsfelt(
label = mapOf("no" to ""),
verdi = mapOf("no" to verdi),
)

fun lagSøkerV8(fnr: String): SøkerV8 =
SøkerV8(
harEøsSteg = false,
ident = lagStringSøknadsfelt(fnr),
navn = lagStringSøknadsfelt("Navn"),
statsborgerskap = lagStringSøknadsfelt(listOf("Norge")),
adresse =
lagStringSøknadsfelt(
SøknadAdresse(
adressenavn = "Gate",
postnummer = null,
husbokstav = null,
bruksenhetsnummer = null,
husnummer = null,
poststed = null,
),
),
adressebeskyttelse = false,
sivilstand = lagStringSøknadsfelt(SIVILSTANDTYPE.UOPPGITT),
utenlandsperioder = emptyList(),
arbeidsperioderUtland = emptyList(),
pensjonsperioderUtland = emptyList(),
arbeidsperioderNorge = emptyList(),
pensjonsperioderNorge = emptyList(),
andreUtbetalingsperioder = emptyList(),
idNummer = emptyList(),
spørsmål = emptyMap(),
nåværendeSamboer = null,
tidligereSamboere = emptyList(),
)

fun lagSøkerV7(fnr: String): SøkerV7 =
SøkerV7(
harEøsSteg = false,
ident = lagStringSøknadsfelt(fnr),
navn = lagStringSøknadsfelt("Navn"),
statsborgerskap = lagStringSøknadsfelt(listOf("Norge")),
adresse =
lagStringSøknadsfelt(
SøknadAdresse(
adressenavn = "Gate",
postnummer = null,
husbokstav = null,
bruksenhetsnummer = null,
husnummer = null,
poststed = null,
),
),
sivilstand = lagStringSøknadsfelt(SIVILSTANDTYPE.UOPPGITT),
utenlandsperioder = emptyList(),
arbeidsperioderUtland = emptyList(),
pensjonsperioderUtland = emptyList(),
arbeidsperioderNorge = emptyList(),
pensjonsperioderNorge = emptyList(),
andreUtbetalingsperioder = emptyList(),
idNummer = emptyList(),
spørsmål = emptyMap(),
nåværendeSamboer = null,
tidligereSamboere = emptyList(),
)

fun lagBarnV8(fnr: String): BarnV8 =
BarnV8(
harEøsSteg = false,
ident = lagStringSøknadsfelt(fnr),
navn = lagStringSøknadsfelt(""),
registrertBostedType = lagStringSøknadsfelt(RegistrertBostedType.REGISTRERT_SOKERS_ADRESSE),
alder = null,
andreForelder = null,
utenlandsperioder = emptyList(),
omsorgsperson = null,
idNummer = emptyList(),
spørsmål = emptyMap(),
eøsBarnetrygdsperioder = emptyList(),
)

fun lagBarnV7(fnr: String): BarnV7 =
BarnV7(
harEøsSteg = false,
ident = lagStringSøknadsfelt(fnr),
navn = lagStringSøknadsfelt(""),
registrertBostedType = lagStringSøknadsfelt(RegistrertBostedType.REGISTRERT_SOKERS_ADRESSE),
alder = lagStringSøknadsfelt("1"),
andreForelder = null,
utenlandsperioder = emptyList(),
omsorgsperson = null,
idNummer = emptyList(),
spørsmål = emptyMap(),
eøsBarnetrygdsperioder = emptyList(),
)
Loading

0 comments on commit 1b256a5

Please sign in to comment.