-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Moyens et unités] Ajout de la dialog d'impossibilité de suppression …
…de moyens liés à des missions (#932) ## Related Pull Requests & Issues - Resolve #925 - Resolve #930 ---- - [x] Tests E2E (Cypress) --- - ~~Je n'ai pas encore ajouté le test e2e (pour la dialog d'impossibilité de suppression).~~ (Done) - La très large majeure partie du code de cette PR sont des ajouts de tests unitaires. Les fixs sont assez petits et mes commits sont bien séparés. - Ce que je compte faire mais n'ai pas le temps de faire sur cette PR : - Refactorer les `deleteControlUnitContact` & `deleteControlUnitResource` use cases pour gérer les dialogs directement dans les composants concernés sans Redux. Je l'ai déjà fait pour le BackOffice dans une PR précédente. - Ajouter des `try {} catch {}` avec une gestion des erreurs d'archivage / suppression à posteriori (ex: au moment où on demande à supprimer un unité, elle n'est liée à aucune mission, mais au moment où on confirme, elle l'est et ne peut donc plus être supprimée).
- Loading branch information
Showing
56 changed files
with
1,488 additions
and
67 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
15 changes: 15 additions & 0 deletions
15
...lin/fr/gouv/cacem/monitorenv/domain/use_cases/controlUnit/CanDeleteControlUnitResource.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package fr.gouv.cacem.monitorenv.domain.use_cases.controlUnit | ||
|
||
import fr.gouv.cacem.monitorenv.config.UseCase | ||
import fr.gouv.cacem.monitorenv.domain.repositories.IMissionRepository | ||
|
||
@UseCase | ||
class CanDeleteControlUnitResource( | ||
private val missionRepository: IMissionRepository, | ||
) { | ||
fun execute(controlUnitResourceId: Int): Boolean { | ||
val missions = missionRepository.findByControlUnitResourceId(controlUnitResourceId) | ||
|
||
return missions.isEmpty() | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
...n/fr/gouv/cacem/monitorenv/domain/use_cases/administration/ArchiveAdministrationUTests.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package fr.gouv.cacem.monitorenv.domain.use_cases.administration | ||
|
||
import com.nhaarman.mockitokotlin2.given | ||
import com.nhaarman.mockitokotlin2.verify | ||
import com.nhaarman.mockitokotlin2.verifyNoMoreInteractions | ||
import fr.gouv.cacem.monitorenv.domain.repositories.IAdministrationRepository | ||
import fr.gouv.cacem.monitorenv.infrastructure.database.repositories.exceptions.UnarchivedChildException | ||
import org.assertj.core.api.Assertions.assertThatThrownBy | ||
import org.junit.jupiter.api.Test | ||
import org.junit.jupiter.api.extension.ExtendWith | ||
import org.springframework.boot.test.mock.mockito.MockBean | ||
import org.springframework.test.context.junit.jupiter.SpringExtension | ||
|
||
@ExtendWith(SpringExtension::class) | ||
class ArchiveAdministrationUTests { | ||
@MockBean | ||
private lateinit var administrationRepository: IAdministrationRepository | ||
|
||
@MockBean | ||
private lateinit var canArchiveAdministration: CanArchiveAdministration | ||
|
||
@Test | ||
fun `execute should archive when canArchive returns true`() { | ||
val administrationId = 1 | ||
|
||
given(canArchiveAdministration.execute(administrationId)).willReturn(true) | ||
|
||
ArchiveAdministration(administrationRepository, canArchiveAdministration).execute(administrationId) | ||
|
||
verify(administrationRepository).archiveById(administrationId) | ||
} | ||
|
||
@Test | ||
fun `execute should throw UnarchivedChildException when canArchive() returns false`() { | ||
val administrationId = 1 | ||
|
||
given(canArchiveAdministration.execute(administrationId)).willReturn(false) | ||
|
||
assertThatThrownBy { | ||
ArchiveAdministration(administrationRepository, canArchiveAdministration).execute(administrationId) | ||
} | ||
.isInstanceOf(UnarchivedChildException::class.java) | ||
|
||
verifyNoMoreInteractions(administrationRepository) | ||
} | ||
} |
76 changes: 76 additions & 0 deletions
76
...r/gouv/cacem/monitorenv/domain/use_cases/administration/CanArchiveAdministrationUTests.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
package fr.gouv.cacem.monitorenv.domain.use_cases.administration | ||
|
||
import com.nhaarman.mockitokotlin2.given | ||
import fr.gouv.cacem.monitorenv.domain.entities.administration.AdministrationEntity | ||
import fr.gouv.cacem.monitorenv.domain.entities.controlUnit.ControlUnitEntity | ||
import fr.gouv.cacem.monitorenv.domain.repositories.IAdministrationRepository | ||
import fr.gouv.cacem.monitorenv.domain.use_cases.administration.dtos.FullAdministrationDTO | ||
import org.assertj.core.api.Assertions.assertThat | ||
import org.junit.jupiter.api.Test | ||
import org.junit.jupiter.api.extension.ExtendWith | ||
import org.springframework.boot.test.mock.mockito.MockBean | ||
import org.springframework.test.context.junit.jupiter.SpringExtension | ||
|
||
@ExtendWith(SpringExtension::class) | ||
class CanArchiveAdministrationUTests { | ||
@MockBean | ||
private lateinit var administrationRepository: IAdministrationRepository | ||
|
||
@Test | ||
fun `execute should return true when all control units are archived`() { | ||
val administrationId = 1 | ||
val fullAdministration = FullAdministrationDTO( | ||
administration = AdministrationEntity( | ||
id = 1, | ||
name = "Administration Name", | ||
isArchived = false, | ||
), | ||
controlUnits = listOf( | ||
ControlUnitEntity( | ||
id = 0, | ||
administrationId = 1, | ||
areaNote = null, | ||
departmentAreaInseeCode = null, | ||
isArchived = true, | ||
name = "Control Unit Name", | ||
termsNote = null, | ||
), | ||
), | ||
) | ||
|
||
given(administrationRepository.findById(administrationId)).willReturn(fullAdministration) | ||
|
||
val result = CanArchiveAdministration(administrationRepository).execute(administrationId) | ||
|
||
assertThat(result).isTrue | ||
} | ||
|
||
@Test | ||
fun `execute should return false when some control units are not archived`() { | ||
val administrationId = 1 | ||
val fullAdministration = FullAdministrationDTO( | ||
administration = AdministrationEntity( | ||
id = 1, | ||
name = "Administration Name", | ||
isArchived = false, | ||
), | ||
controlUnits = listOf( | ||
ControlUnitEntity( | ||
id = 0, | ||
administrationId = 1, | ||
areaNote = null, | ||
departmentAreaInseeCode = null, | ||
isArchived = false, | ||
name = "Control Unit Name", | ||
termsNote = null, | ||
), | ||
), | ||
) | ||
|
||
given(administrationRepository.findById(administrationId)).willReturn(fullAdministration) | ||
|
||
val result = CanArchiveAdministration(administrationRepository).execute(administrationId) | ||
|
||
assertThat(result).isFalse | ||
} | ||
} |
66 changes: 66 additions & 0 deletions
66
...fr/gouv/cacem/monitorenv/domain/use_cases/administration/CanDeleteAdministrationUTests.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
package fr.gouv.cacem.monitorenv.domain.use_cases.administration | ||
|
||
import com.nhaarman.mockitokotlin2.given | ||
import fr.gouv.cacem.monitorenv.domain.entities.administration.AdministrationEntity | ||
import fr.gouv.cacem.monitorenv.domain.entities.controlUnit.ControlUnitEntity | ||
import fr.gouv.cacem.monitorenv.domain.repositories.IAdministrationRepository | ||
import fr.gouv.cacem.monitorenv.domain.use_cases.administration.dtos.FullAdministrationDTO | ||
import org.assertj.core.api.Assertions.assertThat | ||
import org.junit.Test | ||
import org.junit.jupiter.api.extension.ExtendWith | ||
import org.springframework.boot.test.mock.mockito.MockBean | ||
import org.springframework.test.context.junit.jupiter.SpringExtension | ||
|
||
@ExtendWith(SpringExtension::class) | ||
class CanDeleteAdministrationUTests { | ||
@MockBean | ||
private lateinit var administrationRepository: IAdministrationRepository | ||
|
||
@Test | ||
fun `execute should return true when control units are empty`() { | ||
val administrationId = 1 | ||
val fullAdministration = FullAdministrationDTO( | ||
administration = AdministrationEntity( | ||
id = 1, | ||
name = "Administration Name", | ||
isArchived = false, | ||
), | ||
controlUnits = listOf(), | ||
) | ||
|
||
given(administrationRepository.findById(administrationId)).willReturn(fullAdministration) | ||
|
||
val result = CanDeleteAdministration(administrationRepository).execute(administrationId) | ||
|
||
assertThat(result).isTrue | ||
} | ||
|
||
@Test | ||
fun `execute should return false when control units are not empty`() { | ||
val administrationId = 1 | ||
val fullAdministration = FullAdministrationDTO( | ||
administration = AdministrationEntity( | ||
id = 1, | ||
name = "Administration Name", | ||
isArchived = false, | ||
), | ||
controlUnits = listOf( | ||
ControlUnitEntity( | ||
id = 0, | ||
administrationId = 1, | ||
areaNote = null, | ||
departmentAreaInseeCode = null, | ||
isArchived = true, | ||
name = "Control Unit Name", | ||
termsNote = null, | ||
), | ||
), | ||
) | ||
|
||
given(administrationRepository.findById(administrationId)).willReturn(fullAdministration) | ||
|
||
val result = CanDeleteAdministration(administrationRepository).execute(administrationId) | ||
|
||
assertThat(result).isFalse | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
43 changes: 43 additions & 0 deletions
43
...in/fr/gouv/cacem/monitorenv/domain/use_cases/administration/DeleteAdministrationUTests.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package fr.gouv.cacem.monitorenv.domain.use_cases.administration | ||
|
||
import com.nhaarman.mockitokotlin2.given | ||
import com.nhaarman.mockitokotlin2.verify | ||
import fr.gouv.cacem.monitorenv.domain.repositories.IAdministrationRepository | ||
import fr.gouv.cacem.monitorenv.infrastructure.database.repositories.exceptions.ForeignKeyConstraintException | ||
import org.assertj.core.api.Assertions.assertThatThrownBy | ||
import org.junit.Test | ||
import org.junit.jupiter.api.extension.ExtendWith | ||
import org.springframework.boot.test.mock.mockito.MockBean | ||
import org.springframework.test.context.junit.jupiter.SpringExtension | ||
|
||
@ExtendWith(SpringExtension::class) | ||
class DeleteAdministrationUTests { | ||
@MockBean | ||
private lateinit var administrationRepository: IAdministrationRepository | ||
|
||
@MockBean | ||
private lateinit var canDeleteAdministration: CanDeleteAdministration | ||
|
||
@Test | ||
fun `execute should delete when canDeleteAdministration returns true`() { | ||
val administrationId = 1 | ||
|
||
given(canDeleteAdministration.execute(administrationId)).willReturn(true) | ||
|
||
DeleteAdministration(administrationRepository, canDeleteAdministration).execute(administrationId) | ||
|
||
verify(administrationRepository).deleteById(administrationId) | ||
} | ||
|
||
@Test | ||
fun `execute should throw ForeignKeyConstraintException when canDeleteAdministration returns false`() { | ||
val administrationId = 1 | ||
|
||
given(canDeleteAdministration.execute(administrationId)).willReturn(false) | ||
|
||
assertThatThrownBy { | ||
DeleteAdministration(administrationRepository, canDeleteAdministration).execute(administrationId) | ||
} | ||
.isInstanceOf(ForeignKeyConstraintException::class.java) | ||
} | ||
} |
36 changes: 36 additions & 0 deletions
36
...n/fr/gouv/cacem/monitorenv/domain/use_cases/administration/GetAdministrationByIdUTests.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package fr.gouv.cacem.monitorenv.domain.use_cases.administration | ||
|
||
import com.nhaarman.mockitokotlin2.given | ||
import fr.gouv.cacem.monitorenv.domain.entities.administration.AdministrationEntity | ||
import fr.gouv.cacem.monitorenv.domain.repositories.IAdministrationRepository | ||
import fr.gouv.cacem.monitorenv.domain.use_cases.administration.dtos.FullAdministrationDTO | ||
import org.assertj.core.api.Assertions.assertThat | ||
import org.junit.Test | ||
import org.junit.jupiter.api.extension.ExtendWith | ||
import org.springframework.boot.test.mock.mockito.MockBean | ||
import org.springframework.test.context.junit.jupiter.SpringExtension | ||
|
||
@ExtendWith(SpringExtension::class) | ||
class GetAdministrationByIdUTests { | ||
@MockBean | ||
private lateinit var administrationRepository: IAdministrationRepository | ||
|
||
@Test | ||
fun `execute should return an administration by its ID`() { | ||
val administrationId = 1 | ||
val fullAdministration = FullAdministrationDTO( | ||
administration = AdministrationEntity( | ||
id = 1, | ||
name = "Administration Name", | ||
isArchived = false, | ||
), | ||
controlUnits = listOf(), | ||
) | ||
|
||
given(administrationRepository.findById(administrationId)).willReturn(fullAdministration) | ||
|
||
val result = GetAdministrationById(administrationRepository).execute(administrationId) | ||
|
||
assertThat(result).isEqualTo(fullAdministration) | ||
} | ||
} |
Oops, something went wrong.