diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/v2/UnderholdController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v2/UnderholdController.kt index 1831744e..2ef6fd54 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/v2/UnderholdController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v2/UnderholdController.kt @@ -24,8 +24,6 @@ import no.nav.bidrag.behandling.transformers.underhold.henteOgValidereUnderholds import no.nav.bidrag.behandling.transformers.underhold.validerePerioder import no.nav.bidrag.behandling.transformers.underhold.validerePerioderFaktiskTilsynsutgift import no.nav.bidrag.behandling.transformers.underhold.validerePerioderTilleggsstønad -import no.nav.bidrag.behandling.transformers.underhold.tilStønadTilBarnetilsynDto -import no.nav.bidrag.behandling.transformers.underhold.validerePerioder import no.nav.bidrag.commons.util.secureLogger import org.springframework.http.HttpStatus import org.springframework.web.bind.annotation.DeleteMapping @@ -119,7 +117,7 @@ class UnderholdController( return OppdatereUnderholdResponse( stønadTilBarnetilsyn = underholdService.oppdatereStønadTilBarnetilsynManuelt(underholdskostnad, request), underholdskostnad = - dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(underholdskostnad.behandling), + dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(underholdskostnad.behandling), valideringsfeil = underholdskostnad.barnetilsyn.validerePerioder(), ) } @@ -202,7 +200,7 @@ class UnderholdController( tilleggsstønad = dtomapper.tilTilleggsstønadDto(oppdatertTilleggsstønad), underholdskostnad = dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(underholdskostnad.behandling), - valideringsfeil = underholdskostnad.tilleggsstønad.validerePerioderTilleggsstønad(underholdskostnad) + valideringsfeil = underholdskostnad.tilleggsstønad.validerePerioderTilleggsstønad(underholdskostnad), ) } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnControllerTest.kt index be95b120..463d49f6 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnControllerTest.kt @@ -3,6 +3,8 @@ package no.nav.bidrag.behandling.controller import com.ninjasquad.springmockk.MockkBean import io.kotest.assertions.assertSoftly import io.kotest.matchers.collections.shouldHaveSize +import io.kotest.matchers.maps.shouldHaveSize +import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe import io.mockk.every @@ -12,7 +14,6 @@ import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.database.repository.GrunnlagRepository import no.nav.bidrag.behandling.dto.v1.beregning.ResultatBeregningBarnDto import no.nav.bidrag.behandling.dto.v1.beregning.ResultatSærbidragsberegningDto -import no.nav.bidrag.behandling.dto.v2.validering.BeregningValideringsfeil import no.nav.bidrag.behandling.utils.testdata.opprettAlleAktiveGrunnlagFraFil import no.nav.bidrag.behandling.utils.testdata.opprettGyldigBehandlingForBeregningOgVedtak import no.nav.bidrag.behandling.utils.testdata.oppretteBehandling @@ -178,7 +179,7 @@ class BehandlingBeregnControllerTest : KontrollerTestRunner() { "${rootUriV1()}/behandling/${behandling.id}/beregn", HttpMethod.POST, HttpEntity.EMPTY, - BeregningValideringsfeil::class.java, + Any::class.java, ) // then @@ -186,24 +187,33 @@ class BehandlingBeregnControllerTest : KontrollerTestRunner() { returnert shouldNotBe null returnert.statusCode shouldBe HttpStatus.BAD_REQUEST returnert.body shouldNotBe null - returnert.body!!.virkningstidspunkt shouldBe null - returnert.body!!.husstandsmedlem shouldBe null - returnert.body!!.sivilstand shouldNotBe null - assertSoftly(returnert.body!!.sivilstand!!) { - hullIPerioder shouldHaveSize 0 - overlappendePerioder shouldHaveSize 0 - fremtidigPeriode shouldBe false - manglerPerioder shouldBe true - ingenLøpendePeriode shouldBe false - } - assertSoftly(returnert.body!!.inntekter!!) { - barnetillegg shouldBe null - utvidetBarnetrygd shouldBe null - kontantstøtte shouldBe null - småbarnstillegg shouldBe null - årsinntekter shouldNotBe null - årsinntekter!! shouldHaveSize 1 - } + } + + val body = returnert.body as LinkedHashMap<*, *> + + body["virkningstidspukt"] shouldBe null + body["husstandsmedlem"] shouldBe null + body["sivilstand"] shouldNotBe null + + assertSoftly(body["sivilstand"] as LinkedHashMap<*, *>) { + shouldNotBeNull() + get("hullIPerioder") shouldNotBe null + get("hullIPerioder") as ArrayList<*> shouldHaveSize 0 + get("overlappendePerioder") shouldNotBe null + get("overlappendePerioder") as ArrayList<*> shouldHaveSize 0 + get("fremtidigPeriode") as Boolean shouldBe false + get("manglerPerioder") as Boolean shouldBe true + get("ingenLøpendePeriode") as Boolean shouldBe false + } + + assertSoftly(body["inntekter"] as LinkedHashMap<*, *>) { + shouldHaveSize(5) + get("barnetillegg") shouldBe null + get("utvidetBarnetrygd") shouldBe null + get("kontantstøtte") shouldBe null + get("småbarnstillegg") shouldBe null + get("årsinntekter") shouldNotBe null + get("årsinntekter") as ArrayList<*> shouldHaveSize 1 } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/VedtakControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/VedtakControllerTest.kt index 922e9ca9..efebf343 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/VedtakControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/VedtakControllerTest.kt @@ -1,7 +1,7 @@ package no.nav.bidrag.behandling.controller +import io.kotest.assertions.assertSoftly import io.kotest.matchers.collections.shouldContain -import io.kotest.matchers.collections.shouldContainAll import io.kotest.matchers.date.shouldHaveSameDayAs import io.kotest.matchers.shouldBe import io.kotest.matchers.string.shouldContain @@ -12,7 +12,6 @@ import no.nav.bidrag.behandling.database.datamodell.Grunnlag import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.database.repository.GrunnlagRepository import no.nav.bidrag.behandling.dto.v2.behandling.Grunnlagsdatatype -import no.nav.bidrag.behandling.dto.v2.validering.BeregningValideringsfeil import no.nav.bidrag.behandling.service.GrunnlagService import no.nav.bidrag.behandling.toggleFatteVedtakName import no.nav.bidrag.behandling.utils.testdata.SAKSBEHANDLER_IDENT @@ -248,12 +247,14 @@ class VedtakControllerTest : KontrollerTestRunner() { "${rootUriV2()}/behandling/fattevedtak/${behandling.id}", HttpMethod.POST, null, - BeregningValideringsfeil::class.java, + Any::class.java, ) response.statusCode shouldBe HttpStatus.BAD_REQUEST response.headers[HttpHeaders.WARNING]!!.first() shouldContain "Validering feilet - Feil ved validering av behandling for beregning" - response.body!!.måBekrefteNyeOpplysninger.map { it.type } shouldContainAll listOf(Grunnlagsdatatype.SKATTEPLIKTIGE_INNTEKTER) + assertSoftly((response.body as LinkedHashMap<*, *>)["måBekrefteNyeOpplysninger"] as ArrayList<*>) { + (first() as LinkedHashMap<*, *>)["type"] as String shouldBe Grunnlagsdatatype.SKATTEPLIKTIGE_INNTEKTER.name + } } @Test @@ -283,12 +284,14 @@ class VedtakControllerTest : KontrollerTestRunner() { "${rootUriV2()}/behandling/fattevedtak/${behandling.id}", HttpMethod.POST, null, - BeregningValideringsfeil::class.java, + Any::class.java, ) response.statusCode shouldBe HttpStatus.BAD_REQUEST response.headers[HttpHeaders.WARNING]!!.first() shouldContain "Validering feilet - Feil ved validering av behandling for beregning" - response.body!!.måBekrefteNyeOpplysninger.map { it.type } shouldContainAll listOf(Grunnlagsdatatype.SKATTEPLIKTIGE_INNTEKTER) + assertSoftly((response.body as LinkedHashMap<*, *>)["måBekrefteNyeOpplysninger"] as ArrayList<*>) { + (first() as LinkedHashMap<*, *>)["type"] as String shouldBe Grunnlagsdatatype.SKATTEPLIKTIGE_INNTEKTER.name + } } private fun save(behandling: Behandling) { diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/behandling/HentBehandlingTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/behandling/HentBehandlingTest.kt index 1a186cb9..8a1dc65a 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/behandling/HentBehandlingTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/behandling/HentBehandlingTest.kt @@ -2,6 +2,7 @@ package no.nav.bidrag.behandling.controller.behandling import io.kotest.assertions.assertSoftly import io.kotest.matchers.collections.shouldHaveSize +import io.kotest.matchers.maps.shouldHaveSize import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe @@ -11,7 +12,6 @@ import no.nav.bidrag.behandling.database.datamodell.Inntektspost import no.nav.bidrag.behandling.database.datamodell.Utgiftspost import no.nav.bidrag.behandling.dto.v2.behandling.BehandlingDtoV2 import no.nav.bidrag.behandling.dto.v2.behandling.Grunnlagsdatatype -import no.nav.bidrag.behandling.utils.hentInntektForBarn import no.nav.bidrag.behandling.utils.testdata.TestDataPerson import no.nav.bidrag.behandling.utils.testdata.initGrunnlagRespons import no.nav.bidrag.behandling.utils.testdata.opprettGyldigBehandlingForBeregningOgVedtak @@ -28,7 +28,6 @@ import no.nav.bidrag.domene.enums.diverse.Kilde import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering import no.nav.bidrag.domene.enums.inntekt.Inntektstype import no.nav.bidrag.domene.enums.person.Sivilstandskode -import no.nav.bidrag.domene.enums.rolle.Rolletype import no.nav.bidrag.domene.enums.særbidrag.Særbidragskategori import no.nav.bidrag.domene.enums.særbidrag.Utgiftstype import no.nav.bidrag.domene.ident.Personident @@ -64,54 +63,92 @@ class HentBehandlingTest : BehandlingControllerTest() { "${rootUriV2()}/behandling/" + behandling.id, HttpMethod.GET, null, - BehandlingDtoV2::class.java, + Any::class.java, ) // så Assertions.assertEquals(HttpStatus.OK, behandlingRes.statusCode) - assertSoftly(behandlingRes.body!!) { - it.inntekter.beregnetInntekter shouldHaveSize 3 - val beregnetInntekterBM = - it.inntekter.beregnetInntekter.find { it.rolle == Rolletype.BIDRAGSMOTTAKER }!! - beregnetInntekterBM.inntekter shouldHaveSize 3 - val inntekterAlle = - beregnetInntekterBM.inntekter.find { it.inntektGjelderBarnIdent == null } - val inntekterBarn1 = - beregnetInntekterBM.inntekter.hentInntektForBarn(testdataBarn1.ident) - val inntekterBarn2 = - beregnetInntekterBM.inntekter.hentInntektForBarn(testdataBarn2.ident) - inntekterAlle.shouldNotBeNull() - inntekterBarn1.shouldNotBeNull() - inntekterBarn2.shouldNotBeNull() - - assertSoftly(it.inntekter.barnetillegg.toList()) { - this shouldHaveSize 2 - this[0].gjelderBarn shouldBe Personident(testdataBarn1.ident) - this[0].inntektsposter shouldHaveSize 1 - this[0].inntektsposter.first().beløp shouldBe this[0].beløp - this[0].inntektsposter.first().inntektstype shouldBe Inntektstype.BARNETILLEGG_PENSJON - } + val inntekter = (behandlingRes.body as LinkedHashMap<*, *>)["inntekter"] as LinkedHashMap<*, *> + inntekter shouldHaveSize (10) + + val beregnaInntekter = inntekter["beregnetInntekter"] as ArrayList<*> + beregnaInntekter shouldHaveSize 3 + + val beregnaInntekterBm = beregnaInntekter.filter { (it as LinkedHashMap<*, *>)["rolle"] == "BM" } as ArrayList<*> - assertSoftly(inntekterAlle) { - summertInntektListe shouldHaveSize 3 - summertInntektListe[0].skattepliktigInntekt shouldBe BigDecimal(55000) - summertInntektListe[0].barnetillegg shouldBe null - summertInntektListe[0].kontantstøtte shouldBe null + assertSoftly((beregnaInntekterBm.first() as LinkedHashMap<*, *>)["inntekter"] as ArrayList<*>) { + shouldHaveSize(3) + val inntekterIkkeBarn = find { (it as LinkedHashMap<*, *>)["inntektGjelderBarnIdent"] == null } + val inntekterBa1 = find { (it as LinkedHashMap<*, *>)["inntektGjelderBarnIdent"] != null && it["inntektGjelderBarnIdent"] as String == testdataBarn1.ident } + val inntekterBa2 = find { (it as LinkedHashMap<*, *>)["inntektGjelderBarnIdent"] != null && it["inntektGjelderBarnIdent"] as String == testdataBarn2.ident } + + inntekterIkkeBarn.shouldNotBeNull() + inntekterBa1.shouldNotBeNull() + inntekterBa2.shouldNotBeNull() + + assertSoftly(inntekterIkkeBarn as LinkedHashMap<*, *>) { + get("summertInntektListe") as ArrayList<*> shouldHaveSize 3 + ((get("summertInntektListe") as ArrayList<*>).first() as LinkedHashMap<*, *>)["skattepliktigInntekt"] as Int shouldBe 55000 + ((get("summertInntektListe") as ArrayList<*>).first() as LinkedHashMap<*, *>)["barnetillegg"] shouldBe null + ((get("summertInntektListe") as ArrayList<*>).first() as LinkedHashMap<*, *>)["kontantstøtte"] shouldBe null } - assertSoftly(inntekterBarn2) { - summertInntektListe shouldHaveSize 3 - summertInntektListe[0].skattepliktigInntekt shouldBe BigDecimal(55000) - summertInntektListe[0].barnetillegg shouldBe null - summertInntektListe[0].kontantstøtte shouldBe null + + assertSoftly(inntekterBa1 as LinkedHashMap<*, *>) { + get("summertInntektListe") as ArrayList<*> shouldHaveSize 5 + ((get("summertInntektListe") as ArrayList<*>).first() as LinkedHashMap<*, *>)["skattepliktigInntekt"] as Int shouldBe 55000 + ((get("summertInntektListe") as ArrayList<*>).first() as LinkedHashMap<*, *>)["barnetillegg"] as Int shouldBe 5000 + ((get("summertInntektListe") as ArrayList<*>).first() as LinkedHashMap<*, *>)["kontantstøtte"] shouldBe null } - assertSoftly(inntekterBarn1) { - summertInntektListe shouldHaveSize 5 - summertInntektListe[0].skattepliktigInntekt shouldBe BigDecimal(55000) - summertInntektListe[0].barnetillegg shouldBe BigDecimal(5000) - summertInntektListe[0].kontantstøtte shouldBe null + + assertSoftly(inntekterBa2 as LinkedHashMap<*, *>) { + get("summertInntektListe") as ArrayList<*> shouldHaveSize 3 + ((get("summertInntektListe") as ArrayList<*>).first() as LinkedHashMap<*, *>)["skattepliktigInntekt"] as Int shouldBe 55000 + ((get("summertInntektListe") as ArrayList<*>).first() as LinkedHashMap<*, *>)["barnetillegg"] shouldBe null + ((get("summertInntektListe") as ArrayList<*>).first() as LinkedHashMap<*, *>)["kontantstøtte"] shouldBe null } } + + assertSoftly(inntekter["barnetillegg"] as ArrayList<*>) { + shouldHaveSize(2) + + (first() as LinkedHashMap<*, *>)["gjelderBarn"] as String shouldBe Personident(testdataBarn1.ident).verdi + (first() as LinkedHashMap<*, *>)["inntektsposter"] as ArrayList<*> shouldHaveSize 1 + (((first() as LinkedHashMap<*, *>)["inntektsposter"] as ArrayList<*>).first() as LinkedHashMap<*, *>)["beløp"] as Int shouldBe (first() as LinkedHashMap<*, *>)["beløp"] as Int + (((first() as LinkedHashMap<*, *>)["inntektsposter"] as ArrayList<*>).first() as LinkedHashMap<*, *>)["inntektstype"] as String shouldBe Inntektstype.BARNETILLEGG_PENSJON.name + } + + /* + assertSoftly(behandlingRes.body!!) { + + assertSoftly(it.inntekter.barnetillegg.toList()) { + this shouldHaveSize 2 + this[0].gjelderBarn shouldBe Personident(testdataBarn1.ident) + this[0].inntektsposter shouldHaveSize 1 + this[0].inntektsposter.first().beløp shouldBe this[0].beløp + this[0].inntektsposter.first().inntektstype shouldBe Inntektstype.BARNETILLEGG_PENSJON + } + + assertSoftly(inntekterAlle) { + summertInntektListe shouldHaveSize 3 + summertInntektListe[0].skattepliktigInntekt shouldBe BigDecimal(55000) + summertInntektListe[0].barnetillegg shouldBe null + summertInntektListe[0].kontantstøtte shouldBe null + } + assertSoftly(inntekterBarn2) { + summertInntektListe shouldHaveSize 3 + summertInntektListe[0].skattepliktigInntekt shouldBe BigDecimal(55000) + summertInntektListe[0].barnetillegg shouldBe null + summertInntektListe[0].kontantstøtte shouldBe null + } + assertSoftly(inntekterBarn1) { + summertInntektListe shouldHaveSize 5 + summertInntektListe[0].skattepliktigInntekt shouldBe BigDecimal(55000) + summertInntektListe[0].barnetillegg shouldBe BigDecimal(5000) + summertInntektListe[0].kontantstøtte shouldBe null + } + } + */ } @Test @@ -141,21 +178,20 @@ class HentBehandlingTest : BehandlingControllerTest() { "${rootUriV2()}/behandling/" + behandling.id, HttpMethod.GET, null, - BehandlingDtoV2::class.java, + Any::class.java, ) // så Assertions.assertEquals(HttpStatus.OK, behandlingRes.statusCode) - assertSoftly(behandlingRes.body!!) { - it.utgift!!.avslag shouldBe Resultatkode.ALLE_UTGIFTER_ER_FORELDET + assertSoftly((behandlingRes.body as LinkedHashMap<*, *>)["utgift"] as LinkedHashMap<*, *>) { + get("avslag") as String shouldBe Resultatkode.ALLE_UTGIFTER_ER_FORELDET.name } } @Test fun `skal hente behandling særbidrag med avslag godkjent beløp lavere enn forskuddsats`() { // gitt - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal.ZERO behandling.kategori = Særbidragskategori.KONFIRMASJON.name @@ -179,14 +215,14 @@ class HentBehandlingTest : BehandlingControllerTest() { "${rootUriV2()}/behandling/" + behandling.id, HttpMethod.GET, null, - BehandlingDtoV2::class.java, + Any::class.java, ) // så Assertions.assertEquals(HttpStatus.OK, behandlingRes.statusCode) - assertSoftly(behandlingRes.body!!) { - it.utgift!!.avslag shouldBe Resultatkode.GODKJENT_BELØP_ER_LAVERE_ENN_FORSKUDDSSATS + assertSoftly((behandlingRes.body as LinkedHashMap<*, *>)["utgift"] as LinkedHashMap<*, *>) { + get("avslag") as String shouldBe Resultatkode.GODKJENT_BELØP_ER_LAVERE_ENN_FORSKUDDSSATS.name } }