Skip to content

Commit

Permalink
Merge branch 'main' into maxime/tech/use_case_validation
Browse files Browse the repository at this point in the history
  • Loading branch information
maximeperraultdev authored Jan 20, 2025
2 parents aff2b85 + e290a3a commit 3a62019
Show file tree
Hide file tree
Showing 14 changed files with 88 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import fr.gouv.cacem.monitorenv.domain.entities.vigilanceArea.FrequencyEnum
import fr.gouv.cacem.monitorenv.domain.entities.vigilanceArea.ImageEntity
import fr.gouv.cacem.monitorenv.domain.entities.vigilanceArea.VigilanceAreaEntity
import fr.gouv.cacem.monitorenv.domain.entities.vigilanceArea.VisibilityEnum
import fr.gouv.cacem.monitorenv.domain.use_cases.vigilanceArea.fixtures.VigilanceAreaFixture
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
Expand Down Expand Up @@ -192,6 +193,20 @@ class JpaVigilanceAreaRepositoryITests : AbstractDBTests() {
assertThat(archivedVigilanceArea?.isArchived).isEqualTo(true)
}

@Test
@Transactional
fun `archive should not archive limitless vigilance areas`() {
// Given
val limitlessVigilanceArea =
VigilanceAreaFixture.aVigilanceAreaEntity().copy(id = null, isAtAllTimes = true)
val savedVigilanceArea = jpaVigilanceAreaRepository.save(limitlessVigilanceArea)
// When
jpaVigilanceAreaRepository.archiveOutdatedVigilanceAreas()
// Then
val archivedVigilanceArea = jpaVigilanceAreaRepository.findById(savedVigilanceArea.id!!)
assertThat(archivedVigilanceArea?.isArchived).isEqualTo(false)
}

@Test
fun `findAllByGeometry should return all vigilance areas that intersect the geometry `() {
// Given
Expand Down
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 13 additions & 1 deletion frontend/cypress/e2e/side_window/reporting/reportings.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,23 @@ context('Reportings', () => {

cy.fill('Saisi par', 'CDA')

cy.wait('@createReporting').then(({ response }) => {
cy.wait('@createReporting').then(({ request, response }) => {
const reportingRequest: Reporting = request.body
expect(reportingRequest.reportingSources[0]?.id).equal(null)
expect(reportingRequest.id).equal(null)
expect(reportingRequest.reportingId).equal(null)

const reporting: Reporting = response?.body
expect(reporting.reportingSources[0]?.sourceName).equal('Reporting dupliqué')
expect(reporting.reportingSources[0]?.id).not.equal(null)
expect(reporting.description).equal('Lorem ipsum dolor sit amet, consectetur adipiscing elit.')
expect(reporting.reportType).equal('OBSERVATION')
expect(reporting.openBy).equal('CDA')

// clean
cy.wait(250)
cy.clickButton('Supprimer le signalement')
cy.clickButton('Confirmer la suppression')
})
})

Expand All @@ -60,6 +71,7 @@ context('Reportings', () => {
expect(response && response.statusCode).equal(204)
})
})

it('Multiples reportings can be opened or created and saved in store', () => {
cy.getDataCy('status-filter-Archivés').click()

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { OPENLAYERS_PROJECTION, WSG84_PROJECTION } from '@mtes-mct/monitor-ui'
import _ from 'lodash'
import { find, flatten } from 'lodash'
import GeoJSON from 'ol/format/GeoJSON'
import VectorImageLayer from 'ol/layer/VectorImage'
import { bbox as bboxStrategy } from 'ol/loadingstrategy'
Expand All @@ -10,6 +10,9 @@ import { getAdministrativeLayersStyle } from '../../../features/map/layers/style
import { administrativeLayers } from '../../entities/administrativeLayers'
import { LayerType } from '../../entities/layers/constants'

import type { Feature } from 'ol'
import type { Geometry } from 'ol/geom'

const IRRETRIEVABLE_FEATURES_EVENT = 'IRRETRIEVABLE_FEATURES'

const setIrretrievableFeaturesEvent = error => ({
Expand All @@ -19,7 +22,7 @@ const setIrretrievableFeaturesEvent = error => ({

export const getAdministrativeVectorLayer = layerId => {
// TODO Type these `any`.
const layerDefinition: any = _.find(_.flatten(administrativeLayers as any), (l: any) => l.code === layerId)
const layerDefinition: any = find(flatten(administrativeLayers as any), (l: any) => l.code === layerId)
const code = layerDefinition?.groupCode || layerDefinition?.code
const zone = layerDefinition?.groupCode ? layerDefinition?.code : undefined
const layer = new VectorImageLayer({
Expand All @@ -30,13 +33,7 @@ export const getAdministrativeVectorLayer = layerId => {
type: LayerType.ADMINISTRATIVE
},
source: getAdministrativeVectorSourceBBOXStrategy(code, zone),
style: getAdministrativeLayersStyle(code),
// TODO TS tells this prop doesn't exist, does it?
// `updateWhileAnimating` & `updateWhileInteracting` don't exist
// => https://github.com/openlayers/openlayers/issues/11250#issuecomment-654150900 (interesting thread by the way)
// @ts-ignore
updateWhileAnimating: true,
updateWhileInteracting: true
style: getAdministrativeLayersStyle(code)
})

return layer
Expand All @@ -58,8 +55,9 @@ function getAdministrativeVectorSourceBBOXStrategy(code, subZone) {
getAdministrativeZoneFromAPI(code, extent, subZone)
.then(administrativeZone => {
vectorSource.clear(true)
// TODO Type this `any`.
vectorSource.addFeatures(vectorSource.getFormat()?.readFeatures(administrativeZone) as any)
const features: Feature<Geometry>[] = vectorSource.getFormat()?.readFeatures(administrativeZone) ?? []

vectorSource.addFeatures(features)
})
.catch(e => {
// TODO Type this `any`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ export function GeneratePdfButton({ dashboard }: GeneratePdfButtonProps) {
]
)

const [pdf, update] = usePDF({ document: <Brief brief={brief} /> })
const [pdf, update] = usePDF()

const handleDownload = () => {
setIsGenerating(true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ export function GeneratePdfButton({ dashboard }: GeneratePdfButtonProps) {
]
)

const [pdf, update] = usePDF({ document: <Brief brief={brief} /> })
const [pdf, update] = usePDF()

const handleDownload = () => {
setIsGenerating(true)
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/features/Mission/components/MissionForm/sse.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { undefine } from '@mtes-mct/monitor-ui'

import { isMissionAutoUpdateEnabled } from './utils'

import type { Mission } from '../../../../domain/entities/missions'

export const missionEventListener = (callback: (mission: Mission) => void) => (event: MessageEvent) => {
const mission = JSON.parse(event.data) as Mission
const mission = undefine(JSON.parse(event.data)) as Mission

// eslint-disable-next-line no-console
console.log(`SSE: received a mission update.`)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { undefine } from '@mtes-mct/monitor-ui'

import { isReportingAutoUpdateEnabled } from './utils'

import type { Reporting } from 'domain/entities/reporting'

export const reportingEventListener = (callback: (reporting: Reporting) => void) => (event: MessageEvent) => {
const reporting = JSON.parse(event.data) as Reporting
const reporting = undefine(JSON.parse(event.data)) as Reporting

// eslint-disable-next-line no-console
console.log(`SSE: received a reporting update.`)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ export const duplicateReporting = (reportingId: number) => async (dispatch, getS
id,
isArchived: false,
openBy: undefined,
reportingId: undefined,
reportingSources: reportingResponse.reportingSources.map(reportingSource => ({
...reportingSource,
id: undefined
})),
updatedAtUtc: undefined
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,20 +96,31 @@ export const getAdministrativeLayersStyle = (code: String) => {
})
})
case Layers.DEPARTMENTS.code:
return feature =>
new Style({
stroke: new Stroke({
color: darkPeriwinkle,
width: 2
return feature => {
const geometry = feature.getGeometry()
const center = geometry.getExtent()
const point = new Point(getCenter(center))

return [
new Style({
stroke: new Stroke({
color: darkPeriwinkle,
width: 2
})
}),
text: new Text({
fill: new Fill({ color: THEME.color.gunMetal }),
font: '16px Marianne',
overflow: true,
stroke: new Stroke({ color: getColorWithAlpha(THEME.color.white, 0.9), width: 2 }),
text: `${feature.get(Layers.DEPARTMENTS.zoneFieldKey) ? feature.get(Layers.DEPARTMENTS.zoneFieldKey) : ''}`
new Style({
geometry: point,
text: new Text({
fill: new Fill({ color: THEME.color.gunMetal }),
font: '16px Marianne',
overflow: true,
stroke: new Stroke({ color: getColorWithAlpha(THEME.color.white, 0.9), width: 2 }),
text: `${feature.get(Layers.DEPARTMENTS.zoneFieldKey) ?? ''}`
})
})
})
]
}

case Layers.SALTWATER_LIMIT_AREAS.code:
case Layers.TRANSVERSAL_SEA_LIMIT_AREAS.code:
return () =>
Expand Down
20 changes: 15 additions & 5 deletions frontend/src/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { browserTracingIntegration } from '@sentry/browser'
import { init } from '@sentry/react'
import { isCypress } from '@utils/isCypress'
import { measureScrollbarWidth } from '@utils/styleHelpers'
import { getOIDCConfig } from 'auth/getOIDCConfig'
import { isEmpty } from 'lodash'
Expand Down Expand Up @@ -39,11 +40,20 @@ const root = createRoot(container)

const { oidcConfig } = getOIDCConfig()

root.render(
<StrictMode>
{/* eslint-disable-next-line react/jsx-props-no-spreading */}
if (isCypress()) {
root.render(
// eslint-disable-next-line react/jsx-props-no-spreading
<AuthProvider {...oidcConfig}>
<App />
</AuthProvider>
</StrictMode>
)
)
} else {
root.render(
<StrictMode>
{/* eslint-disable-next-line react/jsx-props-no-spreading */}
<AuthProvider {...oidcConfig}>
<App />
</AuthProvider>
</StrictMode>
)
}

0 comments on commit 3a62019

Please sign in to comment.