def test_GIVEN_valid_data_WHEN_create_new_THEN_new_set_created(self): self.login(access_level=constants.USER_ACCESS_LEVEL_ADMIN) valid_params = self.create_valid_post_values() response = self.app.post( url=url(controller='driving_data', action='edit'), params=valid_params, expect_errors=True ) assert_that(response.status_code, is_(302), "no redirect after successful post got %s" % response.normal_body) with session_scope() as session: driving_dataset_id = session\ .query(DrivingDataset)\ .filter(DrivingDataset.name == self.new_driving_dataset.name)\ .one().id driving_dataset = DatasetService().get_driving_dataset_by_id(driving_dataset_id) assert_that(driving_dataset.name, is_(self.new_driving_dataset.name), "name") assert_that(driving_dataset.description, is_(self.new_driving_dataset.description), "description") assert_that(driving_dataset.geographic_region, is_(self.new_driving_dataset.geographic_region), "geographic_region") assert_that(driving_dataset.spatial_resolution, is_(self.new_driving_dataset.spatial_resolution), "spatial_resolution") assert_that(driving_dataset.temporal_resolution, is_(self.new_driving_dataset.temporal_resolution), "temporal_resolution") assert_that(driving_dataset.boundary_lat_north, is_(self.new_driving_dataset.boundary_lat_north), "boundary_lat_north") assert_that(driving_dataset.boundary_lat_south, is_(self.new_driving_dataset.boundary_lat_south), "boundary_lat_south") assert_that(driving_dataset.boundary_lon_east, is_(self.new_driving_dataset.boundary_lon_east), "boundary_lon_east") assert_that(driving_dataset.boundary_lon_west, is_(self.new_driving_dataset.boundary_lon_west), "boundary_lon_west") assert_that(driving_dataset.view_order_index, is_(self.new_driving_dataset.view_order_index), "view_order_index") assert_that(driving_dataset.usage_order_index, is_(self.new_driving_dataset.usage_order_index), "usage_order_index") assert_that(driving_dataset.time_start, is_(self.new_driving_dataset.time_start), "start time") assert_that(driving_dataset.time_end, is_(self.new_driving_dataset.time_end), "end time") assert_that(driving_dataset.get_python_parameter_value(constants.JULES_PARAM_DRIVE_DATA_START), is_(self.new_driving_dataset.time_start), "start time") assert_that(driving_dataset.get_python_parameter_value(constants.JULES_PARAM_DRIVE_DATA_END), is_(self.new_driving_dataset.time_end), "end time") assert_that(driving_dataset.get_python_parameter_value(constants.JULES_PARAM_INPUT_GRID_NX), is_(valid_params["drive_nx"]), "nx") assert_that(driving_dataset.get_python_parameter_value(constants.JULES_PARAM_DRIVE_NVARS), is_(valid_params["drive_nvars"]), "drive_nvars") assert_that(driving_dataset.get_python_parameter_value(constants.JULES_PARAM_DRIVE_VAR), is_(self.drive_var), "vars") assert_that(len(driving_dataset.locations), is_(2), "number of locations")
def test_GIVEN_valid_data_with_extra_parameters_WHEN_update_THEN_parameters_are_updated(self): with session_scope(Session) as session: original_count = session\ .query(DrivingDataset).count() parameter_value = DrivingDatasetParameterValue(ModelRunService(), self.driving_dataset, 23, "old value") param_id_to_delete = 1 parameter_value = DrivingDatasetParameterValue(ModelRunService(), self.driving_dataset, param_id_to_delete, "to be deleted") self.login(access_level=constants.USER_ACCESS_LEVEL_ADMIN) valid_params = self.create_valid_post_values() valid_params["params_count"] = 1 parameter_id = 23 valid_params["param-0.id"] = str(parameter_id) valid_params["param-0.value"] = "expected extra parameter value" valid_params["mask_count"] = 1 valid_params["region-0.name"] = "a value" valid_params["region-0.category"] = "a value" valid_params["region-0.path"] = "a value" valid_params["region-0.id"] = "" expected_nvars = len(self.drive_var) + 1 last_index = len(self.drive_var) + 4 valid_params["drive_nvars"] = last_index + 1 valid_params["drive_var_-{}.vars".format(last_index)] = 'blah' valid_params["drive_var_-{}.names".format(last_index)] = 'blah' valid_params["drive_var_-{}.templates".format(last_index)] = 'blah' valid_params["drive_var_-{}.interps".format(last_index)] = 'blah' response = self.app.post( url=url(controller='driving_data', action='edit', id=str(self.driving_dataset.id)), params=valid_params, expect_errors=True ) assert_that(response.status_code, is_(302), "status code for page") with session_scope(Session) as session: final_count = session\ .query(DrivingDataset).count() assert_that(final_count, is_(original_count), "number of driving datasets (before and after update)") with session_scope(Session) as session: driving_dataset = DatasetService().get_driving_dataset_by_id(self.driving_dataset.id) regions = LandCoverService().get_land_cover_regions(self.driving_dataset.id) assert_that(driving_dataset.name, is_(self.new_driving_dataset.name), "name has changed") value = [parameter_value for parameter_value in driving_dataset.parameter_values if parameter_value.parameter_id == parameter_id] assert_that(len(value), is_(1), "number of parameter values") assert_that(value[0].value, is_(valid_params["param-0.value"]), "parameter value") assert_that(driving_dataset.get_python_parameter_value(constants.JULES_PARAM_DRIVE_NVARS), is_(expected_nvars), "nvars") for parameter_value in driving_dataset.parameter_values: if parameter_value.parameter_id == param_id_to_delete: self.fail("Parameter should have been deleted but wasn't") assert_that(len(regions), is_(1), "number of regions") assert_that(regions[0].name, is_(valid_params["region-0.name"]), "name of region") assert_that(regions[0].category.name, is_(valid_params["region-0.category"]), "category of region") assert_that(regions[0].mask_file, is_(valid_params["region-0.path"]), "path of region") assert_that(len(driving_dataset.locations), is_(expected_nvars), 'driving dataset locations')