Skip to content

Commit ee89d4c

Browse files
authored
Merge pull request #402 from InseeFr/feat/QPVintersecections
feat: for geo/qpv/{code}/intersections
2 parents 2cc6f82 + 58c9831 commit ee89d4c

File tree

3 files changed

+125
-4
lines changed

3 files changed

+125
-4
lines changed

magma-diffusion-impl/src/main/java/fr/insee/rmes/magma/diffusion/api/GeoQuartierPrioritaireDeLaPolitiqueDeLaVilleEndpoints.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package fr.insee.rmes.magma.diffusion.api;
22

33
import fr.insee.rmes.magma.diffusion.api.requestprocessor.RequestProcessor;
4+
import fr.insee.rmes.magma.diffusion.model.Canton;
45
import fr.insee.rmes.magma.diffusion.model.QuartierPrioritaireDeLaPolitiqueDeLaVille2024;
6+
import fr.insee.rmes.magma.diffusion.model.TerritoireBaseRelation;
7+
import fr.insee.rmes.magma.diffusion.model.TypeEnum;
58
import fr.insee.rmes.magma.diffusion.queries.parameters.TerritoireRequestParametizer;
9+
import fr.insee.rmes.magma.diffusion.queries.parameters.TerritoiresLiesRequestParametizer;
610
import org.springframework.http.ResponseEntity;
711
import org.springframework.web.bind.annotation.RestController;
812

@@ -35,5 +39,14 @@ public ResponseEntity<List<QuartierPrioritaireDeLaPolitiqueDeLaVille2024>> getco
3539
.toResponseEntity();
3640
}
3741

42+
@Override
43+
public ResponseEntity<List<TerritoireBaseRelation>> getcogqpvintersect (String code, LocalDate date, TypeEnum type) {
44+
return requestProcessor.queryToFindIntersections()
45+
.with(new TerritoiresLiesRequestParametizer(code, date, type, QuartierPrioritaireDeLaPolitiqueDeLaVille2024.class))
46+
.executeQuery()
47+
.listResult(TerritoireBaseRelation.class)
48+
.toResponseEntity();
49+
}
50+
3851

3952
}

magma-diffusion-impl/src/test/java/fr/insee/rmes/magma/diffusion/api/testcontainers/queries/GeoQuartiersPrioritairesDeLaPolitiqueDeLaVilleTest.java

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import fr.insee.rmes.magma.diffusion.api.GeoQuartierPrioritaireDeLaPolitiqueDeLaVilleEndpoints;
44
import fr.insee.rmes.magma.diffusion.model.QuartierPrioritaireDeLaPolitiqueDeLaVille2024;
5+
import fr.insee.rmes.magma.diffusion.model.TerritoireBaseRelation;
6+
import fr.insee.rmes.magma.diffusion.model.TypeEnum;
57
import fr.insee.rmes.magma.diffusion.model.TypeEnumAscendantsCommune;
68
import org.junit.jupiter.api.Assertions;
79
import org.junit.jupiter.api.Tag;
@@ -36,7 +38,7 @@ class GeoQuartiersPrioritairesDeLaPolitiqueDeLaVilleTest extends TestcontainerTe
3638

3739
// geo/quartierPrioritaireDeLaPolitiqueDeLaVille2024/QN06255M?date=2025-09-04
3840
@Test
39-
void should_return_quartierPrioritaireDeLaVilleCode_QN06255M_when_codeQN06255M_date20250904() {
41+
void should_return_quartierPrioritaireDeLaVilleCode_when_codeQN06255M_date20250904() {
4042
var response = endpoints.getcogqpv("QN06255M", LocalDate.of(2025, 9, 4));
4143
var result = response.getBody();
4244
Assertions.assertNotNull(result);
@@ -73,7 +75,7 @@ void should_return_400_when_CommuneCodeAscendants_codeQJ08255M_date20250904() th
7375

7476
// geo/quartiersPrioritairesDeLaPolitiqueDeLaVille2024?date=2025-09-04//
7577
@Test
76-
void should_return_1609_QPV_when_quartierPrioritaireDeLaPolitiqueDeLaVille2024_date20250904() {
78+
void should_return_1609_QPV_when_quartiersPrioritairesDeLaPolitiqueDeLaVille2024_date20250904() {
7779
var response = endpoints.getcogqpvliste(LocalDate.of(2025,9,4));
7880
var result = response.getBody();
7981
Assertions.assertNotNull(result);
@@ -91,4 +93,51 @@ void should_return_1609_QPV_when_quartierPrioritaireDeLaPolitiqueDeLaVille2024_d
9193
);
9294
}
9395

96+
/// ////////////////////////////////////////////////////////////////////////////
97+
/// geo/quartiersPrioritairesDeLaPolitiqueDeLaVille2024/{code}/intersections ///
98+
/// ////////////////////////////////////////////////////////////////////////////
99+
100+
// geo/quartiersPrioritairesDeLaPolitiqueDeLaVille2024/QN08255M/intersections?date=2025-09-04//
101+
@Test
102+
void should_return_1_commune_when_quartierPrioritaireDeLaPolitiqueDeLaVille2024CodeIntersections_codeQN06255M_date20250904_typeNull() {
103+
var response = endpoints.getcogqpvintersect("QN06255M", LocalDate.of(2025,9,4), null);
104+
var result = response.getBody();
105+
Assertions.assertNotNull(result);
106+
var resultItem1= result.getFirst();
107+
108+
assertAll(
109+
() -> assertEquals(1, result.size()),
110+
() -> assertEquals("62516", resultItem1.getCode()),
111+
() -> assertEquals("http://id.insee.fr/geo/commune/2d740bbc-9c75-4fd5-b3f4-63fbab6f2713", resultItem1.getUri()),
112+
() -> assertEquals(TerritoireBaseRelation.TypeEnum.COMMUNE, resultItem1.getType()),
113+
() -> assertEquals(LocalDate.of(1943,1,1), resultItem1.getDateCreation()),
114+
() -> assertEquals("Lillers", resultItem1.getIntituleSansArticle()),
115+
() -> assertEquals(TerritoireBaseRelation.TypeArticleEnum._0, resultItem1.getTypeArticle()),
116+
() -> assertEquals("Lillers", resultItem1.getIntitule()),
117+
() -> assertEquals("inclus", resultItem1.getRelation())
118+
);
119+
}
120+
121+
// geo/quartiersPrioritairesDeLaPolitiqueDeLaVille2024/QN08255M/intersections?date=2025-09-04&type=commune//
122+
@Test
123+
void should_return_1_commune_when_quartierPrioritaireDeLaPolitiqueDeLaVille2024CodeIntersections_codeQN06255M_date20250904_typeCommune() {
124+
var response = endpoints.getcogqpvintersect("QN06255M", LocalDate.of(2025,9,4), TypeEnum.COMMUNE);
125+
var result = response.getBody();
126+
Assertions.assertNotNull(result);
127+
var resultItem1= result.getFirst();
128+
129+
assertAll(
130+
() -> assertEquals(1, result.size()),
131+
() -> assertEquals("62516", resultItem1.getCode()),
132+
() -> assertEquals("http://id.insee.fr/geo/commune/2d740bbc-9c75-4fd5-b3f4-63fbab6f2713", resultItem1.getUri()),
133+
() -> assertEquals(TerritoireBaseRelation.TypeEnum.COMMUNE, resultItem1.getType()),
134+
() -> assertEquals(LocalDate.of(1943,1,1), resultItem1.getDateCreation()),
135+
() -> assertEquals("Lillers", resultItem1.getIntituleSansArticle()),
136+
() -> assertEquals(TerritoireBaseRelation.TypeArticleEnum._0, resultItem1.getTypeArticle()),
137+
() -> assertEquals("Lillers", resultItem1.getIntitule()),
138+
() -> assertEquals("inclus", resultItem1.getRelation())
139+
);
140+
}
141+
142+
94143
}

magma-oas/src/main/resources/openapi-diffusion.yaml

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1770,7 +1770,7 @@ paths:
17701770
operationId: 'getcogqpv'
17711771
parameters:
17721772
- $ref: '#/components/parameters/codeQPVInPath'
1773-
- $ref: '#/components/parameters/dateQPVActive'
1773+
- $ref: '#/components/parameters/dateQPVActif'
17741774
responses:
17751775
'200':
17761776
$ref: '#/components/responses/QuartierPrioritaireDeLaPolitiqueDeLaVille200'
@@ -1803,6 +1803,28 @@ paths:
18031803
'500':
18041804
$ref: '#/components/responses/ServerError'
18051805

1806+
/geo/quartierPrioritaireDeLaPolitiqueDeLaVille2024/{code}/intersections:
1807+
get:
1808+
tags:
1809+
- geoQuartierPrioritaireDeLaPolitiqueDeLaVille
1810+
summary: 'Informations concernant les territoires directement liés au quartier prioritaire de la politique de la ville'
1811+
operationId: 'getcogqpvintersect'
1812+
parameters:
1813+
- $ref: '#/components/parameters/codeQPVInPath'
1814+
- $ref: '#/components/parameters/dateQPVActif'
1815+
- $ref: '#/components/parameters/typeTerritoireLieAQuartierPrioritaireDeLaPolitiqueDeLaVille'
1816+
responses:
1817+
'200':
1818+
$ref: '#/components/responses/QuartierPrioritaireDeLaPolitiqueDeLaVilleListeTerritoiresLies200'
1819+
'400':
1820+
$ref: '#/components/responses/IncorrectRequest'
1821+
'404':
1822+
$ref: '#/components/responses/NotFound'
1823+
'406':
1824+
$ref: '#/components/responses/NotAcceptable'
1825+
'500':
1826+
$ref: '#/components/responses/ServerError'
1827+
18061828
/geo/region/{code}:
18071829
get:
18081830
tags:
@@ -2854,7 +2876,7 @@ components:
28542876
schema:
28552877
$ref: '#/components/schemas/CodeReg'
28562878

2857-
dateQPVActive:
2879+
dateQPVActif:
28582880
in: query
28592881
description: |-
28602882
Filtre pour renvoyer le quartier prioritaire de la politique de la ville actif à la date donnée. Par défaut, c’est la date courante (format : 'AAAA-MM-JJ')
@@ -2872,6 +2894,13 @@ components:
28722894
type: 'string'
28732895
format: date
28742896

2897+
typeTerritoireLieAQuartierPrioritaireDeLaPolitiqueDeLaVille:
2898+
name: 'type'
2899+
in: query
2900+
description: 'Filtre sur le type de territoire renvoyé'
2901+
schema:
2902+
$ref: '#/components/schemas/TypeEnum'
2903+
28752904
dateRegionActive:
28762905
in: query
28772906
description: |-
@@ -4524,6 +4553,18 @@ components:
45244553
typeArticle: 'X'
45254554
intitule: 'Grande Reyssouze Terre Des Fleurs'
45264555

4556+
QuartierPrioritaireDeLaPolitiqueDeLaVilleListeTerritoiresLies200ListeTerritoiresLies:
4557+
value:
4558+
- code: '62516'
4559+
uri: 'http://id.insee.fr/geo/commune/2d740bbc-9c75-4fd5-b3f4-63fbab6f2713'
4560+
type: 'Commune'
4561+
dateCreation: '1943-01-01'
4562+
intituleSansArticle: 'Lillers'
4563+
typeArticle: '0'
4564+
intitule: 'Lillers'
4565+
relation: 'inclus'
4566+
4567+
45274568
Region:
45284569
value:
45294570
code: '06'
@@ -5986,6 +6027,24 @@ components:
59866027
défaut:
59876028
$ref: '#/components/examples/ListeQuartiersPrioritairesDeLaPolitiqueDeLaVille'
59886029

6030+
QuartierPrioritaireDeLaPolitiqueDeLaVilleListeTerritoiresLies200:
6031+
description: 'Opération réussie pour les territoires liés au quartier prioritaire de la politique de la ville'
6032+
content:
6033+
application/json:
6034+
schema:
6035+
type: array
6036+
items:
6037+
$ref: '#/components/schemas/TerritoireBase_Relation'
6038+
examples:
6039+
défaut:
6040+
$ref: '#/components/examples/QuartierPrioritaireDeLaPolitiqueDeLaVilleListeTerritoiresLies200ListeTerritoiresLies'
6041+
application/xml:
6042+
schema:
6043+
$ref: '#/components/schemas/TerritoireBase_Relation'
6044+
examples:
6045+
défaut:
6046+
$ref: '#/components/examples/QuartierPrioritaireDeLaPolitiqueDeLaVilleListeTerritoiresLies200ListeTerritoiresLies'
6047+
59896048
Region200:
59906049
description: 'Opération réussie pour la région'
59916050
content:

0 commit comments

Comments
 (0)