Skip to content

Commit 50f9257

Browse files
authored
Merge pull request #257 from BEMServer/core_0.20.0
Support/require bemserver-core 0.20.0
2 parents 5c1eba4 + d52539f commit 50f9257

File tree

3 files changed

+96
-11
lines changed

3 files changed

+96
-11
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ dependencies = [
3333
"flask_smorest>=0.43.0,<0.44",
3434
"apispec>=6.1.0,<7.0",
3535
"authlib>=1.3.0,<2.0",
36-
"bemserver-core>=0.18.1,<0.20",
36+
"bemserver-core>=0.20.0,<0.21",
3737
]
3838

3939
[project.urls]

requirements/install.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ async-timeout==4.0.3
2020
# via redis
2121
authlib==1.3.1
2222
# via bemserver-api (pyproject.toml)
23-
bemserver-core==0.18.1
23+
bemserver-core==0.20.0
2424
# via bemserver-api (pyproject.toml)
2525
billiard==4.2.0
2626
# via celery

tests/resources/test_input_output.py

Lines changed: 94 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def test_sites_csv_post(self, app, user, users, campaigns):
9696

9797
@pytest.mark.usefixtures("site_properties")
9898
@pytest.mark.usefixtures("building_properties")
99-
def test_sites_csv_post_sites_buildings(self, app, users, campaigns):
99+
def test_sites_csv_post_update(self, app, users, campaigns):
100100
campaign_1_id = campaigns[0]
101101

102102
creds = users["Chuck"]["creds"]
@@ -134,6 +134,31 @@ def test_sites_csv_post_sites_buildings(self, app, users, campaigns):
134134
assert ret.status_code == 200
135135
assert len(ret.json) == 2
136136

137+
sites_csv = "Name,Description,IFC_ID,Area\n" "Site 2,Greatest site 2,,3000\n"
138+
buildings_csv = (
139+
"Name,Description,Site,IFC_ID,Area\n"
140+
"Building 2,Greatest building 2,Site 2,,3000\n"
141+
)
142+
143+
with auth_context:
144+
ret = client.post(
145+
INPUT_OUTPUT_SITES_URL,
146+
query_string={
147+
"campaign_id": campaign_1_id,
148+
},
149+
data={
150+
"sites_csv": (io.BytesIO(sites_csv.encode()), "sites.csv"),
151+
"buildings_csv": (
152+
io.BytesIO(buildings_csv.encode()),
153+
"buildings.csv",
154+
),
155+
},
156+
)
157+
assert ret.status_code == 201
158+
ret = client.get(BUILDINGS_URL)
159+
assert ret.status_code == 200
160+
assert len(ret.json) == 2
161+
137162
def test_sites_csv_post_invalid_encoding(self, app, users, campaigns):
138163
campaign_1_id = campaigns[0]
139164

@@ -161,8 +186,6 @@ def test_sites_csv_post_invalid_encoding(self, app, users, campaigns):
161186
"Name,Description,Site",
162187
# Missing column in row
163188
"Name,Description,Site,IFC_ID\nBuilding 1,,",
164-
# Duplicate building
165-
"Name,Description,Site,IFC_ID\nBuilding 3,,Site 1,\nBuilding 3,,Site 1,",
166189
# Unknown site
167190
"Name,Description,Site,IFC_ID\nBuilding 1,,Dummy",
168191
),
@@ -273,6 +296,74 @@ def test_timeseries_csv_post(self, app, user, users, campaigns):
273296
assert ret.status_code == 200
274297
assert len(ret.json) == 2
275298

299+
@pytest.mark.usefixtures("sites")
300+
@pytest.mark.usefixtures("buildings")
301+
@pytest.mark.usefixtures("storeys")
302+
@pytest.mark.usefixtures("spaces")
303+
@pytest.mark.usefixtures("zones")
304+
@pytest.mark.usefixtures("campaign_scopes")
305+
def test_timeseries_csv_post_update(self, app, users, campaigns):
306+
campaign_1_id = campaigns[0]
307+
308+
creds = users["Chuck"]["creds"]
309+
auth_context = AuthHeader(creds)
310+
311+
client = app.test_client()
312+
313+
timeseries_csv = (
314+
"Name,Description,Unit,Campaign scope,Site,Building,"
315+
"Storey,Space,Zone,Min,Max\n"
316+
"Space_1_Temp,Temperature,°C,Campaign 1 - Scope 1,Site 1,Building 1,"
317+
"Storey 1,Space 1,Zone 1,-10,60\n"
318+
"Space_2_Temp,Temperature,°C,Campaign 1 - Scope 1,Site 1,Building 1,"
319+
"Storey 1,Space 1,Zone 1,-10,60\n"
320+
)
321+
322+
with auth_context:
323+
ret = client.post(
324+
INPUT_OUTPUT_TIMESERIES_URL,
325+
query_string={
326+
"campaign_id": campaign_1_id,
327+
},
328+
data={
329+
"timeseries_csv": (
330+
io.BytesIO(timeseries_csv.encode()),
331+
"timeseries.csv",
332+
),
333+
},
334+
)
335+
assert ret.status_code == 201
336+
ret = client.get(TIMESERIES_URL)
337+
assert ret.status_code == 200
338+
assert len(ret.json) == 2
339+
340+
timeseries_csv = (
341+
"Name,Description,Unit,Campaign scope,Site,Building,"
342+
"Storey,Space,Zone,Min,Max\n"
343+
"Space_1_Temp,Temperature 1,°C,Campaign 1 - Scope 1,Site 1,Building 1,"
344+
"Storey 1,Space 1,Zone 1,-10,60\n"
345+
"Space_2_Temp,Temperature 2,°C,Campaign 1 - Scope 1,Site 1,Building 1,"
346+
",,,-15,65\n"
347+
)
348+
349+
with auth_context:
350+
ret = client.post(
351+
INPUT_OUTPUT_TIMESERIES_URL,
352+
query_string={
353+
"campaign_id": campaign_1_id,
354+
},
355+
data={
356+
"timeseries_csv": (
357+
io.BytesIO(timeseries_csv.encode()),
358+
"timeseries.csv",
359+
),
360+
},
361+
)
362+
assert ret.status_code == 201
363+
ret = client.get(TIMESERIES_URL)
364+
assert ret.status_code == 200
365+
assert len(ret.json) == 2
366+
276367
@pytest.mark.usefixtures("campaign_scopes")
277368
def test_timeseries_csv_post_invalid_encoding(self, app, users, campaigns):
278369
campaign_1_id = campaigns[0]
@@ -305,12 +396,6 @@ def test_timeseries_csv_post_invalid_encoding(self, app, users, campaigns):
305396
"Name,Description,Unit,Campaign scope,\n"
306397
"Space_1_Temp,Temperature,°C,Campaign 1 - Scope 1,,,,,\n"
307398
),
308-
# Duplicate timeseries
309-
(
310-
"Name,Description,Unit,Campaign scope,Site,Building,Storey,Space,Zone\n"
311-
"Space_1_Temp,Temperature,°C,Campaign 1 - Scope 1,,,,,\n"
312-
"Space_1_Temp,Temperature,°C,Campaign 1 - Scope 1,,,,,\n"
313-
),
314399
# Unknown site
315400
(
316401
"Name,Description,Unit,Campaign scope,Site,Building,Storey,Space,Zone\n"

0 commit comments

Comments
 (0)