Skip to content

Commit b34ae94

Browse files
authored
Préavis – Ajout du CFR dans la recherche de navires (#3497)
## Linked issues - Resolve #3456 ---- - [ ] Tests E2E (Cypress)
2 parents bd371d8 + 3521d37 commit b34ae94

File tree

4 files changed

+98
-4
lines changed

4 files changed

+98
-4
lines changed

backend/src/main/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/interfaces/DBLogbookReportRepository.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,11 @@ interface DBLogbookReportRepository :
5454
AND (:portLocodes IS NULL OR lr.value->>'port' IN (:portLocodes))
5555
5656
-- Search Query
57-
AND (:searchQuery IS NULL OR unaccent(lower(lr.vessel_name)) ILIKE CONCAT('%', unaccent(lower(:searchQuery)), '%'))
57+
AND (
58+
:searchQuery IS NULL OR
59+
unaccent(lower(lr.vessel_name)) ILIKE CONCAT('%', unaccent(lower(:searchQuery)), '%') OR
60+
lower(lr.cfr) ILIKE CONCAT('%', lower(:searchQuery), '%')
61+
)
5862
5963
-- Will Arrive After
6064
AND lr.value->>'predictedArrivalDatetimeUtc' >= :willArriveAfter

backend/src/main/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/interfaces/DBManualPriorNotificationRepository.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@ interface DBManualPriorNotificationRepository : JpaRepository<ManualPriorNotific
4545
AND (:portLocodes IS NULL OR mpn.value->>'port' IN (:portLocodes))
4646
4747
-- Search Query
48-
AND (:searchQuery IS NULL OR unaccent(lower(mpn.vessel_name)) ILIKE CONCAT('%', unaccent(lower(:searchQuery)), '%'))
48+
AND (
49+
:searchQuery IS NULL OR
50+
unaccent(lower(mpn.vessel_name)) ILIKE CONCAT('%', unaccent(lower(:searchQuery)), '%') OR
51+
lower(mpn.cfr) ILIKE CONCAT('%', lower(:searchQuery), '%')
52+
)
4953
5054
-- Will Arrive After
5155
AND mpn.value->>'predictedArrivalDatetimeUtc' >= :willArriveAfter

backend/src/test/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/JpaLogbookReportRepositoryITests.kt

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,7 @@ class JpaLogbookReportRepositoryITests : AbstractDBTests() {
728728

729729
@Test
730730
@Transactional
731-
fun `findAllPriorNotifications Should return PNO logbook reports for PHENOMENE vessel`() {
731+
fun `findAllPriorNotifications Should return PNO logbook reports When using a vessel name`() {
732732
// Given
733733
val firstFilter = PriorNotificationsFilter(
734734
searchQuery = "pheno",
@@ -770,6 +770,50 @@ class JpaLogbookReportRepositoryITests : AbstractDBTests() {
770770
assertThat(secondResultVessels.all { it.vesselName == "PHENOMENE" }).isTrue()
771771
}
772772

773+
@Test
774+
@Transactional
775+
fun `findAllPriorNotifications Should return PNO logbook reports When using a CFR`() {
776+
// Given
777+
val firstFilter = PriorNotificationsFilter(
778+
searchQuery = "FAK000999999",
779+
willArriveAfter = "2000-01-01T00:00:00Z",
780+
willArriveBefore = "2100-01-01T00:00:00Z",
781+
)
782+
783+
// When
784+
val firstResult = jpaLogbookReportRepository.findAllPriorNotifications(firstFilter)
785+
786+
// Then
787+
assertThat(firstResult).hasSizeGreaterThan(0)
788+
val firstResultVessels = firstResult.mapNotNull {
789+
jpaVesselRepository.findFirstByInternalReferenceNumber(
790+
it.logbookMessageAndValue.logbookMessage.internalReferenceNumber!!,
791+
)
792+
}
793+
assertThat(firstResultVessels).hasSize(firstResult.size)
794+
assertThat(firstResultVessels.all { it.vesselName == "PHENOMENE" }).isTrue()
795+
796+
// Given
797+
val secondFilter = PriorNotificationsFilter(
798+
searchQuery = "999999",
799+
willArriveAfter = "2000-01-01T00:00:00Z",
800+
willArriveBefore = "2100-01-01T00:00:00Z",
801+
)
802+
803+
// When
804+
val secondResult = jpaLogbookReportRepository.findAllPriorNotifications(secondFilter)
805+
806+
// Then
807+
assertThat(secondResult).hasSizeGreaterThan(0)
808+
val secondResultVessels = secondResult.mapNotNull {
809+
jpaVesselRepository.findFirstByInternalReferenceNumber(
810+
it.logbookMessageAndValue.logbookMessage.internalReferenceNumber!!,
811+
)
812+
}
813+
assertThat(secondResultVessels).hasSize(secondResult.size)
814+
assertThat(secondResultVessels.all { it.vesselName == "PHENOMENE" }).isTrue()
815+
}
816+
773817
@Test
774818
@Transactional
775819
fun `findAllPriorNotifications Should return PNO logbook reports for COD & HKE species`() {

backend/src/test/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/JpaManualPriorNotificationRepositoryITests.kt

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ class JpaManualPriorNotificationRepositoryITests : AbstractDBTests() {
202202

203203
@Test
204204
@Transactional
205-
fun `findAll Should return manual prior notifications for NAVIRE RENOMMÉ vessel`() {
205+
fun `findAll Should return manual prior notifications When searching a vessel name`() {
206206
// Given
207207
val firstFilter = defaultPriorNotificationsFilter.copy(searchQuery = "renom")
208208

@@ -242,6 +242,48 @@ class JpaManualPriorNotificationRepositoryITests : AbstractDBTests() {
242242
assertThat(secondResultVessels.all { it.vesselName == "NAVIRE RENOMMÉ (NOUVEAU NOM)" }).isTrue()
243243
}
244244

245+
@Test
246+
@Transactional
247+
fun `findAll Should return manual prior notifications When searching a vessel cfr`() {
248+
// Given
249+
val firstFilter = defaultPriorNotificationsFilter.copy(searchQuery = "CFR116")
250+
251+
// When
252+
val firstResult = jpaManualPriorNotificationRepository.findAll(firstFilter)
253+
254+
// Then
255+
assertThat(firstResult).hasSizeBetween(1, allManualPriorNotificationsLength - 1)
256+
assertThat(
257+
firstResult.all { it.logbookMessageAndValue.logbookMessage.vesselName == "NAVIRE RENOMMÉ (ANCIEN NOM)" },
258+
).isTrue()
259+
val firstResultVessels = firstResult.mapNotNull {
260+
jpaVesselRepository.findFirstByInternalReferenceNumber(
261+
it.logbookMessageAndValue.logbookMessage.internalReferenceNumber!!,
262+
)
263+
}
264+
assertThat(firstResultVessels).hasSize(firstResult.size)
265+
assertThat(firstResultVessels.all { it.vesselName == "NAVIRE RENOMMÉ (NOUVEAU NOM)" }).isTrue()
266+
267+
// Given
268+
val secondFilter = defaultPriorNotificationsFilter.copy(searchQuery = "116")
269+
270+
// When
271+
val secondResult = jpaManualPriorNotificationRepository.findAll(secondFilter)
272+
273+
// Then
274+
assertThat(secondResult).hasSizeBetween(1, allManualPriorNotificationsLength - 1)
275+
assertThat(
276+
secondResult.all { it.logbookMessageAndValue.logbookMessage.vesselName == "NAVIRE RENOMMÉ (ANCIEN NOM)" },
277+
).isTrue()
278+
val secondResultVessels = secondResult.mapNotNull {
279+
jpaVesselRepository.findFirstByInternalReferenceNumber(
280+
it.logbookMessageAndValue.logbookMessage.internalReferenceNumber!!,
281+
)
282+
}
283+
assertThat(secondResultVessels).hasSize(secondResult.size)
284+
assertThat(secondResultVessels.all { it.vesselName == "NAVIRE RENOMMÉ (NOUVEAU NOM)" }).isTrue()
285+
}
286+
245287
@Test
246288
@Transactional
247289
fun `findAll Should return manual prior notifications for BIB & BFT species`() {

0 commit comments

Comments
 (0)