Update test_db_factory to verify the results were saved
This commit is contained in:
parent
f49e2f3afa
commit
88c712794c
|
@ -17,7 +17,6 @@ from unittest import TestCase
|
|||
import sqlalchemy.exc
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.exc import ProgrammingError
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
import hub.helpers.constants as cte
|
||||
from hub.exports.energy_building_exports_factory import EnergyBuildingsExportsFactory
|
||||
|
@ -223,57 +222,108 @@ TestDBFactory
|
|||
|
||||
# Create city objects
|
||||
city_objects_id = []
|
||||
expected_results = {}
|
||||
|
||||
for building in control.city.buildings:
|
||||
building_info = control.database.building_info(building.name, city_id)
|
||||
|
||||
if cte.MONTH not in building.cooling_demand:
|
||||
print(f'building {building.name} not calculated')
|
||||
continue
|
||||
|
||||
demands = ['cooling_demand', 'heating_demand', 'lighting_electrical_demand',
|
||||
'appliances_electrical_demand', 'domestic_hot_water_heat_demand',
|
||||
'heating_consumption', 'cooling_consumption',
|
||||
'domestic_hot_water_consumption', 'distribution_systems_electrical_consumption']
|
||||
monthly_cooling_peak_load = building.cooling_peak_load[cte.MONTH]
|
||||
yearly_cooling_peak_load = building.cooling_peak_load[cte.YEAR]
|
||||
monthly_heating_peak_load = building.heating_peak_load[cte.MONTH]
|
||||
yearly_heating_peak_load = building.heating_peak_load[cte.YEAR]
|
||||
monthly_lighting_peak_load = building.lighting_peak_load[cte.MONTH]
|
||||
yearly_lighting_peak_load = building.lighting_peak_load[cte.YEAR]
|
||||
monthly_appliances_peak_load = building.appliances_peak_load[cte.MONTH]
|
||||
yearly_appliances_peak_load = building.appliances_peak_load[cte.YEAR]
|
||||
monthly_cooling_demand = building.cooling_demand[cte.MONTH]
|
||||
yearly_cooling_demand = building.cooling_demand[cte.YEAR]
|
||||
monthly_heating_demand = building.heating_demand[cte.MONTH]
|
||||
yearly_heating_demand = building.heating_demand[cte.YEAR]
|
||||
monthly_lighting_electrical_demand = building.lighting_electrical_demand[cte.MONTH]
|
||||
yearly_lighting_electrical_demand = building.lighting_electrical_demand[cte.YEAR]
|
||||
monthly_appliances_electrical_demand = building.appliances_electrical_demand[cte.MONTH]
|
||||
yearly_appliances_electrical_demand = building.appliances_electrical_demand[cte.YEAR]
|
||||
monthly_domestic_hot_water_heat_demand = building.domestic_hot_water_heat_demand[cte.MONTH]
|
||||
yearly_domestic_hot_water_heat_demand = building.domestic_hot_water_heat_demand[cte.YEAR]
|
||||
monthly_heating_consumption = building.heating_consumption[cte.MONTH]
|
||||
yearly_heating_consumption = building.heating_consumption[cte.YEAR]
|
||||
monthly_cooling_consumption = building.cooling_consumption[cte.MONTH]
|
||||
yearly_cooling_consumption = building.cooling_consumption[cte.YEAR]
|
||||
monthly_domestic_hot_water_consumption = building.domestic_hot_water_consumption[cte.MONTH]
|
||||
yearly_domestic_hot_water_consumption = building._domestic_hot_water_consumption[cte.YEAR]
|
||||
monthly_distribution_systems_electrical_consumption = building.distribution_systems_electrical_consumption[
|
||||
cte.MONTH]
|
||||
yearly_distribution_systems_electrical_consumption = building.distribution_systems_electrical_consumption[
|
||||
cte.YEAR]
|
||||
monthly_on_site_electrical_production = [x * cte.WATTS_HOUR_TO_JULES
|
||||
for x in building.onsite_electrical_production[cte.MONTH]]
|
||||
yearly_on_site_electrical_production = [x * cte.WATTS_HOUR_TO_JULES
|
||||
for x in building.onsite_electrical_production[cte.YEAR]]
|
||||
|
||||
results = {cte.INSEL_MEB: {
|
||||
f'{period}_{demand}': getattr(building, demand)[cte.MONTH if 'monthly' in period else cte.YEAR]
|
||||
for demand in demands for period in ['monthly', 'yearly']
|
||||
building_expected_results = {cte.INSEL_MEB: {
|
||||
'monthly_cooling_peak_load': monthly_cooling_peak_load,
|
||||
'yearly_cooling_peak_load': yearly_cooling_peak_load,
|
||||
'monthly_heating_peak_load': monthly_heating_peak_load,
|
||||
'yearly_heating_peak_load': yearly_heating_peak_load,
|
||||
'monthly_lighting_peak_load': monthly_lighting_peak_load,
|
||||
'yearly_lighting_peak_load': yearly_lighting_peak_load,
|
||||
'monthly_appliances_peak_load': monthly_appliances_peak_load,
|
||||
'yearly_appliances_peak_load': yearly_appliances_peak_load,
|
||||
'monthly_cooling_demand': monthly_cooling_demand,
|
||||
'yearly_cooling_demand': yearly_cooling_demand,
|
||||
'monthly_heating_demand': monthly_heating_demand,
|
||||
'yearly_heating_demand': yearly_heating_demand,
|
||||
'monthly_lighting_electrical_demand': monthly_lighting_electrical_demand,
|
||||
'yearly_lighting_electrical_demand': yearly_lighting_electrical_demand,
|
||||
'monthly_appliances_electrical_demand': monthly_appliances_electrical_demand,
|
||||
'yearly_appliances_electrical_demand': yearly_appliances_electrical_demand,
|
||||
'monthly_domestic_hot_water_heat_demand': monthly_domestic_hot_water_heat_demand,
|
||||
'yearly_domestic_hot_water_heat_demand': yearly_domestic_hot_water_heat_demand,
|
||||
'monthly_heating_consumption': monthly_heating_consumption,
|
||||
'yearly_heating_consumption': yearly_heating_consumption,
|
||||
'monthly_cooling_consumption': monthly_cooling_consumption,
|
||||
'yearly_cooling_consumption': yearly_cooling_consumption,
|
||||
'monthly_domestic_hot_water_consumption': monthly_domestic_hot_water_consumption,
|
||||
'yearly_domestic_hot_water_consumption': yearly_domestic_hot_water_consumption,
|
||||
'monthly_distribution_systems_electrical_consumption': monthly_distribution_systems_electrical_consumption,
|
||||
'yearly_distribution_systems_electrical_consumption': yearly_distribution_systems_electrical_consumption,
|
||||
'monthly_on_site_electrical_production': monthly_on_site_electrical_production,
|
||||
'yearly_on_site_electrical_production': yearly_on_site_electrical_production
|
||||
}}
|
||||
|
||||
results[cte.INSEL_MEB].update({
|
||||
'monthly_on_site_electrical_production': [x * cte.WATTS_HOUR_TO_JULES for x in
|
||||
building.onsite_electrical_production[cte.MONTH]],
|
||||
'yearly_on_site_electrical_production': [x * cte.WATTS_HOUR_TO_JULES for x in
|
||||
building.onsite_electrical_production[cte.YEAR]]
|
||||
})
|
||||
expected_results[building.name] = building_expected_results[cte.INSEL_MEB]
|
||||
|
||||
db_building_id = building_info.id
|
||||
city_objects_id.append(db_building_id)
|
||||
control.database.add_simulation_results(
|
||||
cte.INSEL_MEB,
|
||||
results, city_object_id=db_building_id)
|
||||
building_expected_results,
|
||||
city_object_id=db_building_id)
|
||||
|
||||
# Verify 17 city objects have been created
|
||||
self.assertEqual(17, len(city_objects_id), 'wrong number of results')
|
||||
|
||||
# Verify results have been saved
|
||||
scenario_name = "current status"
|
||||
# TODO: How do I get city object ids?
|
||||
request_values = {
|
||||
"scenarios": [
|
||||
{
|
||||
"insel meb": ["01002777", "01002773", "01036804"]
|
||||
},
|
||||
{
|
||||
"skin retrofit": ["01002777", "01002773", "01036804"]
|
||||
scenario_name: list(expected_results.keys())
|
||||
},
|
||||
]
|
||||
}
|
||||
results = control.database.results(control.user_id, control.application_id, request_values)
|
||||
|
||||
print(results)
|
||||
for result in results[scenario_name]:
|
||||
self.assertEqual(expected_results[result['building']], result[cte.INSEL_MEB])
|
||||
|
||||
for _id in city_objects_id:
|
||||
control.database.delete_results_by_name('insel meb', city_object_id=_id)
|
||||
|
||||
control.database.delete_results_by_name(cte.INSEL_MEB, city_object_id=_id)
|
||||
control.database.delete_city(city_id)
|
||||
|
||||
@classmethod
|
||||
|
|
Loading…
Reference in New Issue
Block a user