Skip to content

Commit 70023e1

Browse files
committed
add hierarchy tests
1 parent badc00e commit 70023e1

File tree

2 files changed

+256
-2
lines changed

2 files changed

+256
-2
lines changed

backend/gn_module_zh/tests/fixtures.py

Lines changed: 219 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,112 @@
77

88
import uuid
99

10+
def printobj(obj):
11+
print("\n\n\nObj => ")
12+
for key, value in obj.__dict__.items():
13+
# if not key.startswith('_'): # Ignore les attributs privés
14+
print(f"{key}: {value}")
15+
print("\n\n\n")
16+
17+
def create_river_basin(
18+
id_rb,
19+
name,
20+
geom,
21+
id_climate_class,
22+
id_river_flow):
23+
from gn_module_zh.model.zh_schema import TRiverBasin
24+
25+
rb = TRiverBasin(
26+
id_rb = id_rb,
27+
name = name,
28+
geom = geom,
29+
id_climate_class = id_climate_class,
30+
id_river_flow = id_river_flow
31+
)
32+
return rb
33+
34+
def create_t_rules(
35+
rule_id,
36+
abbreviation,
37+
pane_id,
38+
cat_id,
39+
subcat_id):
40+
from gn_module_zh.model.zh_schema import TRules
41+
42+
rule = TRules(
43+
rule_id = rule_id,
44+
abbreviation = abbreviation,
45+
pane_id = pane_id,
46+
cat_id = cat_id,
47+
subcat_id = subcat_id
48+
)
49+
return rule
50+
51+
def create_item(
52+
val_id,
53+
cor_rule_id,
54+
attribute_id,
55+
note,
56+
note_type_id,
57+
):
58+
from gn_module_zh.model.zh_schema import TItems
59+
60+
item = TItems(
61+
val_id = val_id,
62+
cor_rule_id = cor_rule_id,
63+
attribute_id = attribute_id,
64+
note = note,
65+
note_type_id = note_type_id,
66+
)
67+
return item
68+
69+
70+
def create_cor_rb_rules(
71+
cor_rule_id,
72+
rb_id,
73+
rule_id):
74+
from gn_module_zh.model.zh_schema import CorRbRules
75+
76+
cor_rb_rule = CorRbRules(
77+
cor_rule_id = cor_rule_id,
78+
rb_id = rb_id,
79+
rule_id = rule_id
80+
)
81+
return cor_rb_rule
82+
83+
84+
@pytest.fixture(scope="function")
85+
def rb_data(users):
86+
coords = ((-6.811523, 42.228517), (9.799805, 42.228517), (9.799805, 51.454007), (-6.811523, 51.454007), (-6.811523, 42.228517))
87+
polygon = Polygon(coords)
88+
data = {}
89+
with db.session.begin_nested():
90+
for (
91+
id_rb,
92+
name,
93+
geom,
94+
id_climate_class,
95+
id_river_flow,
96+
) in [
97+
(
98+
1,
99+
"rb1",
100+
geoalchemy2.shape.from_shape(polygon),
101+
None,
102+
None,
103+
),
104+
]:
105+
kwargs = {}
106+
s = create_river_basin(
107+
id_rb,
108+
name,
109+
geom,
110+
id_climate_class,
111+
id_river_flow,
112+
)
113+
db.session.add(s)
114+
data[name] = s
115+
return data
10116

11117
def create_zh(
12118
main_name,
@@ -18,6 +124,7 @@ def create_zh(
18124
id_sdage,
19125
polygon,
20126
zh_area,
127+
main_id_rb,
21128
**kwargs,
22129
):
23130
# Import here because TZH class need to be imported after "app instanced"
@@ -35,18 +142,125 @@ def create_zh(
35142
id_sdage=id_sdage,
36143
geom=polygon,
37144
area=zh_area,
145+
main_id_rb=main_id_rb
38146
)
39147
return zh
40148

41149

42150
@pytest.fixture(scope="function")
43151
def zh_data(users):
44-
coords = ((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0), (0.0, 0.0))
152+
coords = ((-6.811523, 42.228517), (9.799805, 42.228517), (9.799805, 51.454007), (-6.811523, 51.454007), (-6.811523, 42.228517))
153+
polygon = Polygon(coords)
154+
rb = create_river_basin(1, "rb1", geoalchemy2.shape.from_shape(polygon), None, None)
155+
db.session.add(rb)
156+
157+
158+
cor_sdage_rule = create_cor_rb_rules(1, 1, 1)
159+
db.session.add(cor_sdage_rule)
160+
item = create_item(1, cor_sdage_rule.rule_id, cor_sdage_rule.rule_id, 75, 1)
161+
db.session.add(item)
162+
163+
# cor_hab_rule = create_cor_rb_rules(2, 1, 2)
164+
# db.session.add(cor_hab_rule)
165+
# item = create_item(2, cor_hab_rule.rule_id, cor_hab_rule.rule_id, 75, 1)
166+
# db.session.add(item)
167+
#
168+
# cor_flore_rule = create_cor_rb_rules(3, 1, 3)
169+
# db.session.add(cor_flore_rule)
170+
# item = create_item(3, cor_flore_rule.rule_id, cor_flore_rule.rule_id, 75, 1)
171+
# db.session.add(item)
172+
173+
# cor_vertebrates_rule = create_cor_rb_rules(4, 1, 4)
174+
# db.session.add(cor_vertebrates_rule)
175+
# item = create_item(4, cor_vertebrates_rule.rule_id, cor_vertebrates_rule.rule_id, 75, 1)
176+
# db.session.add(item)
177+
178+
# cor_invertebrates_rule = create_cor_rb_rules(5, 1, 5)
179+
# db.session.add(cor_invertebrates_rule)
180+
# item = create_item(5, cor_invertebrates_rule.rule_id, cor_invertebrates_rule.rule_id, 75, 1)
181+
# db.session.add(item)
182+
183+
# cor_eco_rule = create_cor_rb_rules(6, 1, 6)
184+
# db.session.add(cor_eco_rule)
185+
# item = create_item(6, cor_eco_rule.rule_id, cor_eco_rule.rule_id, 75, 1)
186+
# db.session.add(item)
187+
188+
# cor_protection_rule = create_cor_rb_rules(7, 1, 7)
189+
# db.session.add(cor_protection_rule)
190+
# item = create_item(7, cor_protection_rule.rule_id, cor_protection_rule.rule_id, 75, 1)
191+
# db.session.add(item)
192+
193+
# cor_epuration_rule = create_cor_rb_rules(8, 1, 8)
194+
# db.session.add(cor_epuration_rule)
195+
# item = create_item(8, cor_epuration_rule.rule_id, cor_epuration_rule.rule_id, 75, 1)
196+
# db.session.add(item)
197+
198+
# cor_support_rule = create_cor_rb_rules(9, 1, 9)
199+
# db.session.add(cor_support_rule)
200+
# item = create_item(9, cor_support_rule.rule_id, cor_support_rule.rule_id, 75, 1)
201+
# db.session.add(item)
202+
203+
# cor_pedagogy_rule = create_cor_rb_rules(10, 1, 10)
204+
# db.session.add(cor_pedagogy_rule)
205+
# item = create_item(10, cor_pedagogy_rule.rule_id, cor_pedagogy_rule.rule_id, 75, 1)
206+
# db.session.add(item)
207+
208+
# cor_production_rule = create_cor_rb_rules(11, 1, 11)
209+
# db.session.add(cor_production_rule)
210+
# item = create_item(11, cor_production_rule.rule_id, cor_production_rule.rule_id, 75, 1)
211+
# db.session.add(item)
212+
213+
# cor_status_rule = create_cor_rb_rules(12, 1, 12)
214+
# db.session.add(cor_status_rule)
215+
# item = create_item(12, cor_status_rule.rule_id, cor_status_rule.rule_id, 75, 1)
216+
# db.session.add(item)
217+
218+
# cor_management_rule = create_cor_rb_rules(13, 1, 13)
219+
# db.session.add(cor_management_rule)
220+
# item = create_item(13, cor_management_rule.rule_id, cor_management_rule.rule_id, 75, 1)
221+
# db.session.add(item)
222+
223+
# cor_hydro_rule = create_cor_rb_rules(14, 1, 14)
224+
# db.session.add(cor_hydro_rule)
225+
# item = create_item(14, cor_hydro_rule.rule_id, cor_hydro_rule.rule_id, 75, 1)
226+
# db.session.add(item)
227+
228+
# cor_bio_rule = create_cor_rb_rules(15, 1, 15)
229+
# db.session.add(cor_bio_rule)
230+
# item = create_item(15, cor_bio_rule.rule_id, cor_bio_rule.rule_id, 75, 1)
231+
# db.session.add(item)
232+
233+
# cor_thread_rule = create_cor_rb_rules(16, 1, 16)
234+
# db.session.add(cor_thread_rule)
235+
# item = create_item(16, cor_thread_rule.rule_id, cor_thread_rule.rule_id, 75, 1)
236+
# db.session.add(item)
237+
238+
239+
240+
coords = ((1.307287, 43.56357), (1.312222, 43.56357), (1.312222, 43.566182), (1.307287, 43.566182), (1.307287, 43.56357))
45241
polygon = Polygon(coords)
46242
date = datetime.datetime(2024, 10, 2, 11, 22, 33)
47-
id_sdage = 967
243+
id_sdage = cor_sdage_rule.rule_id
244+
# hab =
245+
# flore =
246+
# vertebrates =
247+
# invertebrates =
248+
# eco =
249+
# protection =
250+
# epuration =
251+
# support =
252+
# pedagogy =
253+
# production =
254+
# status =
255+
# management =
256+
# hydro =
257+
# bio =
258+
# thread =
259+
48260
user = users["self_user"]
49261
data = {}
262+
data["rb1"] = rb
263+
data["cor_rule"] = cor_sdage_rule
50264
with db.session.begin_nested():
51265
for (
52266
main_name,
@@ -58,6 +272,7 @@ def zh_data(users):
58272
id_sdage,
59273
geom,
60274
zh_area,
275+
main_id_rb
61276
) in [
62277
(
63278
"zh1",
@@ -69,6 +284,7 @@ def zh_data(users):
69284
id_sdage,
70285
geoalchemy2.shape.from_shape(polygon),
71286
polygon.area,
287+
1
72288
),
73289
]:
74290
kwargs = {}
@@ -82,6 +298,7 @@ def zh_data(users):
82298
id_sdage,
83299
geom,
84300
zh_area,
301+
main_id_rb,
85302
**kwargs,
86303
)
87304
db.session.add(s)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from pypnusershub.tests.utils import set_logged_user
2+
3+
from flask import url_for
4+
5+
from geonature.tests.fixtures import *
6+
from .fixtures import *
7+
8+
9+
def printobj(obj):
10+
print("\n\n\nObj => ")
11+
for key, value in obj.__dict__.items():
12+
# if not key.startswith('_'): # Ignore les attributs privés
13+
print(f"{key}: {value}")
14+
print("\n\n\n")
15+
16+
17+
@pytest.mark.usefixtures("client_class")
18+
class TestHierarchisation:
19+
def test_hierarchisation(self, users, zh_data):
20+
21+
from gn_module_zh.model.zh import ZH
22+
23+
set_logged_user(self.client, users["self_user"])
24+
zh = ZH(zh_data.get("zh1").id_zh)
25+
printobj(zh_data.get("zh1"))
26+
27+
db.session.execute("REFRESH MATERIALIZED VIEW pr_zh.rb_notes_summary;")
28+
29+
response = self.client.get(url_for("pr_zh.get_hierarchy", id_zh=zh_data.get("zh1").id_zh))
30+
data = response.get_json()
31+
print("data:", data)
32+
assert response.status_code == 200
33+
# assert len(data["items"]["features"]) > 0
34+
35+
# assert response.status_code == 200
36+
# data = response.get_json()
37+
# assert len(data["items"]["features"]) == 0

0 commit comments

Comments
 (0)