diff --git a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/MissionModel.kt b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/MissionModel.kt index bcfb8549d..78ce922dd 100644 --- a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/MissionModel.kt +++ b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/MissionModel.kt @@ -49,120 +49,120 @@ import java.time.ZoneOffset.UTC @NamedEntityGraph( name = "MissionModel.fullLoad", attributeNodes = - [ - NamedAttributeNode("envActions", subgraph = "subgraph.envActions"), - NamedAttributeNode( - "attachedReportings", - subgraph = "subgraph.attachedReportings", - ), - NamedAttributeNode( - "controlResources", - subgraph = "subgraph.missionControlResources", - ), - NamedAttributeNode( - "controlUnits", - subgraph = "subgraph.missionControlUnits", - ), - ], + [ + NamedAttributeNode("envActions", subgraph = "subgraph.envActions"), + NamedAttributeNode( + "attachedReportings", + subgraph = "subgraph.attachedReportings", + ), + NamedAttributeNode( + "controlResources", + subgraph = "subgraph.missionControlResources", + ), + NamedAttributeNode( + "controlUnits", + subgraph = "subgraph.missionControlUnits", + ), + ], subgraphs = - [ - NamedSubgraph( - name = "subgraph.envActions", - attributeNodes = - [ - NamedAttributeNode("controlPlanThemes"), - NamedAttributeNode( - "controlPlanSubThemes", - subgraph = - "subgraph.linkedControlPlanSubThemes", - ), - NamedAttributeNode( - "controlPlanTags", - subgraph = "subgraph.linkedControlPlanTags", - ), - NamedAttributeNode("attachedReporting"), - ], - ), - NamedSubgraph( - name = "subgraph.attachedReportings", - attributeNodes = - [ - NamedAttributeNode( - "controlPlanSubThemes", - subgraph = - "subgraph.linkedControlPlanSubThemes", - ), - ], - ), - NamedSubgraph( - name = "subgraph.linkedControlPlanSubThemes", - attributeNodes = - [ - NamedAttributeNode( - "controlPlanSubTheme", - subgraph = "subgraph.controlPlanSubThemes", - ), - ], - ), - NamedSubgraph( - name = "subgraph.controlPlanSubThemes", - attributeNodes = - [ - NamedAttributeNode("controlPlanTheme"), - ], - ), - NamedSubgraph( - name = "subgraph.linkedControlPlanTags", - attributeNodes = - [ - NamedAttributeNode( - "controlPlanTag", - subgraph = "subgraph.controlPlanTags", - ), - ], - ), - NamedSubgraph( - name = "subgraph.controlPlanTags", - attributeNodes = - [ - NamedAttributeNode("controlPlanTheme"), - ], - ), - NamedSubgraph( - name = "subgraph.missionControlResources", - attributeNodes = - [ - NamedAttributeNode( - "resource", - subgraph = "subgraph.controlResource", - ), - ], - ), - NamedSubgraph( - name = "subgraph.missionControlUnits", - attributeNodes = - [ - NamedAttributeNode( - "unit", - subgraph = "subgraph.controlUnit", - ), - ], - ), - NamedSubgraph( - name = "subgraph.controlUnit", - attributeNodes = - [ - NamedAttributeNode("administration"), - ], - ), - NamedSubgraph( - name = "subgraph.controlResource", - attributeNodes = - [ - NamedAttributeNode("station"), - ], - ), - ], + [ + NamedSubgraph( + name = "subgraph.envActions", + attributeNodes = + [ + NamedAttributeNode("controlPlanThemes"), + NamedAttributeNode( + "controlPlanSubThemes", + subgraph = + "subgraph.linkedControlPlanSubThemes", + ), + NamedAttributeNode( + "controlPlanTags", + subgraph = "subgraph.linkedControlPlanTags", + ), + NamedAttributeNode("attachedReporting"), + ], + ), + NamedSubgraph( + name = "subgraph.attachedReportings", + attributeNodes = + [ + NamedAttributeNode( + "controlPlanSubThemes", + subgraph = + "subgraph.linkedControlPlanSubThemes", + ), + ], + ), + NamedSubgraph( + name = "subgraph.linkedControlPlanSubThemes", + attributeNodes = + [ + NamedAttributeNode( + "controlPlanSubTheme", + subgraph = "subgraph.controlPlanSubThemes", + ), + ], + ), + NamedSubgraph( + name = "subgraph.controlPlanSubThemes", + attributeNodes = + [ + NamedAttributeNode("controlPlanTheme"), + ], + ), + NamedSubgraph( + name = "subgraph.linkedControlPlanTags", + attributeNodes = + [ + NamedAttributeNode( + "controlPlanTag", + subgraph = "subgraph.controlPlanTags", + ), + ], + ), + NamedSubgraph( + name = "subgraph.controlPlanTags", + attributeNodes = + [ + NamedAttributeNode("controlPlanTheme"), + ], + ), + NamedSubgraph( + name = "subgraph.missionControlResources", + attributeNodes = + [ + NamedAttributeNode( + "resource", + subgraph = "subgraph.controlResource", + ), + ], + ), + NamedSubgraph( + name = "subgraph.missionControlUnits", + attributeNodes = + [ + NamedAttributeNode( + "unit", + subgraph = "subgraph.controlUnit", + ), + ], + ), + NamedSubgraph( + name = "subgraph.controlUnit", + attributeNodes = + [ + NamedAttributeNode("administration"), + ], + ), + NamedSubgraph( + name = "subgraph.controlResource", + attributeNodes = + [ + NamedAttributeNode("station"), + ], + ), + ], ) @Table(name = "missions") class MissionModel( @@ -319,25 +319,25 @@ class MissionModel( return MissionDTO( mission = this.toMissionEntity(objectMapper), attachedReportingIds = - this.attachedReportings - ?.filter { it.detachedFromMissionAtUtc == null } - ?.map { it.id as Int } - ?: listOf(), + this.attachedReportings + ?.filter { it.detachedFromMissionAtUtc == null } + ?.map { it.id as Int } + ?: listOf(), attachedReportings = - this.attachedReportings - ?.filter { it.detachedFromMissionAtUtc == null } - ?.map { it.toReportingDTO(objectMapper) } - ?: listOf(), + this.attachedReportings + ?.filter { it.detachedFromMissionAtUtc == null } + ?.map { it.toReportingDTO(objectMapper) } + ?: listOf(), detachedReportings = - this.attachedReportings - ?.filter { it.detachedFromMissionAtUtc != null } - ?.map { it.toReportingDTO(objectMapper) } - ?: listOf(), + this.attachedReportings + ?.filter { it.detachedFromMissionAtUtc != null } + ?.map { it.toReportingDTO(objectMapper) } + ?: listOf(), detachedReportingIds = - this.attachedReportings - ?.filter { it.detachedFromMissionAtUtc != null } - ?.map { it.id as Int } - ?: listOf(), + this.attachedReportings + ?.filter { it.detachedFromMissionAtUtc != null } + ?.map { it.id as Int } + ?: listOf(), envActionsAttachedToReportingIds = envActionsAttachedToReportingIds, ) } diff --git a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepository.kt b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepository.kt index e075a2ae9..370a74ce5 100644 --- a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepository.kt +++ b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepository.kt @@ -38,7 +38,6 @@ class JpaEnvActionRepository( val controlPlanTagssReferenceModelMap: MutableMap = mutableMapOf() val controlPlanSubThemesReferenceModelMap: MutableMap = mutableMapOf() - envAction.controlPlans?.forEach { controlPlan -> controlPlan.tagIds?.forEach { tagId -> controlPlanTagssReferenceModelMap[tagId] = idbControlPlanTagRepository.getReferenceById(tagId) diff --git a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/actions/fixtures/EnvActionFixture.kt b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/actions/fixtures/EnvActionFixture.kt index e7eec5497..e0578e7dc 100644 --- a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/actions/fixtures/EnvActionFixture.kt +++ b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/actions/fixtures/EnvActionFixture.kt @@ -12,9 +12,7 @@ import java.time.ZonedDateTime import java.util.UUID class EnvActionFixture { - companion object { - fun anEnvAction( mapper: ObjectMapper, id: UUID, @@ -22,7 +20,7 @@ class EnvActionFixture { endTime: ZonedDateTime? = null, observationsByUnit: String? = null, missionId: Int? = 1, - controlPlans: List? = null + controlPlans: List? = null, ): EnvActionEntity { return EnvActionMapper.getEnvActionEntityFromJSON( mapper, diff --git a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepositoryITest.kt b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepositoryITest.kt index c53caaa10..62267d87d 100644 --- a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepositoryITest.kt +++ b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepositoryITest.kt @@ -1,6 +1,7 @@ package fr.gouv.cacem.monitorenv.infrastructure.database.repositories import com.fasterxml.jackson.databind.ObjectMapper +import fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.EnvActionControlPlanEntity import fr.gouv.cacem.monitorenv.domain.exceptions.BackendUsageException import fr.gouv.cacem.monitorenv.domain.use_cases.actions.fixtures.EnvActionFixture.Companion.anEnvAction import org.assertj.core.api.Assertions.assertThat @@ -12,7 +13,6 @@ import java.time.ZonedDateTime import java.util.UUID class JpaEnvActionRepositoryITest : AbstractDBTests() { - @Autowired private lateinit var jpaEnvActionRepository: JpaEnvActionRepository @@ -46,18 +46,31 @@ class JpaEnvActionRepositoryITest : AbstractDBTests() { @Test fun `save() should return the updated entity`() { // Given - val id = UUID.fromString("16eeb9e8-f30c-430e-b36b-32b4673f81ce") + val id = UUID.fromString("e2257638-ddef-4611-960c-7675a3254c38") val today = ZonedDateTime.now(ZoneOffset.UTC) val tomorrow = ZonedDateTime.now(ZoneOffset.UTC).plusDays(1) val observationsByUnit = "observationsByUnit" - val anEnvAction = anEnvAction(objectMapper, id, today, tomorrow, observationsByUnit) + val anEnvAction = + anEnvAction( + objectMapper, + id, + today, + tomorrow, + observationsByUnit, + missionId = 38, + controlPlans = + listOf( + EnvActionControlPlanEntity(themeId = 9, subThemeIds = listOf(51), tagIds = listOf()), + ), + ) // When val envActionEntity = jpaEnvActionRepository.save(anEnvAction) // Then assertThat(envActionEntity).isEqualTo(anEnvAction) + assertThat(envActionEntity.controlPlans?.size).isEqualTo(1) } @Test