def minimum_initialization(**kwargs): """ A minimum initialization for unit tests :param kwargs: 'limit_to_classes' as an array of ConfigEntity classes to limit processing to those :return: """ from footprint.main.publishing.built_form_publishing import on_config_entity_post_save_built_form # Disable built_forms post_save_config_entity_initial.disconnect( on_config_entity_post_save_built_form, GlobalConfig, True, "built_form_publishing_on_config_entity_post_save") application_initialization(**kwargs) # Get access to the ConfigEntity fixtures for the configured client config_entities_fixture = resolve_fixture( "config_entity", "config_entities", ConfigEntitiesFixture, settings.CLIENT) key_lambda = lambda config_entity: config_entity['key'] region_key = map(key_lambda, config_entities_fixture.regions())[0] update_of_create_regions(region_keys=[region_key]) project_key = map(key_lambda, config_entities_fixture.projects())[0] project = update_or_create_projects(region_keys=[region_key], project_keys=[project_key])[0] project_fixture = resolve_fixture( "config_entity", "config_entities", ConfigEntitiesFixture, project.schema()) scenario_key = map(key_lambda, project_fixture.scenarios(project=project))[0] update_or_create_scenarios(region_keys=[region_key], project_keys=[project_key], scenario_keys=[scenario_key])
def minimum_initialization(**kwargs): """ A minimum initialization for unit tests :param kwargs: 'limit_to_classes' as an array of ConfigEntity classes to limit processing to those :return: """ from footprint.main.publishing.built_form_publishing import on_config_entity_post_save_built_form # Disable built_forms post_save_config_entity_initial.disconnect( on_config_entity_post_save_built_form, GlobalConfig, True, "built_form_publishing_on_config_entity_post_save") application_initialization(**kwargs) # Get access to the ConfigEntity fixtures for the configured client config_entities_fixture = resolve_fixture("config_entity", "config_entities", ConfigEntitiesFixture, settings.CLIENT) key_lambda = lambda config_entity: config_entity['key'] region_key = map(key_lambda, config_entities_fixture.regions())[0] update_of_create_regions(region_keys=[region_key]) project_key = map(key_lambda, config_entities_fixture.projects())[0] project = update_or_create_projects(region_keys=[region_key], project_keys=[project_key])[0] project_fixture = resolve_fixture("config_entity", "config_entities", ConfigEntitiesFixture, project.schema()) scenario_key = map(key_lambda, project_fixture.scenarios(project=project))[0] update_or_create_scenarios(region_keys=[region_key], project_keys=[project_key], scenario_keys=[scenario_key])
def handle(self, *args, **options): if not options['skip']: application_initialization() update_or_create_config_entities() user = update_or_create_users()['user'] scenarios = update_or_create_scenarios() for scenario in scenarios: layer_library = scenario.presentation_set.filter(key=Keys.LAYER_LIBRARY_DEFAULT)[0] presentation_medium = layer_library.presentationmedium_set.get(db_entity_key=Keys.DB_ABSTRACT_PRIMARY_PARCEL_SOURCE) layer = Layer.objects.get(id=presentation_medium.id) # Cast layer_selection_class = get_or_create_layer_selection_class_for_layer(layer, scenario) layer_selection = layer_selection_class.objects.get(user=user, layer=layer) layer_selection.save()
def test_scenario_core(self): """ Tests scenario creation :return: """ scenarios = update_or_create_scenarios() scenario = scenarios[0] scenario_built_form_feature_manager = scenario.db_entity_feature_class( 'scenario_built_form_layer').objects built_form_set = scenario.computed_built_forms()[0] built_form_ids = map(lambda built_form: built_form.id, built_form_set.built_form_definitions.all()) length = scenario_built_form_feature_manager.count() assert (length > 0) # Dirty up the features for scenario_built_form_feature_manager in scenario_built_form_feature_manager.all( ): scenario_built_form_feature_manager.built_form_id = random.choice( built_form_ids) scenario_built_form_feature_manager.save() core = ScenarioBuilder.objects.get(config_entity=scenario) timestamp = datetime.now() core.start(ids=map(lambda obj: obj.id, scenario_built_form_feature_manager.all())) sleep(3) # Make sure we have values for all the analysis table classes for db_entity_key in [ Keys.DB_ABSTRACT_GROSS_INCREMENT_FEATURE, DbEntityKey.INCREMENT, DbEntityKey.END_STATE ]: db_entity = scenario.db_entity_by_key(db_entity_key) FeatureClass = scenario.db_entity_feature_class(db_entity_key) # Assert that the correct number of rows exist assert (FeatureClass.objects.count() == length) # Assert that all rows were updated assert ( len(FeatureClass.objects.filter( updated__gte=timestamp)) == length, "For table {0}.{1}, not all rows were updated by the core, rather {2} out of {3}" .format( scenario.schema(), db_entity.table, len(FeatureClass.objects.filter(updated__gte=timestamp)), length))
def handle(self, *args, **options): if not options['skip']: application_initialization() update_or_create_config_entities() user = update_or_create_users()['user'] scenarios = update_or_create_scenarios() for scenario in scenarios: layer_library = scenario.presentation_set.filter( key=Keys.LAYER_LIBRARY_DEFAULT)[0] presentation_medium = layer_library.presentationmedium_set.get( db_entity_key=Keys.DB_ABSTRACT_PRIMARY_PARCEL_SOURCE) layer = Layer.objects.get(id=presentation_medium.id) # Cast layer_selection_class = get_or_create_layer_selection_class_for_layer( layer, scenario) layer_selection = layer_selection_class.objects.get(user=user, layer=layer) layer_selection.save()
def test_scenario_core(self): """ Tests scenario creation :return: """ scenarios = update_or_create_scenarios() scenario = scenarios[0] scenario_built_form_feature_manager = scenario.db_entity_feature_class('scenario_built_form_layer').objects built_form_set = scenario.computed_built_forms()[0] built_form_ids = map(lambda built_form: built_form.id, built_form_set.built_form_definitions.all()) length = scenario_built_form_feature_manager.count() assert (length > 0) # Dirty up the features for scenario_built_form_feature_manager in scenario_built_form_feature_manager.all(): scenario_built_form_feature_manager.built_form_id = random.choice(built_form_ids) scenario_built_form_feature_manager.save() core = ScenarioBuilder.objects.get(config_entity=scenario) timestamp = datetime.now() core.start(ids=map(lambda obj: obj.id, scenario_built_form_feature_manager.all())) sleep(3) # Make sure we have values for all the analysis table classes for db_entity_key in [Keys.DB_ABSTRACT_GROSS_INCREMENT_FEATURE, DbEntityKey.INCREMENT, DbEntityKey.END_STATE]: db_entity = scenario.db_entity_by_key(db_entity_key) FeatureClass = scenario.db_entity_feature_class(db_entity_key) # Assert that the correct number of rows exist assert (FeatureClass.objects.count() == length) # Assert that all rows were updated assert (len(FeatureClass.objects.filter(updated__gte=timestamp)) == length, "For table {0}.{1}, not all rows were updated by the core, rather {2} out of {3}".format( scenario.schema(), db_entity.table, len(FeatureClass.objects.filter(updated__gte=timestamp)), length))
def update_or_create_config_entities(**kwargs): # Creating the precooked scenarios will cause everything else to be created. update_or_create_scenarios(**kwargs) recalculate_project_bounds()
def test_import(self): call_command('footprint_init') assert (Scenario.objects.count(), update_or_create_scenarios())
def update_or_create_config_entities(**kwargs): # Creating the precooked scenarios will cause everything else to be created. update_or_create_scenarios(**kwargs) recalculate_project_bounds()
def test_import(self): call_command('footprint_init') assert(Scenario.objects.count(), update_or_create_scenarios())