From 5b0202534f7ce3138b9eb5c91810d156eccb20ee Mon Sep 17 00:00:00 2001 From: Tor Egil Strand Date: Tue, 22 Oct 2024 13:12:07 +0200 Subject: [PATCH] =?UTF-8?q?TB-89:=20All=20egenregistrering=20p=C3=A5=20bru?= =?UTF-8?q?ksenhetniv=C3=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EgenregistreringRepositoryTest.kt | 10 +- .../EgenregistreringRouteTest.kt | 133 ++++++++---------- .../matrikkel/bygning/models/Bygning.kt | 3 + .../bygning/models/BygningExtensions.kt | 61 ++++---- .../bygning/models/Egenregistrering.kt | 7 +- .../routes/v1/bygning/BygningResponse.kt | 6 + .../egenregistrering/EgenregisteringRoutes.kt | 13 +- .../EgenregistreringRequest.kt | 49 +++---- .../bygning/models/BygningExtensionsTest.kt | 41 +++--- .../services/EgenregistreringValidatorTest.kt | 13 +- 10 files changed, 151 insertions(+), 185 deletions(-) diff --git a/src/integrationTest/kotlin/no/kartverket/matrikkel/bygning/repositories/EgenregistreringRepositoryTest.kt b/src/integrationTest/kotlin/no/kartverket/matrikkel/bygning/repositories/EgenregistreringRepositoryTest.kt index 3ed4c2c8..e240ee5b 100644 --- a/src/integrationTest/kotlin/no/kartverket/matrikkel/bygning/repositories/EgenregistreringRepositoryTest.kt +++ b/src/integrationTest/kotlin/no/kartverket/matrikkel/bygning/repositories/EgenregistreringRepositoryTest.kt @@ -8,11 +8,9 @@ import assertk.assertions.isEmpty import assertk.assertions.isEqualTo import assertk.assertions.prop import assertk.assertions.single -import no.kartverket.matrikkel.bygning.models.BruksarealRegistrering import no.kartverket.matrikkel.bygning.models.BygningRegistrering import no.kartverket.matrikkel.bygning.models.Egenregistrering -import no.kartverket.matrikkel.bygning.models.RegistreringAktoer -import no.kartverket.matrikkel.bygning.models.RegistreringAktoer.* +import no.kartverket.matrikkel.bygning.models.RegistreringAktoer.Foedselsnummer import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import java.time.Instant @@ -23,12 +21,6 @@ class EgenregistreringRepositoryTest : TestWithDb() { private val defaultBygningRegistrering = BygningRegistrering( bygningId = 1L, - bruksarealRegistrering = BruksarealRegistrering( - bruksareal = 125.0, - ), - byggeaarRegistrering = null, - vannforsyningRegistrering = null, - avlopRegistrering = null, bruksenhetRegistreringer = emptyList() ) diff --git a/src/integrationTest/kotlin/no/kartverket/matrikkel/bygning/v1/egenregistrering/EgenregistreringRouteTest.kt b/src/integrationTest/kotlin/no/kartverket/matrikkel/bygning/v1/egenregistrering/EgenregistreringRouteTest.kt index b1dff51f..85589e66 100644 --- a/src/integrationTest/kotlin/no/kartverket/matrikkel/bygning/v1/egenregistrering/EgenregistreringRouteTest.kt +++ b/src/integrationTest/kotlin/no/kartverket/matrikkel/bygning/v1/egenregistrering/EgenregistreringRouteTest.kt @@ -3,8 +3,6 @@ package no.kartverket.matrikkel.bygning.v1.egenregistrering import assertk.Assert import assertk.all import assertk.assertThat -import assertk.assertions.containsExactly -import assertk.assertions.extracting import assertk.assertions.index import assertk.assertions.isBetween import assertk.assertions.isEqualTo @@ -12,6 +10,7 @@ import assertk.assertions.isNotNull import assertk.assertions.isNull import assertk.assertions.prop import assertk.assertions.single +import assertk.assertions.support.appendName import io.ktor.client.call.* import io.ktor.client.request.* import io.ktor.http.* @@ -35,7 +34,6 @@ import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.AvlopRegistrer import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.BruksarealRegistreringRequest import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.BruksenhetRegistreringRequest import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.ByggeaarRegistreringRequest -import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.BygningRegistreringRequest import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.EgenregistreringRequest import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.EnergikildeRegistreringRequest import no.kartverket.matrikkel.bygning.routes.v1.egenregistrering.OppvarmingRegistreringRequest @@ -81,40 +79,33 @@ class EgenregistreringRouteTest : TestApplicationWithDb() { val now = Instant.now() assertThat(bygning).all { - prop(BygningResponse::bruksareal).isNotNull().all { - prop(MultikildeResponse::egenregistrert).isNotNull().all { - prop(BruksarealResponse::data).isEqualTo(125.0) - prop(BruksarealResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + prop(BygningResponse::bruksenheter).index(0).all { + prop(BruksenhetResponse::bruksenhetId).isEqualTo(1L) + prop(BruksenhetResponse::bruksareal).isNotNull().all { + prop(MultikildeResponse::egenregistrert).isNotNull().all { + prop(BruksarealResponse::data).isEqualTo(125.0) + prop(BruksarealResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + } } - } - prop(BygningResponse::byggeaar).isNotNull().all { - prop(MultikildeResponse::egenregistrert).isNotNull().all { - prop(ByggeaarResponse::data).isEqualTo(2010) - prop(ByggeaarResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + prop(BruksenhetResponse::byggeaar).isNotNull().all { + prop(MultikildeResponse::egenregistrert).isNotNull().all { + prop(ByggeaarResponse::data).isEqualTo(2010) + prop(ByggeaarResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + } } - } - prop(BygningResponse::vannforsyning).isNotNull().all { - prop(MultikildeResponse::egenregistrert).isNotNull().all { - prop(VannforsyningKodeResponse::data).isEqualTo(VannforsyningKode.OffentligVannverk) - prop(VannforsyningKodeResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) - } - } - - prop(BygningResponse::avlop).isNotNull().all { - prop(MultikildeResponse::egenregistrert).isNotNull().all { - prop(AvlopKodeResponse::data).isEqualTo(AvlopKode.OffentligKloakk) - prop(AvlopKodeResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + prop(BruksenhetResponse::vannforsyning).isNotNull().all { + prop(MultikildeResponse::egenregistrert).isNotNull().all { + prop(VannforsyningKodeResponse::data).isEqualTo(VannforsyningKode.OffentligVannverk) + prop(VannforsyningKodeResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + } } - } - prop(BygningResponse::bruksenheter).index(0).all { - prop(BruksenhetResponse::bruksenhetId).isEqualTo(1L) - prop(BruksenhetResponse::bruksareal).isNotNull().all { - prop(MultikildeResponse::egenregistrert).isNotNull().all { - prop(BruksarealResponse::data).isEqualTo(100.0) - prop(BruksarealResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + prop(BruksenhetResponse::avlop).isNotNull().all { + prop(MultikildeResponse::egenregistrert).isNotNull().all { + prop(AvlopKodeResponse::data).isEqualTo(AvlopKode.OffentligKloakk) + prop(AvlopKodeResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) } } @@ -149,9 +140,7 @@ class EgenregistreringRouteTest : TestApplicationWithDb() { val response = client.post("/v1/egenregistreringer") { contentType(ContentType.Application.Json) setBody( - EgenregistreringRequest.validEgenregistrering().copy( - bygningRegistrering = null, - ), + EgenregistreringRequest.validEgenregistrering(), ) } @@ -168,7 +157,7 @@ class EgenregistreringRouteTest : TestApplicationWithDb() { prop(BruksenhetResponse::bruksareal).isNotNull().all { prop(MultikildeResponse::egenregistrert).isNotNull().all { - prop(BruksarealResponse::data).isEqualTo(100.0) + prop(BruksarealResponse::data).isEqualTo(125.0) prop(BruksarealResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) } } @@ -206,16 +195,13 @@ class EgenregistreringRouteTest : TestApplicationWithDb() { contentType(ContentType.Application.Json) setBody( EgenregistreringRequest.validEgenregistrering().copy( - bygningRegistrering = BygningRegistreringRequest( - bruksarealRegistrering = BruksarealRegistreringRequest(bruksareal = 120.0), - byggeaarRegistrering = ByggeaarRegistreringRequest(byggeaar = 2008), - vannforsyningRegistrering = null, - avlopRegistrering = null, - ), bruksenhetRegistreringer = listOf( BruksenhetRegistreringRequest( bruksenhetId = 1L, bruksarealRegistrering = BruksarealRegistreringRequest(bruksareal = 40.0), + byggeaarRegistrering = ByggeaarRegistreringRequest(byggeaar = 2008), + vannforsyningRegistrering = null, + avlopRegistrering = null, energikildeRegistrering = null, oppvarmingRegistrering = null, ), @@ -231,24 +217,25 @@ class EgenregistreringRouteTest : TestApplicationWithDb() { val bygning = bygningResponse.body() val now = Instant.now() - assertThat(bygning).all { - prop(BygningResponse::bruksareal).isNotNull().all { - prop(MultikildeResponse::egenregistrert).isNotNull().all { - prop(BruksarealResponse::data).isEqualTo(120.0) - prop(BruksarealResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + assertThat(bygning).prop(BygningResponse::bruksenheter).all { + withBruksenhetId(1L).all { + prop(BruksenhetResponse::byggeaar).isNotNull().all { + prop(MultikildeResponse::egenregistrert).isNotNull().all { + prop(ByggeaarResponse::data).isEqualTo(2008) + prop(ByggeaarResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + } } - } - - prop(BygningResponse::byggeaar).isNotNull().all { - prop(MultikildeResponse::egenregistrert).isNotNull().all { - prop(ByggeaarResponse::data).isEqualTo(2008) - prop(ByggeaarResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + prop(BruksenhetResponse::bruksareal).isNotNull().all { + prop(MultikildeResponse::egenregistrert).isNotNull().all { + prop(BruksarealResponse::data).isEqualTo(40.0) + prop(BruksarealResponse::metadata).hasRegistreringstidspunktWithinThreshold(now) + } } } - prop(BygningResponse::bruksenheter) - .extracting(BruksenhetResponse::bruksenhetId) { it.bruksareal?.egenregistrert?.data } - .containsExactly(1L to 40.0, 2L to null) - + withBruksenhetId(2L).all { + prop(BruksenhetResponse::byggeaar).isNull() + prop(BruksenhetResponse::bruksareal).isNull() + } } } @@ -274,33 +261,35 @@ class EgenregistreringRouteTest : TestApplicationWithDb() { val bygning = bygningResponse.body() assertThat(bygning).all { - prop(BygningResponse::bruksareal).isNotNull().all { - prop(MultikildeResponse::egenregistrert).isNotNull().all { - prop(BruksarealResponse::metadata).all { - prop(RegisterMetadataResponse::registrertAv).isEqualTo("31129956715") + prop(BygningResponse::bruksareal).isNotNull().prop(MultikildeResponse::egenregistrert).isNull() + prop(BygningResponse::bruksenheter).withBruksenhetId(1L) + .prop(BruksenhetResponse::bruksareal).isNotNull().all { + prop(MultikildeResponse::egenregistrert).isNotNull().all { + prop(BruksarealResponse::metadata).all { + prop(RegisterMetadataResponse::registrertAv).isEqualTo("31129956715") + } } } - } } } + private fun Assert>.withBruksenhetId(bruksenhetId: Long) = + transform(appendName("[bruksenhetId=$bruksenhetId]")) { it.find { br -> br.bruksenhetId == bruksenhetId }!! } + private fun EgenregistreringRequest.Companion.validEgenregistrering() = EgenregistreringRequest( bygningId = 1L, eier = "31129956715", - bygningRegistrering = BygningRegistreringRequest( - bruksarealRegistrering = BruksarealRegistreringRequest(125.0), - byggeaarRegistrering = ByggeaarRegistreringRequest(2010), - vannforsyningRegistrering = VannforsyningRegistreringRequest( - VannforsyningKode.OffentligVannverk, - ), - avlopRegistrering = AvlopRegistreringRequest( - avlop = AvlopKode.OffentligKloakk, - ), - ), bruksenhetRegistreringer = listOf( BruksenhetRegistreringRequest( bruksenhetId = 1L, - bruksarealRegistrering = BruksarealRegistreringRequest(bruksareal = 100.0), + bruksarealRegistrering = BruksarealRegistreringRequest(125.0), + byggeaarRegistrering = ByggeaarRegistreringRequest(2010), + vannforsyningRegistrering = VannforsyningRegistreringRequest( + VannforsyningKode.OffentligVannverk, + ), + avlopRegistrering = AvlopRegistreringRequest( + avlop = AvlopKode.OffentligKloakk, + ), energikildeRegistrering = EnergikildeRegistreringRequest( listOf(EnergikildeKode.Elektrisitet), ), diff --git a/src/main/kotlin/no/kartverket/matrikkel/bygning/models/Bygning.kt b/src/main/kotlin/no/kartverket/matrikkel/bygning/models/Bygning.kt index f86f47b9..ecf65e71 100644 --- a/src/main/kotlin/no/kartverket/matrikkel/bygning/models/Bygning.kt +++ b/src/main/kotlin/no/kartverket/matrikkel/bygning/models/Bygning.kt @@ -37,7 +37,10 @@ data class Oppvarming(val data: OppvarmingKode, val metadata: RegisterMetadata) data class Bruksenhet( val bruksenhetId: Long, val bygningId: Long, + val byggeaar: Multikilde = Multikilde(), val bruksareal: Multikilde = Multikilde(), val energikilder: Multikilde> = Multikilde(), val oppvarminger: Multikilde> = Multikilde(), + val vannforsyning: Multikilde = Multikilde(), + val avlop: Multikilde = Multikilde(), ) diff --git a/src/main/kotlin/no/kartverket/matrikkel/bygning/models/BygningExtensions.kt b/src/main/kotlin/no/kartverket/matrikkel/bygning/models/BygningExtensions.kt index 6a7df072..41f4ce78 100644 --- a/src/main/kotlin/no/kartverket/matrikkel/bygning/models/BygningExtensions.kt +++ b/src/main/kotlin/no/kartverket/matrikkel/bygning/models/BygningExtensions.kt @@ -7,44 +7,7 @@ package no.kartverket.matrikkel.bygning.models fun Bygning.withEgenregistrertData(egenregistreringer: List): Bygning { return egenregistreringer.fold(this) { bygningAggregate, egenregistrering -> - val metadata = RegisterMetadata( - registreringstidspunkt = egenregistrering.registreringstidspunkt, - registrertAv = egenregistrering.eier, - ) - bygningAggregate.copy( - byggeaar = bygningAggregate.byggeaar.aggregate { - egenregistrering.bygningRegistrering.byggeaarRegistrering?.let { - Byggeaar( - data = it.byggeaar, - metadata = metadata, - ) - } - }, - bruksareal = bygningAggregate.bruksareal.aggregate { - egenregistrering.bygningRegistrering.bruksarealRegistrering?.let { - Bruksareal( - data = it.bruksareal, - metadata = metadata, - ) - } - }, - vannforsyning = bygningAggregate.vannforsyning.aggregate { - egenregistrering.bygningRegistrering.vannforsyningRegistrering?.let { - Vannforsyning( - data = it.vannforsyning, - metadata = metadata, - ) - } - }, - avlop = bygningAggregate.avlop.aggregate { - egenregistrering.bygningRegistrering.avlopRegistrering?.let { - Avlop( - data = it.avlop, - metadata = metadata, - ) - } - }, bruksenheter = bygningAggregate.bruksenheter.map { it.applyEgenregistrering(egenregistrering) }, @@ -65,6 +28,14 @@ private fun Bruksenhet.applyEgenregistrering(egenregistrering: Egenregistrering) ) return this.copy( + byggeaar = this.byggeaar.aggregate { + bruksenhetRegistrering.byggeaarRegistrering?.let { + Byggeaar( + data = it.byggeaar, + metadata = metadata, + ) + } + }, bruksareal = this.bruksareal.aggregate { bruksenhetRegistrering.bruksarealRegistrering?.let { Bruksareal( @@ -73,6 +44,22 @@ private fun Bruksenhet.applyEgenregistrering(egenregistrering: Egenregistrering) ) } }, + vannforsyning = this.vannforsyning.aggregate { + bruksenhetRegistrering.vannforsyningRegistrering?.let { + Vannforsyning( + data = it.vannforsyning, + metadata = metadata, + ) + } + }, + avlop = this.avlop.aggregate { + bruksenhetRegistrering.avlopRegistrering?.let { + Avlop( + data = it.avlop, + metadata = metadata, + ) + } + }, energikilder = this.energikilder.aggregate { bruksenhetRegistrering.energikildeRegistrering?.let { it.energikilder?.map { registrertKilde -> diff --git a/src/main/kotlin/no/kartverket/matrikkel/bygning/models/Egenregistrering.kt b/src/main/kotlin/no/kartverket/matrikkel/bygning/models/Egenregistrering.kt index 53d5b369..b514f879 100644 --- a/src/main/kotlin/no/kartverket/matrikkel/bygning/models/Egenregistrering.kt +++ b/src/main/kotlin/no/kartverket/matrikkel/bygning/models/Egenregistrering.kt @@ -43,10 +43,6 @@ data class OppvarmingRegistrering( @Serializable data class BygningRegistrering( val bygningId: Long, - val bruksarealRegistrering: BruksarealRegistrering?, - val byggeaarRegistrering: ByggeaarRegistrering?, - val vannforsyningRegistrering: VannforsyningRegistrering?, - val avlopRegistrering: AvlopRegistrering?, val bruksenhetRegistreringer: List ) @@ -54,6 +50,9 @@ data class BygningRegistrering( data class BruksenhetRegistrering( val bruksenhetId: Long, val bruksarealRegistrering: BruksarealRegistrering?, + val byggeaarRegistrering: ByggeaarRegistrering?, + val vannforsyningRegistrering: VannforsyningRegistrering?, + val avlopRegistrering: AvlopRegistrering?, val energikildeRegistrering: EnergikildeRegistrering?, val oppvarmingRegistrering: OppvarmingRegistrering?, ) diff --git a/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/bygning/BygningResponse.kt b/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/bygning/BygningResponse.kt index 03800ba1..914ddd4a 100644 --- a/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/bygning/BygningResponse.kt +++ b/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/bygning/BygningResponse.kt @@ -40,7 +40,10 @@ data class BygningResponse( @Serializable data class BruksenhetResponse( val bruksenhetId: Long, + val byggeaar: MultikildeResponse?, val bruksareal: MultikildeResponse?, + val vannforsyning: MultikildeResponse?, + val avlop: MultikildeResponse?, val energikilder: MultikildeResponse>?, val oppvarminger: MultikildeResponse>?, ) @@ -98,9 +101,12 @@ fun Bygning.toBygningResponse(): BygningResponse = BygningResponse( fun Bruksenhet.toBruksenhetResponse(): BruksenhetResponse = BruksenhetResponse( bruksenhetId = this.bruksenhetId, + byggeaar = this.byggeaar.toMultikildeResponse(Byggeaar::toByggeaarResponse), bruksareal = this.bruksareal.toMultikildeResponse(Bruksareal::toBruksarealResponse), energikilder = this.energikilder.toMultikildeResponse { map(Energikilde::toEnergikildeResponse) }, oppvarminger = this.oppvarminger.toMultikildeResponse { map(Oppvarming::toOppvarmingResponse) }, + vannforsyning = this.vannforsyning.toMultikildeResponse(Vannforsyning::toVannforsyningResponse), + avlop = this.avlop.toMultikildeResponse(Avlop::toAvlopKodeResponse), ) private fun Byggeaar.toByggeaarResponse(): ByggeaarResponse = ByggeaarResponse( diff --git a/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/egenregistrering/EgenregisteringRoutes.kt b/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/egenregistrering/EgenregisteringRoutes.kt index f36d96d3..c9fc291c 100644 --- a/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/egenregistrering/EgenregisteringRoutes.kt +++ b/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/egenregistrering/EgenregisteringRoutes.kt @@ -49,22 +49,17 @@ private fun Route.egenregistreringDoc() { "Bygning Id 1" to EgenregistreringRequest( bygningId = 1, eier = "31129956715", - bygningRegistrering = BygningRegistreringRequest( - bruksarealRegistrering = BruksarealRegistreringRequest( - bruksareal = 125.0, - ), - null, - null, - null, - ), bruksenhetRegistreringer = listOf( BruksenhetRegistreringRequest( bruksenhetId = 1L, null, + byggeaarRegistrering = null, energikildeRegistrering = EnergikildeRegistreringRequest( energikilder = listOf(EnergikildeKode.Elektrisitet, EnergikildeKode.Gass), ), - null, + oppvarmingRegistrering = null, + vannforsyningRegistrering = null, + avlopRegistrering = null, ), ), ), diff --git a/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/egenregistrering/EgenregistreringRequest.kt b/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/egenregistrering/EgenregistreringRequest.kt index c0cf1677..6a188900 100644 --- a/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/egenregistrering/EgenregistreringRequest.kt +++ b/src/main/kotlin/no/kartverket/matrikkel/bygning/routes/v1/egenregistrering/EgenregistreringRequest.kt @@ -19,27 +19,21 @@ import java.time.Instant import java.util.* -@Serializable -data class BygningRegistreringRequest( - val bruksarealRegistrering: BruksarealRegistreringRequest?, - val byggeaarRegistrering: ByggeaarRegistreringRequest?, - val vannforsyningRegistrering: VannforsyningRegistreringRequest?, - val avlopRegistrering: AvlopRegistreringRequest? -) - @Serializable data class BruksenhetRegistreringRequest( val bruksenhetId: Long, val bruksarealRegistrering: BruksarealRegistreringRequest?, + val byggeaarRegistrering: ByggeaarRegistreringRequest?, val energikildeRegistrering: EnergikildeRegistreringRequest?, - val oppvarmingRegistrering: OppvarmingRegistreringRequest? + val oppvarmingRegistrering: OppvarmingRegistreringRequest?, + val vannforsyningRegistrering: VannforsyningRegistreringRequest?, + val avlopRegistrering: AvlopRegistreringRequest?, ) @Serializable data class EgenregistreringRequest( val bygningId: Long, val eier: String, - val bygningRegistrering: BygningRegistreringRequest?, val bruksenhetRegistreringer: List? ) @@ -81,26 +75,6 @@ fun EgenregistreringRequest.toEgenregistrering(): Egenregistrering { registreringstidspunkt = registreringstidspunkt, bygningRegistrering = BygningRegistrering( bygningId = this.bygningId, - byggeaarRegistrering = this.bygningRegistrering?.byggeaarRegistrering?.let { - ByggeaarRegistrering( - byggeaar = it.byggeaar, - ) - }, - bruksarealRegistrering = this.bygningRegistrering?.bruksarealRegistrering?.let { - BruksarealRegistrering( - bruksareal = it.bruksareal, - ) - }, - vannforsyningRegistrering = this.bygningRegistrering?.vannforsyningRegistrering?.let { - VannforsyningRegistrering( - vannforsyning = it.vannforsyning, - ) - }, - avlopRegistrering = this.bygningRegistrering?.avlopRegistrering?.let { - AvlopRegistrering( - avlop = it.avlop, - ) - }, bruksenhetRegistreringer = this.bruksenhetRegistreringer?.map { bruksenhetRegistrering -> BruksenhetRegistrering( bruksenhetId = bruksenhetRegistrering.bruksenhetId, @@ -109,6 +83,21 @@ fun EgenregistreringRequest.toEgenregistrering(): Egenregistrering { bruksareal = it.bruksareal, ) }, + byggeaarRegistrering = bruksenhetRegistrering.byggeaarRegistrering?.let { + ByggeaarRegistrering( + byggeaar = it.byggeaar, + ) + }, + vannforsyningRegistrering = bruksenhetRegistrering.vannforsyningRegistrering?.let { + VannforsyningRegistrering( + vannforsyning = it.vannforsyning, + ) + }, + avlopRegistrering = bruksenhetRegistrering.avlopRegistrering?.let { + AvlopRegistrering( + avlop = it.avlop, + ) + }, energikildeRegistrering = bruksenhetRegistrering.energikildeRegistrering?.let { EnergikildeRegistrering( energikilder = it.energikilder, diff --git a/src/test/kotlin/no/kartverket/matrikkel/bygning/models/BygningExtensionsTest.kt b/src/test/kotlin/no/kartverket/matrikkel/bygning/models/BygningExtensionsTest.kt index e38f82d8..90efdff8 100644 --- a/src/test/kotlin/no/kartverket/matrikkel/bygning/models/BygningExtensionsTest.kt +++ b/src/test/kotlin/no/kartverket/matrikkel/bygning/models/BygningExtensionsTest.kt @@ -9,41 +9,38 @@ import kotlin.test.Test class BygningExtensionsTest { + private val defaultBruksenhet = Bruksenhet( + bruksenhetId = 1L, + bygningId = 1L, + bruksareal = Multikilde(), + energikilder = Multikilde(), + oppvarminger = Multikilde(), + ) + private val defaultBygning = Bygning( bygningId = 1L, bygningsnummer = 100, - bruksenheter = emptyList(), + bruksenheter = listOf(defaultBruksenhet), byggeaar = Multikilde(), bruksareal = Multikilde(), vannforsyning = Multikilde(), avlop = Multikilde(), ) - private val defaultBruksenhet = Bruksenhet( - bruksenhetId = 1L, - bygningId = 1L, - bruksareal = Multikilde(), - energikilder = Multikilde(), - oppvarminger = Multikilde(), - ) - private val defaultBruksenhetRegistrering = BruksenhetRegistrering( bruksenhetId = 1L, bruksarealRegistrering = BruksarealRegistrering( bruksareal = 50.0 ), + byggeaarRegistrering = null, energikildeRegistrering = null, - oppvarmingRegistrering = null + oppvarmingRegistrering = null, + vannforsyningRegistrering = null, + avlopRegistrering = null, ) private val defaultBygningRegistrering = BygningRegistrering( bygningId = 1L, - bruksarealRegistrering = BruksarealRegistrering( - bruksareal = 125.0, - ), - byggeaarRegistrering = null, - vannforsyningRegistrering = null, - avlopRegistrering = null, bruksenhetRegistreringer = listOf(defaultBruksenhetRegistrering), ) @@ -55,20 +52,24 @@ class BygningExtensionsTest { ) @Test - fun `bygning med to egenregistreringer paa ett felt skal kun gi nyeste feltet`() { + fun `bruksenhet med to egenregistreringer paa ett felt skal kun gi nyeste feltet`() { val laterRegistrering = defaultEgenregistrering.copy( id = UUID.randomUUID(), registreringstidspunkt = defaultEgenregistrering.registreringstidspunkt.plusSeconds(60), bygningRegistrering = defaultEgenregistrering.bygningRegistrering.copy( - bruksarealRegistrering = BruksarealRegistrering( - bruksareal = 150.0, + bruksenhetRegistreringer = listOf( + defaultBruksenhetRegistrering.copy( + bruksarealRegistrering = BruksarealRegistrering( + bruksareal = 150.0, + ), + ) ), ), ) val aggregatedBygning = defaultBygning.withEgenregistrertData(listOf(laterRegistrering, defaultEgenregistrering)) - assertThat(aggregatedBygning.bruksareal.egenregistrert?.data).isEqualTo(150.0) + assertThat(aggregatedBygning.bruksenheter.single().bruksareal.egenregistrert?.data).isEqualTo(150.0) } @Test diff --git a/src/test/kotlin/no/kartverket/matrikkel/bygning/services/EgenregistreringValidatorTest.kt b/src/test/kotlin/no/kartverket/matrikkel/bygning/services/EgenregistreringValidatorTest.kt index e99fb8e4..92a8f926 100644 --- a/src/test/kotlin/no/kartverket/matrikkel/bygning/services/EgenregistreringValidatorTest.kt +++ b/src/test/kotlin/no/kartverket/matrikkel/bygning/services/EgenregistreringValidatorTest.kt @@ -28,10 +28,6 @@ class EgenregistreringValidatorTest { eier = Foedselsnummer("31129956715"), bygningRegistrering = BygningRegistrering( bygningId = 1L, - bruksarealRegistrering = null, - byggeaarRegistrering = null, - vannforsyningRegistrering = null, - avlopRegistrering = null, bruksenhetRegistreringer = emptyList() ), ) @@ -47,12 +43,18 @@ class EgenregistreringValidatorTest { bruksarealRegistrering = null, energikildeRegistrering = null, oppvarmingRegistrering = null, + byggeaarRegistrering = null, + vannforsyningRegistrering = null, + avlopRegistrering = null, ), BruksenhetRegistrering( bruksenhetId = 1L, bruksarealRegistrering = null, energikildeRegistrering = null, oppvarmingRegistrering = null, + byggeaarRegistrering = null, + vannforsyningRegistrering = null, + avlopRegistrering = null, ), ) ) @@ -74,6 +76,9 @@ class EgenregistreringValidatorTest { bruksarealRegistrering = null, energikildeRegistrering = null, oppvarmingRegistrering = null, + byggeaarRegistrering = null, + vannforsyningRegistrering = null, + avlopRegistrering = null, ), ) )