def test_schema_validation_2(self): sm = SchemaManager.from_filepath( self.get_data_file("hk_data_schema.json")) val = sm.validate_file(self.get_data_file("hk_data_input.json")) self.assertTrue(val) # Test that it can be transformed into a dict dict_schema = sm.jsonschema_to_dict() self.assertEqual( dict_schema["JobsSchema"][0], { "name": "id", "type": "Integer", "required": True, "allow_none": False, "many": False, }, ) self.assertEqual( dict_schema["JobsSchema"][1], { "name": "successors", "type": "Integer", "many": True, "required": True }, ) marshmallow_object = sm.dict_to_flask() self.assertEqual( marshmallow_object().fields.keys(), {"resources", "needs", "jobs", "durations"}, ) with open(self.get_data_file("hk_data_input.json"), "r") as f: content = json.load(f) marshmallow_object().load(content)
def test_schema_names(self): sm = SchemaManager.from_filepath( self.get_data_file("name_problem_schema.json")) dict_schema = sm.jsonschema_to_dict() self.assertEqual(len(dict_schema["CoefficientsSchema"]), 2) self.assertEqual(len(dict_schema["Coefficients1Schema"]), 1) sm.jsonschema_to_flask()
def test_non_mandatory(self): sm = SchemaManager.from_filepath( self.get_data_file("instance-hackathon2.json")) schema_marsh = sm.jsonschema_to_flask() with open(self.get_data_file("hk_data_input.json"), "r") as f: content = json.load(f) err = schema_marsh().load(content) return
def test_validation_errors3(self): sm = SchemaManager.from_filepath( self.get_data_file("hk_data_schema.json")) bool = sm.validate_file(self.get_data_file("data_input_bad.json")) val = sm.get_file_errors(self.get_data_file("data_input_bad.json")) self.assertFalse(bool) self.assertEqual(len(val), 2) sm.jsonschema_to_flask()
def test_flask_schema_extra_info(self): with open(self.get_data_file("pulp_example_data.json"), "r") as f: content = json.load(f) sm = SchemaManager.from_filepath( self.get_project_data_file("pulp_json_schema.json")) marshmallow_object = sm.jsonschema_to_flask() content["new_param"] = 1 content["objective"]["another_something_new"] = 1 marshmallow_object().load(content)
def test_validation_errors(self): sm = SchemaManager.from_filepath( self.get_project_data_file("pulp_json_schema.json")) data = {"objective": [], "constraints": [], "variables": []} bool = sm.validate_data(data) val = sm.get_validation_errors(data) self.assertFalse(bool) # The two errors are: objective should be an object and parameters is missing. # we do not impose sos1 and sos2 to be there. self.assertEqual(len(val), 2) self.assertEqual(val[0].message, "[] is not of type 'object'") sm.jsonschema_to_flask()
def test_validation_errors2(self): sm = SchemaManager.from_filepath( self.get_project_data_file("pulp_json_schema.json")) data = { "objective": [], "constraints": ["notAConstraint"], "variables": ["notAVariable"], } val = sm.get_validation_errors(data) # errors are: objective should be an object, there's a wrongly formatted constraint and variable. # and parameters is missing self.assertEqual(len(val), 4) sm.jsonschema_to_flask()
def test_to_excel(self): sm = SchemaManager.from_filepath( self.get_data_file("graph_coloring_input.json")) template = sm.to_template() import pandas as pd dataframes = { k: pd.DataFrame.from_dict(v) for k, v in template.items() } self.assertEqual(dataframes["pairs"]["n1"][0], 1) self.assertEqual(dataframes["pairs"].shape, (1, 2)) self.assertEqual(dataframes["_README"].shape, (1, 2)) self.assertEqual(dataframes["_TYPES"].shape, (2, 3))
def test_to_excel2(self): sm = SchemaManager.from_filepath( self.get_data_file("hk_data_schema.json")) template = sm.to_template() import pandas as pd dataframes = { k: pd.DataFrame.from_dict(v) for k, v in template.items() } self.assertEqual(dataframes["durations"].job[0], 1) self.assertEqual(dataframes["durations"].shape, (1, 3)) self.assertEqual(dataframes["jobs"].shape, (1, 2)) self.assertEqual(dataframes["_README"].shape, (4, 2)) self.assertEqual(dataframes["_TYPES"].shape, (11, 3))
def test_schema_dict(self): sm = SchemaManager.from_filepath( self.get_project_data_file("../data/pulp_json_schema.json")) dict_schema = sm.jsonschema_to_dict() self.assertCountEqual(dict_schema["CoefficientSchema"], dict_example["CoefficientSchema"]) self.assertCountEqual(dict_schema["ObjectiveSchema"], dict_example["ObjectiveSchema"]) self.assertCountEqual(dict_schema["ConstraintsSchema"], dict_example["ConstraintsSchema"]) self.assertCountEqual(dict_schema["VariablesSchema"], dict_example["VariablesSchema"]) self.assertCountEqual(dict_schema["ParametersSchema"], dict_example["ParametersSchema"]) self.assertCountEqual(dict_schema["Sos1Schema"], dict_example["Sos1Schema"]) self.assertCountEqual(dict_schema["Sos2Schema"], dict_example["Sos2Schema"]) self.assertCountEqual(dict_schema[DATASCHEMA], dict_example[DATASCHEMA]) sm.jsonschema_to_flask()
def test_check_schema(self): sm = SchemaManager.from_filepath( self.get_project_data_file("vrp_solution_schema.json")) val = sm.validate_schema() self.assertTrue(val) sm.jsonschema_to_flask()
def test_schema_validation(self): sm = SchemaManager.from_filepath( self.get_project_data_file("pulp_json_schema.json")) val = sm.validate_file(self.get_data_file("pulp_example_data.json")) self.assertTrue(val) sm.jsonschema_to_flask()
def test_array_integer(self): sm = SchemaManager.from_filepath( self.get_data_file("graph_coloring_input.json")) sm.jsonschema_to_flask()