From 4019997cfd4c786910da39a34a10cbb50f108d7f Mon Sep 17 00:00:00 2001 From: s148719 Date: Tue, 17 Oct 2023 11:56:57 +0200 Subject: [PATCH] =?UTF-8?q?Endre=20transaksjonsh=C3=A5ndtering=20og=20oppd?= =?UTF-8?q?atere=20tester?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yaml | 6 + .../behandling/config/DefaultConfiguration.kt | 5 +- .../BehandlingBeregnForskuddController.kt | 1 - .../behandling/controller/ExceptionHandler.kt | 2 +- .../controller/InntekterController.kt | 4 +- .../behandling/database/datamodell/Inntekt.kt | 8 +- .../database/datamodell/InntektPostDomain.kt | 6 +- .../behandling/service/BehandlingService.kt | 40 +- .../behandling/transformers/DtoExtensions.kt | 42 +- .../beregning/ForskuddBeregningTest.kt | 11 +- .../BehandlingBeregnForskuddControllerTest.kt | 2 +- .../controller/InntekterControllerTest.kt | 278 ++++++-- .../service/BehandlingServiceTest.kt | 651 +++++++++--------- 13 files changed, 644 insertions(+), 412 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 9eb6fa961..c13292289 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -10,6 +10,12 @@ services: POSTGRES_DB: bidrag-behandling volumes: - db:/var/lib/postgresql/data + zookeeper: + container_name: zookeeper + image: confluentinc/cp-zookeeper:7.1.2 + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ZOOKEEPER_TICK_TIME: 2000 kafka: image: confluentinc/cp-kafka:6.2.1 depends_on: diff --git a/src/main/kotlin/no/nav/bidrag/behandling/config/DefaultConfiguration.kt b/src/main/kotlin/no/nav/bidrag/behandling/config/DefaultConfiguration.kt index 31b18b049..9880a86b6 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/config/DefaultConfiguration.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/config/DefaultConfiguration.kt @@ -15,7 +15,10 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy import org.springframework.context.annotation.Import @EnableAspectJAutoProxy -@OpenAPIDefinition(info = Info(title = "bidrag-behandling", version = "v1"), security = [SecurityRequirement(name = "bearer-key")]) +@OpenAPIDefinition( + info = Info(title = "bidrag-behandling", version = "v1"), + security = [SecurityRequirement(name = "bearer-key")], +) @SecurityScheme(bearerFormat = "JWT", name = "bearer-key", scheme = "bearer", type = SecuritySchemeType.HTTP) @Configuration @EnableJwtTokenValidation diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt index 0ee0d18d3..46c9352df 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt @@ -85,5 +85,4 @@ class BehandlingBeregnForskuddController( return ForskuddBeregningRespons(result.getOrNull(), result.leftOrNull()) } - } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt index b0166cbb1..fbba0ba1a 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt @@ -86,7 +86,7 @@ class ExceptionHandler { data class Error( val status: Int, val message: String, - val fieldErrors: MutableList = mutableListOf() + val fieldErrors: MutableList = mutableListOf(), ) { fun addFieldError( objectName: String, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt index 021cfd54a..5829990c6 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt @@ -41,11 +41,11 @@ class InntekterController(private val behandlingService: BehandlingService) { @PathVariable behandlingId: Long, @RequestBody request: UpdateInntekterRequest, ): InntekterResponse { - val behandling = behandlingService.hentBehandlingById(behandlingId) + var behandling = behandlingService.hentBehandlingById(behandlingId) behandlingService.oppdaterInntekter( behandlingId, - request.inntekter.toInntektDomain(behandling), + request.inntekter.toInntektDomain(behandling!!), request.barnetillegg.toBarnetilleggDomain(behandling), request.utvidetbarnetrygd.toUtvidetbarnetrygdDomain(behandling), request.inntektBegrunnelseMedIVedtakNotat, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt index 2f0edd950..1944608e0 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt @@ -14,19 +14,19 @@ import java.util.Date @Entity(name = "inntekt") class Inntekt( - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "behandling_id", nullable = false) - val behandling: Behandling, - val taMed: Boolean, val inntektType: String?, val belop: BigDecimal, val datoFom: Date?, val datoTom: Date?, val ident: String, val fraGrunnlag: Boolean, + val taMed: Boolean, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "behandling_id", nullable = false) + val behandling: Behandling? = null, @OneToMany(fetch = FetchType.EAGER, mappedBy = "inntekt", cascade = [CascadeType.ALL], orphanRemoval = true) var inntektPostListe: MutableSet = mutableSetOf(), ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt index 0637697fa..729b656ac 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt @@ -12,9 +12,6 @@ import java.math.BigDecimal @Entity(name = "inntekt_post") class InntektPostDomain( - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "inntekt_id", nullable = false) - val inntekt: Inntekt, @Column(name = "belop") val beløp: BigDecimal, val kode: String, @@ -22,4 +19,7 @@ class InntektPostDomain( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "inntekt_id", nullable = false) + val inntekt: Inntekt? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt index e042a9274..83c435b2f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -1,5 +1,6 @@ package no.nav.bidrag.behandling.service +import mu.KotlinLogging import no.nav.bidrag.behandling.behandlingNotFoundException import no.nav.bidrag.behandling.database.datamodell.Barnetillegg import no.nav.bidrag.behandling.database.datamodell.Behandling @@ -19,7 +20,9 @@ import no.nav.bidrag.behandling.transformers.toRolle import no.nav.bidrag.domain.enums.Rolletype import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional -import java.util.Date +import java.util.* + +private val log = KotlinLogging.logger {} @Service class BehandlingService( @@ -88,6 +91,7 @@ class BehandlingService( fun hentBehandlinger(): List = behandlingRepository.hentBehandlinger() + @Transactional fun oppdaterInntekter( behandlingId: Long, inntekter: MutableSet, @@ -95,25 +99,31 @@ class BehandlingService( utvidetbarnetrygd: MutableSet, inntektBegrunnelseMedIVedtakNotat: String?, inntektBegrunnelseKunINotat: String?, - ) = behandlingRepository.save( - behandlingRepository.findBehandlingById(behandlingId) + ) { + var behandling = behandlingRepository.findBehandlingById(behandlingId) .orElseThrow { behandlingNotFoundException(behandlingId) } - .let { - it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat - it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat - it.inntekter.clear() - it.inntekter.addAll(inntekter) + behandling.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat + behandling.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat - it.barnetillegg.clear() - it.barnetillegg.addAll(barnetillegg) + if (behandling.inntekter != inntekter) { + log.info("Oppdaterer inntekter for behandlingsid $behandlingId") + behandling.inntekter.clear() + behandling.inntekter.addAll(inntekter) + } - it.utvidetbarnetrygd.clear() - it.utvidetbarnetrygd.addAll(utvidetbarnetrygd) + if (behandling.barnetillegg != barnetillegg) { + log.info("Oppdaterer barnetillegg for behandlingsid $behandlingId") + behandling.barnetillegg.clear() + behandling.barnetillegg.addAll(barnetillegg) + } - it - }, - ) + if (behandling.utvidetbarnetrygd != utvidetbarnetrygd) { + log.info("Oppdaterer utvidet barnetrygd for behandlingsid $behandlingId") + behandling.utvidetbarnetrygd.clear() + behandling.utvidetbarnetrygd.addAll(utvidetbarnetrygd) + } + } fun updateVirkningsTidspunkt( behandlingId: Long, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt index d94716684..520f850c4 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -69,7 +69,14 @@ fun Set.toDomain(husstandsBarn: HusstandsBarn) = fun Set.toHusstandsBarnDto() = this.map { - HusstandsBarnDto(it.id!!, it.medISaken, it.perioder.toHusstandsBarnPeriodeDto(), it.ident, it.navn, it.foedselsDato?.toLocalDate()) + HusstandsBarnDto( + it.id!!, + it.medISaken, + it.perioder.toHusstandsBarnPeriodeDto(), + it.ident, + it.navn, + it.foedselsDato?.toLocalDate(), + ) }.toSet() fun Set.toDomain(behandling: Behandling) = @@ -91,8 +98,15 @@ fun Set.toInntektDomain(behandling: Behandling) = this.map { val inntekt = Inntekt( - behandling, it.taMed, it.inntektType, it.belop, - it.datoFom?.toDate(), it.datoTom?.toDate(), it.ident, it.fraGrunnlag, it.id, + it.inntektType, + it.belop, + it.datoFom?.toDate(), + it.datoTom?.toDate(), + it.ident, + it.fraGrunnlag, + it.taMed, + it.id, + behandling, ) inntekt.inntektPostListe = it.inntektPostListe.toInntektPostDomain(inntekt).toMutableSet() inntekt @@ -100,7 +114,7 @@ fun Set.toInntektDomain(behandling: Behandling) = fun Set.toInntektPostDomain(inntekt: Inntekt) = this.map { - InntektPostDomain(inntekt, it.beløp, it.kode, it.visningsnavn) + InntektPostDomain(it.beløp, it.kode, it.visningsnavn, inntekt = inntekt) }.toSet() fun Set.toInntektPost() = @@ -110,11 +124,27 @@ fun Set.toInntektPost() = fun Set.toInntektDto() = this.map { - InntektDto(it.id, it.taMed, it.inntektType, it.belop, it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate(), it.ident, it.fraGrunnlag, it.inntektPostListe.toInntektPost()) + InntektDto( + it.id, + it.taMed, + it.inntektType, + it.belop, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + it.ident, + it.fraGrunnlag, + it.inntektPostListe.toInntektPost(), + ) }.toSet() fun Opplysninger.toDto(): OpplysningerDto { - return OpplysningerDto(this.id!!, this.behandling.id!!, this.opplysningerType, this.data, this.hentetDato.toLocalDate()) + return OpplysningerDto( + this.id!!, + this.behandling.id!!, + this.opplysningerType, + this.data, + this.hentetDato.toLocalDate(), + ) } fun Behandling.tilForsendelseRolleDto() = diff --git a/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt index aa484c75e..627ec37a8 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt @@ -51,7 +51,6 @@ class ForskuddBeregningTest { ), ) - splitPeriods.size shouldBe 1 } @@ -74,9 +73,8 @@ class ForskuddBeregningTest { ), ) - splitPeriods.size shouldBe 1 - splitPeriods[0].antall shouldBe 3.0 + splitPeriods[0].antall shouldBe 3.0 } @Test @@ -103,7 +101,6 @@ class ForskuddBeregningTest { cal2.add(Calendar.MONTH, 1) val tilDato3 = cal2.time - val splitPeriods = forskuddBeregning.splitPeriods( listOf( @@ -130,13 +127,13 @@ class ForskuddBeregningTest { val fraDato = cal1.time cal1.add(Calendar.MONTH, 1) val tilDato = cal1.time - + cal1.add(Calendar.MONTH, 1) val fraDato1 = cal1.time - + cal1.add(Calendar.MONTH, 1) val tilDato1 = cal1.time - + val splitPeriods = forskuddBeregning.splitPeriods( listOf( diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt index f7d798adf..9c6e111c5 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt @@ -97,7 +97,7 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { ) b.inntekter = mutableSetOf( - Inntekt(b, true, "beskrivelse", BigDecimal.TEN, datoFom, datoTom, "ident", true), + Inntekt("lønn", BigDecimal.TEN, datoFom, datoTom, "ident", true, true), ) b.barnetillegg = mutableSetOf( diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt index b759da635..b6ae8056b 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt @@ -1,21 +1,37 @@ package no.nav.bidrag.behandling.controller +import io.kotest.assertions.assertSoftly +import io.kotest.matchers.ints.shouldBeExactly +import io.kotest.matchers.shouldBe +import io.kotest.matchers.shouldNotBe +import jakarta.persistence.EntityManager import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.BehandlingType +import no.nav.bidrag.behandling.database.datamodell.Inntekt +import no.nav.bidrag.behandling.database.datamodell.InntektPostDomain import no.nav.bidrag.behandling.database.datamodell.SoknadFraType import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.dto.inntekt.BarnetilleggDto import no.nav.bidrag.behandling.dto.inntekt.InntekterResponse import no.nav.bidrag.behandling.dto.inntekt.UtvidetbarnetrygdDto +import no.nav.bidrag.behandling.service.BehandlingService +import no.nav.bidrag.behandling.transformers.toDate import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost +import org.hibernate.engine.spi.SessionImplementor +import org.hibernate.resource.transaction.spi.TransactionStatus +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpEntity import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus +import org.springframework.transaction.annotation.Transactional import java.math.BigDecimal -import java.util.Date +import java.time.LocalDate +import java.util.* import kotlin.test.assertEquals import kotlin.test.assertNotNull @@ -40,83 +56,233 @@ class InntekterControllerTest : KontrollerTestRunner() { @Autowired lateinit var behandlingRepository: BehandlingRepository - @Test - fun `skal opprette og oppdatere inntekter`() { - // 1. Create new behandling - val behandling: Behandling = - behandlingRepository.save( - Behandling( - BehandlingType.FORSKUDD, - SoknadType.FASTSETTELSE, - Date(1), - Date(1), - Date(1), - "123", - 123, - null, - "ENH", - SoknadFraType.BIDRAGSMOTTAKER, - null, - null, - ), + @Autowired + lateinit var behandlingService: BehandlingService + + @Autowired + lateinit var entityManager: EntityManager + + @BeforeEach + fun oppsett() { + behandlingRepository.deleteAll() + } + + @Nested + @DisplayName("Tester endepunkt for henting av inntekter") + open inner class HenteInntekter { + + @Test + fun `skal hente inntekter for behandling`() { + // given + var behandling = behandling() + + var inntekt = inntekt(behandling) + inntekt.inntektPostListe = inntektsposter(inntekt) + behandling.inntekter = setOf(inntekt).toMutableSet() + behandlingRepository.save(behandling) + + var lagretBehandlingMedInntekter = behandlingRepository.findAll().iterator().next() + + // when + val r1 = httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", + HttpMethod.GET, + HttpEntity.EMPTY, + InntekterResponse::class.java, ) - val inn = - TestInntektDto( - null, - true, - "some0", - "1.123", - "2022-10-10", - "2022-10-10", - "blablabla", - setOf(InntektPost("ABC", "ABC", BigDecimal.TEN)), + // then + assertSoftly { + r1 shouldNotBe null + r1.statusCode shouldBe HttpStatus.OK + r1.body shouldNotBe null + r1.body!!.inntekter.size shouldBeExactly 1 + } + } + + @Test + fun `skal returnere tom liste av inntekter for behandling som mangler inntekter`() { + // given + var behandling = behandling() + + behandlingRepository.save(behandling) + + var lagretBehandlingUtenInntekter = behandlingRepository.findAll().iterator().next() + + // when + val r1 = httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${lagretBehandlingUtenInntekter.id}/inntekter", + HttpMethod.GET, + HttpEntity.EMPTY, + InntekterResponse::class.java, ) -// val inn1 = TestInntektDto(null, true, "some1", "1.123", "2022-10-10", "2022-10-10", "blablabla", setOf(InntektPost("ABC1", "ABC1", BigDecimal.TEN), InntektPost("ABC2", "ABC2", BigDecimal.TEN))) - // 2. Add inntekter - val r = - httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${behandling.id}/inntekter", + // then + assertSoftly { + r1 shouldNotBe null + r1.statusCode shouldBe HttpStatus.OK + r1.body shouldNotBe null + r1.body!!.inntekter.size shouldBeExactly 0 + } + } + } + + @Nested + @DisplayName("Tester endepunkt for oppdatering av inntekter") + open inner class OppdatereInntekter { + + @Test + @Transactional + open fun `skal opprette inntekter`() { + // given + lagreBehandlingIEgenTransaksjon(false) + var lagretBehandlingUtenInntekter = behandlingRepository.findAll().iterator().next() + + assert(lagretBehandlingUtenInntekter.inntekter.size == 0) + + val inn = testInntektDto() + + // when + val r = httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${lagretBehandlingUtenInntekter.id}/inntekter", HttpMethod.PUT, HttpEntity(TestInntektRequest(setOf(inn), emptySet(), emptySet())), InntekterResponse::class.java, ) - assertEquals(HttpStatus.OK, r.statusCode) - assertEquals(1, r.body!!.inntekter.size) + // then + assertEquals(HttpStatus.OK, r.statusCode) + assertEquals(1, r.body!!.inntekter.size) + } + + @Test + @Transactional + open fun `skal oppdatere eksisterende inntekter`() { + // given + lagreBehandlingIEgenTransaksjon(true) + var lagretBehandlingMedInntekter = behandlingRepository.findAll().iterator().next() + + assert(lagretBehandlingMedInntekter.inntekter.size > 0) - // 3. Add some more inntekter - val inntekt1 = - inn.copy( - id = r.body!!.inntekter.iterator().next().id, - inntektPostListe = setOf(InntektPost("ABC1", "ABC1", BigDecimal.TEN), InntektPost("ABC2", "ABC2", BigDecimal.TEN)), + // when + val inntekt1 = testInntektDto().copy( + id = null, + inntektPostListe = setOf( + InntektPost("ABC1", "ABC1", BigDecimal.TEN), + InntektPost("ABC2", "ABC2", BigDecimal.TEN), + ), ) - val inntekt2 = inn.copy(datoFom = null, inntektType = "null") - val r1 = - httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${behandling.id}/inntekter", + val inntekt2 = testInntektDto().copy(datoFom = null, inntektType = "null") + + val r1 = httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", HttpMethod.PUT, HttpEntity(TestInntektRequest(setOf(inntekt1, inntekt2), setOf(), setOf())), InntekterResponse::class.java, ) - assertEquals(HttpStatus.OK, r.statusCode) - assertEquals(2, r1.body!!.inntekter.size) - assertNotNull(r1.body!!.inntekter.find { it.inntektType == "some0" && it.inntektPostListe.size == 2 }) - assertNotNull(r1.body!!.inntekter.find { it.inntektType == "null" && it.inntektPostListe.size == 1 }) + // then + assertEquals(HttpStatus.OK, r1.statusCode) + assertEquals(2, r1.body!!.inntekter.size) + assertNotNull(r1.body!!.inntekter.find { it.inntektType == "some0" && it.inntektPostListe.size == 2 }) + assertNotNull(r1.body!!.inntekter.find { it.inntektType == "null" && it.inntektPostListe.size == 1 }) + } + + @Test + @Transactional + open fun `skal slette inntekter`() { + // given + lagreBehandlingIEgenTransaksjon(true) + var lagretBehandlingMedInntekter = behandlingRepository.findAll().iterator().next() - // 4. Remove inntekter - val r2 = - httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${behandling.id}/inntekter", + assert(lagretBehandlingMedInntekter.inntekter.size > 0) + + // when + val r = httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", HttpMethod.PUT, HttpEntity(TestInntektRequest(emptySet(), emptySet(), emptySet())), InntekterResponse::class.java, ) - assertEquals(HttpStatus.OK, r.statusCode) - assertEquals(0, r2.body!!.inntekter.size) + // then + assertEquals(HttpStatus.OK, r.statusCode) + assertEquals(0, r.body!!.inntekter.size) + } + } + + private fun lagreBehandlingIEgenTransaksjon(inkludereInntekter: Boolean) { + val sessionImplementor = entityManager.delegate as SessionImplementor + var transaction = sessionImplementor.transaction + + var transactionStatus = transaction.status + if (TransactionStatus.NOT_ACTIVE == transactionStatus) { + transaction.begin() + } + + var behandling = behandling() + + if (inkludereInntekter) { + var inntekt = inntekt(behandling) + inntekt.inntektPostListe = inntektsposter(inntekt) + behandling.inntekter = setOf(inntekt).toMutableSet() + } + + entityManager?.persist(behandling) + transaction.commit() } + + private fun inntekt(behandling: Behandling) = Inntekt( + "INNTEKTSOPPLYSNINGER_ARBEIDSGIVER", + BigDecimal.valueOf(45000), + LocalDate.now().minusYears(1).withDayOfYear(1).toDate(), + LocalDate.now().minusYears(1).withMonth(12).withDayOfMonth(31).toDate(), + "1234", + true, + true, + behandling = behandling, + ) + + private fun inntektsposter(inntekt: Inntekt): MutableSet = setOf( + InntektPostDomain( + BigDecimal.valueOf(400000), + "lønnFraFluefiske", + "Lønn fra fluefiske", + inntekt = inntekt, + ), + ).toMutableSet() + + private fun testInntektDto() = TestInntektDto( + null, + true, + "some0", + "1.123", + "2022-10-10", + "2022-10-10", + "blablabla", + setOf(InntektPost("ABC", "ABC", BigDecimal.TEN)), + ) + + private fun behandling(): Behandling { + val behandling: Behandling = behandlingRepository.save( + Behandling( + BehandlingType.FORSKUDD, + SoknadType.FASTSETTELSE, + Date(1), + Date(1), + Date(1), + "123", + 123, + null, + "ENH", + SoknadFraType.BIDRAGSMOTTAKER, + null, + null, + ), + ) + return behandling + } + + fun createBehandling(): Behandling = behandlingService.createBehandling(behandling()) } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt index a75eaa25d..85bd37e7f 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -26,8 +26,10 @@ import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotNull import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired +import org.springframework.transaction.annotation.Transactional import org.springframework.web.client.HttpClientErrorException import java.math.BigDecimal import java.util.Calendar @@ -43,78 +45,356 @@ class BehandlingServiceTest : TestContainerRunner() { @PersistenceContext lateinit var entityManager: EntityManager - @Test - fun `skal opprette en behandling`() { - val actualBehandling = createBehandling() + @Nested + open inner class HenteBehandling { + @Test + fun `skal caste 404 exception hvis behandlingen ikke er der`() { + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.hentBehandlingById(1234) + } + } + } + + @Nested + open inner class OppretteBehandling { + @Test + fun `skal opprette en forskuddsbehandling`() { + val actualBehandling = createBehandling() + + assertNotNull(actualBehandling.id) + assertEquals(BehandlingType.FORSKUDD, actualBehandling.behandlingType) + assertEquals(3, actualBehandling.roller.size) + + val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType) + assertEquals(3, actualBehandlingFetched.roller.size) + assertNotNull(actualBehandlingFetched.roller.iterator().next().fodtDato) + } + + @Test + fun `skal opprette en behandling med inntekter`() { + val behandling = prepareBehandling() + + behandling.inntekter = mutableSetOf(Inntekt("", BigDecimal.valueOf(555.55), null, null, "ident", true, true, behandling = behandling)) + + val actualBehandling = behandlingService.createBehandling(behandling) + + assertNotNull(actualBehandling.id) + + val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType) + assertEquals(1, actualBehandlingFetched.inntekter.size) + assertEquals(BigDecimal.valueOf(555.55), actualBehandlingFetched.inntekter.iterator().next().belop) + } + + @Test + fun `skal oppdatere boforhold data`() { + val behandling = prepareBehandling() + + val NOTAT = "New Notat" + val MED_I_VEDTAK = "med i vedtak" + + val createdBehandling = behandlingService.createBehandling(behandling) + + assertNotNull(createdBehandling.id) + assertNull(createdBehandling.aarsak) + assertEquals(0, createdBehandling.husstandsBarn.size) + assertEquals(0, createdBehandling.sivilstand.size) + + val husstandsBarn = setOf(HusstandsBarnDto(null, true, emptySet(), "Manuelt", "ident!")) + val sivilstand = + setOf( + SivilstandDto( + null, + Calendar.getInstance().time.toLocalDate(), + Calendar.getInstance().time.toLocalDate(), + SivilstandType.ENKE_ELLER_ENKEMANN, + ), + ) + + behandlingService.updateBoforhold( + createdBehandling.id!!, + husstandsBarn.toDomain(createdBehandling), + sivilstand.toSivilstandDomain(createdBehandling), + NOTAT, + MED_I_VEDTAK, + ) + + val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) + + assertEquals(1, updatedBehandling.husstandsBarn.size) + assertEquals(1, updatedBehandling.sivilstand.size) + assertEquals(NOTAT, updatedBehandling.boforholdBegrunnelseKunINotat) + assertEquals(MED_I_VEDTAK, updatedBehandling.boforholdBegrunnelseMedIVedtakNotat) + } + + @Test + fun `skal oppdatere virkningstidspunkt data`() { + val behandling = prepareBehandling() + + val NOTAT = "New Notat" + val MED_I_VEDTAK = "med i vedtak" - assertNotNull(actualBehandling.id) - assertEquals(BehandlingType.FORSKUDD, actualBehandling.behandlingType) - assertEquals(3, actualBehandling.roller.size) + val createdBehandling = behandlingService.createBehandling(behandling) - val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) + assertNotNull(createdBehandling.id) + assertNull(createdBehandling.aarsak) + + behandlingService.updateVirkningsTidspunkt( + createdBehandling.id!!, + ForskuddAarsakType.BF, + null, + NOTAT, + MED_I_VEDTAK, + ) - assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType) - assertEquals(3, actualBehandlingFetched.roller.size) - assertNotNull(actualBehandlingFetched.roller.iterator().next().fodtDato) + val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) + + assertEquals(ForskuddAarsakType.BF, updatedBehandling.aarsak) + assertEquals(NOTAT, updatedBehandling.virkningsTidspunktBegrunnelseKunINotat) + assertEquals(MED_I_VEDTAK, updatedBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat) + } } - @Test - fun `delete behandling`() { - val behandling = createBehandling() - behandlingService.deleteBehandlingById(behandling.id!!) + @Nested + open inner class SletteBehandling { + @Test + fun `delete behandling`() { + val behandling = createBehandling() + behandlingService.deleteBehandlingById(behandling.id!!) - Assertions.assertThrows(HttpClientErrorException::class.java) { - behandlingService.hentBehandlingById(behandling.id!!) + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.hentBehandlingById(behandling.id!!) + } } } - @Test - fun `legge til flere roller`() { - val b = createBehandling() - - behandlingService.syncRoller( - b.id!!, - listOf( - CreateRolleDto( - CreateRolleRolleType.BARN, - "newident", - Date(1), - Date(2), + @Nested + open inner class SynkronisereRoller { + @Test + fun `legge til flere roller`() { + val b = createBehandling() + + behandlingService.syncRoller( + b.id!!, + listOf( + CreateRolleDto( + CreateRolleRolleType.BARN, + "newident", + Date(1), + Date(2), + ), + ), + ) + + assertEquals(4, behandlingService.hentBehandlingById(b.id!!).roller.size) + } + + @Test + fun `behandling må synce roller og slette behandling`() { + val b = createBehandling() + behandlingService.syncRoller( + b.id!!, + listOf( + CreateRolleDto(CreateRolleRolleType.BARN, "1111", Date(1), Date(2), true), ), - ), - ) + ) + + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.hentBehandlingById(b.id!!) + } + } + + @Test + fun `behandling må synce roller`() { + val b = createBehandling() + behandlingService.syncRoller( + b.id!!, + listOf( + CreateRolleDto(CreateRolleRolleType.BARN, "1111", Date(1), Date(2), true), + CreateRolleDto(CreateRolleRolleType.BARN, "111123", Date(1), Date(2)), + CreateRolleDto(CreateRolleRolleType.BARN, "1111234", Date(1), Date(2)), + ), + ) - assertEquals(4, behandlingService.hentBehandlingById(b.id!!).roller.size) + assertEquals(2, behandlingService.hentBehandlingById(b.id!!).roller.filter { r -> r.rolleType == Rolletype.BARN }.size) + } } - @Test - fun `behandling må synce roller og slette behandling`() { - val b = createBehandling() - behandlingService.syncRoller( - b.id!!, - listOf( - CreateRolleDto(CreateRolleRolleType.BARN, "1111", Date(1), Date(2), true), - ), - ) - - Assertions.assertThrows(HttpClientErrorException::class.java) { - behandlingService.hentBehandlingById(b.id!!) + @Nested + open inner class OppdatereBehandling { + @Test + fun `skal caste 404 exception hvis behandlingen ikke er der - oppdater`() { + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.oppdaterBehandling(1234, "New Notat", "Med i Vedtak") + } + } + + @Test + fun `skal oppdatere en behandling`() { + val behandling = prepareBehandling() + + val NOTAT = "New Notat" + val MED_I_VEDTAK = "med i vedtak" + + val createdBehandling = behandlingService.createBehandling(behandling) + + assertNotNull(createdBehandling.id) + assertNull(createdBehandling.aarsak) + + val oppdatertBehandling = + behandlingService.oppdaterBehandling( + createdBehandling.id!!, + MED_I_VEDTAK, + NOTAT, + MED_I_VEDTAK, + NOTAT, + MED_I_VEDTAK, + NOTAT, + ) + + val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!) + + assertEquals(3, hentBehandlingById.roller.size) + assertEquals(NOTAT, oppdatertBehandling.virkningsTidspunktBegrunnelseKunINotat) + assertEquals(MED_I_VEDTAK, oppdatertBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat) + } + + @Test + fun `skal opprette en behandling med grunnlagspakkeId`() { + val b = createBehandling() + + behandlingService.updateBehandling(b.id!!, 123L) + + assertEquals(123L, behandlingService.hentBehandlingById(b.id!!).grunnlagspakkeId) } } - @Test - fun `behandling må synce roller`() { - val b = createBehandling() - behandlingService.syncRoller( - b.id!!, - listOf( - CreateRolleDto(CreateRolleRolleType.BARN, "1111", Date(1), Date(2), true), - CreateRolleDto(CreateRolleRolleType.BARN, "111123", Date(1), Date(2)), - CreateRolleDto(CreateRolleRolleType.BARN, "1111234", Date(1), Date(2)), - ), - ) - - assertEquals(2, behandlingService.hentBehandlingById(b.id!!).roller.filter { r -> r.rolleType == Rolletype.BARN }.size) + @Nested + open inner class OppdatereInntekter { + @Test + fun `skal legge til inntekter`() { + val actualBehandling = createBehandling() + + assertNotNull(actualBehandling.id) + + assertEquals(0, actualBehandling.inntekter.size) + assertEquals(0, actualBehandling.barnetillegg.size) + assertEquals(0, actualBehandling.utvidetbarnetrygd.size) + assertNull(actualBehandling.inntektBegrunnelseMedIVedtakNotat) + assertNull(actualBehandling.inntektBegrunnelseKunINotat) + + behandlingService.oppdaterInntekter( + actualBehandling.id!!, + mutableSetOf( + Inntekt( + "", + BigDecimal.valueOf(1.111), + Calendar.getInstance().time, + Calendar.getInstance().time, + "ident", + true, + true, + behandling = actualBehandling, + ), + ), + mutableSetOf( + Barnetillegg( + actualBehandling, + "ident", + BigDecimal.ONE, + Calendar.getInstance().time, + Calendar.getInstance().time, + ), + ), + mutableSetOf( + Utvidetbarnetrygd( + actualBehandling, + true, + BigDecimal.TEN, + Calendar.getInstance().time, + Calendar.getInstance().time, + ), + ), + "Med i Vedtaket", + "Kun i Notat", + ) + + val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(1, expectedBehandling.inntekter.size) + assertEquals(1, expectedBehandling.barnetillegg.size) + assertEquals(1, expectedBehandling.utvidetbarnetrygd.size) + assertEquals("Med i Vedtaket", expectedBehandling.inntektBegrunnelseMedIVedtakNotat) + assertEquals("Kun i Notat", expectedBehandling.inntektBegrunnelseKunINotat) + } + + @Test + @Transactional + open fun `skal slette inntekter`() { + stubUtils.stubOpprettForsendelse() + + val actualBehandling = createBehandling() + + assertNotNull(actualBehandling.id) + + assertEquals(0, actualBehandling.inntekter.size) + assertEquals(0, actualBehandling.barnetillegg.size) + assertEquals(0, actualBehandling.utvidetbarnetrygd.size) + + behandlingService.oppdaterInntekter( + actualBehandling.id!!, + mutableSetOf( + Inntekt( + "", + BigDecimal.valueOf(1.111), + Calendar.getInstance().time, + Calendar.getInstance().time, + "ident", + true, + true, + behandling = actualBehandling, + ), + ), + mutableSetOf( + Barnetillegg( + actualBehandling, + "ident", + BigDecimal.ONE, + Calendar.getInstance().time, + Calendar.getInstance().time, + ), + ), + mutableSetOf(), + "null", + "null", + ) + + val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(1, expectedBehandling.inntekter.size) + assertEquals(1, expectedBehandling.barnetillegg.size) + assertNotNull(expectedBehandling.inntektBegrunnelseMedIVedtakNotat) + assertNotNull(expectedBehandling.inntektBegrunnelseKunINotat) + + behandlingService.oppdaterInntekter( + actualBehandling.id!!, + mutableSetOf(), + expectedBehandling.barnetillegg, + mutableSetOf(), + null, + null, + ) + + val expectedBehandlingWithoutInntekter = behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(0, expectedBehandlingWithoutInntekter.inntekter.size) + assertEquals(1, expectedBehandlingWithoutInntekter.barnetillegg.size) + assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseMedIVedtakNotat) + assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseKunINotat) + } } @Test @@ -141,32 +421,6 @@ class BehandlingServiceTest : TestContainerRunner() { assertEquals(1L, deletedCount) } - @Test - fun `skal opprette en behandling med grunnlagspakkeId`() { - val b = createBehandling() - - behandlingService.updateBehandling(b.id!!, 123L) - - assertEquals(123L, behandlingService.hentBehandlingById(b.id!!).grunnlagspakkeId) - } - - @Test - fun `skal opprette en behandling med inntekter`() { - val behandling = prepareBehandling() - - behandling.inntekter = mutableSetOf(Inntekt(behandling, true, "", BigDecimal.valueOf(555.55), null, null, "ident", true)) - - val actualBehandling = behandlingService.createBehandling(behandling) - - assertNotNull(actualBehandling.id) - - val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType) - assertEquals(1, actualBehandlingFetched.inntekter.size) - assertEquals(BigDecimal.valueOf(555.55), actualBehandlingFetched.inntekter.iterator().next().belop) - } - companion object { fun prepareBehandling(): Behandling { val behandling = @@ -212,239 +466,6 @@ class BehandlingServiceTest : TestContainerRunner() { } } - @Test - fun `skal legge til inntekter`() { - val actualBehandling = createBehandling() - - assertNotNull(actualBehandling.id) - - assertEquals(0, actualBehandling.inntekter.size) - assertEquals(0, actualBehandling.barnetillegg.size) - assertEquals(0, actualBehandling.utvidetbarnetrygd.size) - assertNull(actualBehandling.inntektBegrunnelseMedIVedtakNotat) - assertNull(actualBehandling.inntektBegrunnelseKunINotat) - - behandlingService.oppdaterInntekter( - actualBehandling.id!!, - mutableSetOf( - Inntekt( - actualBehandling, - true, - "", - BigDecimal.valueOf(1.111), - Calendar.getInstance().time, - Calendar.getInstance().time, - "ident", - true, - ), - ), - mutableSetOf( - Barnetillegg( - actualBehandling, - "ident", - BigDecimal.ONE, - Calendar.getInstance().time, - Calendar.getInstance().time, - ), - ), - mutableSetOf( - Utvidetbarnetrygd( - actualBehandling, - true, - BigDecimal.TEN, - Calendar.getInstance().time, - Calendar.getInstance().time, - ), - ), - "Med i Vedtaket", - "Kun i Notat", - ) - - val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(1, expectedBehandling.inntekter.size) - assertEquals(1, expectedBehandling.barnetillegg.size) - assertEquals(1, expectedBehandling.utvidetbarnetrygd.size) - assertEquals("Med i Vedtaket", expectedBehandling.inntektBegrunnelseMedIVedtakNotat) - assertEquals("Kun i Notat", expectedBehandling.inntektBegrunnelseKunINotat) - } - - @Test - fun `skal slette inntekter`() { - val actualBehandling = createBehandling() - - assertNotNull(actualBehandling.id) - - assertEquals(0, actualBehandling.inntekter.size) - assertEquals(0, actualBehandling.barnetillegg.size) - assertEquals(0, actualBehandling.utvidetbarnetrygd.size) - - behandlingService.oppdaterInntekter( - actualBehandling.id!!, - mutableSetOf( - Inntekt( - actualBehandling, - true, - "", - BigDecimal.valueOf(1.111), - Calendar.getInstance().time, - Calendar.getInstance().time, - "ident", - true, - ), - ), - mutableSetOf( - Barnetillegg( - actualBehandling, - "ident", - BigDecimal.ONE, - Calendar.getInstance().time, - Calendar.getInstance().time, - ), - ), - mutableSetOf(), - "null", - "null", - ) - - val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(1, expectedBehandling.inntekter.size) - assertEquals(1, expectedBehandling.barnetillegg.size) - assertNotNull(expectedBehandling.inntektBegrunnelseMedIVedtakNotat) - assertNotNull(expectedBehandling.inntektBegrunnelseKunINotat) - - behandlingService.oppdaterInntekter( - actualBehandling.id!!, - mutableSetOf(), - expectedBehandling.barnetillegg, - mutableSetOf(), - null, - null, - ) - - val expectedBehandlingWithoutInntekter = behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(0, expectedBehandlingWithoutInntekter.inntekter.size) - assertEquals(1, expectedBehandlingWithoutInntekter.barnetillegg.size) - assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseMedIVedtakNotat) - assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseKunINotat) - } - - @Test - fun `skal caste 404 exception hvis behandlingen ikke er der`() { - Assertions.assertThrows(HttpClientErrorException::class.java) { - behandlingService.hentBehandlingById(1234) - } - } - - @Test - fun `skal caste 404 exception hvis behandlingen ikke er der - oppdater`() { - Assertions.assertThrows(HttpClientErrorException::class.java) { - behandlingService.oppdaterBehandling(1234, "New Notat", "Med i Vedtak") - } - } - - @Test - fun `skal oppdatere en behandling`() { - val behandling = prepareBehandling() - - val NOTAT = "New Notat" - val MED_I_VEDTAK = "med i vedtak" - - val createdBehandling = behandlingService.createBehandling(behandling) - - assertNotNull(createdBehandling.id) - assertNull(createdBehandling.aarsak) - - val oppdatertBehandling = - behandlingService.oppdaterBehandling( - createdBehandling.id!!, - MED_I_VEDTAK, - NOTAT, - MED_I_VEDTAK, - NOTAT, - MED_I_VEDTAK, - NOTAT, - ) - - val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!) - - assertEquals(3, hentBehandlingById.roller.size) -// assertEquals(AvslagType.MANGL_DOK, hentBehandlingById.avslag) - - assertEquals(NOTAT, oppdatertBehandling.virkningsTidspunktBegrunnelseKunINotat) - assertEquals(MED_I_VEDTAK, oppdatertBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat) - } - - @Test - fun `skal oppdatere virkningstidspunkt data`() { - val behandling = prepareBehandling() - - val NOTAT = "New Notat" - val MED_I_VEDTAK = "med i vedtak" - - val createdBehandling = behandlingService.createBehandling(behandling) - - assertNotNull(createdBehandling.id) - assertNull(createdBehandling.aarsak) - - behandlingService.updateVirkningsTidspunkt( - createdBehandling.id!!, - ForskuddAarsakType.BF, - null, - NOTAT, - MED_I_VEDTAK, - ) - - val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) - - assertEquals(ForskuddAarsakType.BF, updatedBehandling.aarsak) - assertEquals(NOTAT, updatedBehandling.virkningsTidspunktBegrunnelseKunINotat) - assertEquals(MED_I_VEDTAK, updatedBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat) - } - - @Test - fun `skal oppdatere boforhold data`() { - val behandling = prepareBehandling() - - val NOTAT = "New Notat" - val MED_I_VEDTAK = "med i vedtak" - - val createdBehandling = behandlingService.createBehandling(behandling) - - assertNotNull(createdBehandling.id) - assertNull(createdBehandling.aarsak) - assertEquals(0, createdBehandling.husstandsBarn.size) - assertEquals(0, createdBehandling.sivilstand.size) - - val husstandsBarn = setOf(HusstandsBarnDto(null, true, emptySet(), "Manuelt", "ident!")) - val sivilstand = - setOf( - SivilstandDto( - null, - Calendar.getInstance().time.toLocalDate(), - Calendar.getInstance().time.toLocalDate(), - SivilstandType.ENKE_ELLER_ENKEMANN, - ), - ) - - behandlingService.updateBoforhold( - createdBehandling.id!!, - husstandsBarn.toDomain(createdBehandling), - sivilstand.toSivilstandDomain(createdBehandling), - NOTAT, - MED_I_VEDTAK, - ) - - val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) - - assertEquals(1, updatedBehandling.husstandsBarn.size) - assertEquals(1, updatedBehandling.sivilstand.size) - assertEquals(NOTAT, updatedBehandling.boforholdBegrunnelseKunINotat) - assertEquals(MED_I_VEDTAK, updatedBehandling.boforholdBegrunnelseMedIVedtakNotat) - } - fun createBehandling(): Behandling { val behandling = prepareBehandling()