@@ -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\n Building 1,," ,
164- # Duplicate building
165- "Name,Description,Site,IFC_ID\n Building 3,,Site 1,\n Building 3,,Site 1," ,
166189 # Unknown site
167190 "Name,Description,Site,IFC_ID\n Building 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