def test_init(self): # Arrange schema = { "id": "http://schema1", "name": "TestSchema", "description": "Unit testing schema", "properties": { "prop1": { "type": "string", "description": "prop1 description", }, "prop2": { "type": "string", "description": "prop2 description", }, }, "patternProperties": { "prop?": { "type": "string", "description": "pattern prop", }, }, } cache = {schema["id"]: schema} # Act obj = SchemasLoader(cache=cache) schema_get = obj.get(schema["id"]) # Assert self.assertTrue(isinstance(obj, SchemasLoader)) self.assertEqual(schema_get, schema)
def test_nested_schemas(self): # Arrange schema = { "name": "TestSchema", "description": "Unit testing schema", "properties": { "prop1": {"type": "string", "description": "prop1 description"}, "prop2": {"type": [{"$ref": "schema2"}], "description": "prop2 description"}, }, } schema2 = { "name": "TestSchema2", "description": "Unit testing schema2", "properties": {"p1": {"type": "string", "description": "prop1 description"}}, } data = {"prop1": "value1", "prop2": {"p1": "value2"}} Schema = JSONSchemaModel.json_model_factory("Schema", schema) Schema2 = JSONSchemaModel.json_model_factory("Schema2", schema2, extends=Schema) loader_mock = SchemasLoader() loader_mock.get_class = MagicMock() loader_mock.get_class.return_value = Schema2 # Act schemaModel = Schema(data, schemas_loader=loader_mock) # Assert self.assertTrue(hasattr(schemaModel, "prop1")) self.assertTrue(hasattr(schemaModel, "prop2")) self.assertEqual(schemaModel.prop1, data["prop1"]) self.assertEqual(schemaModel.prop2, data["prop2"]) self.assertEqual(schemaModel["prop1"], data["prop1"]) self.assertEqual(schemaModel["prop2"], data["prop2"]) self.assertEqual(type(schemaModel.prop2), Schema2)
def test_nested_schemas(self): # Arrange schema = { "name": "TestSchema", "description": "Unit testing schema", "properties": { "prop1": { "type": "string", "description": "prop1 description", }, "prop2": { "type": [{ "$ref": "schema2" }], "description": "prop2 description", }, } } schema2 = { "name": "TestSchema2", "description": "Unit testing schema2", "properties": { "p1": { "type": "string", "description": "prop1 description", } } } data = { "prop1": "value1", "prop2": { "p1": "value2", } } Schema = JSONSchemaModel.json_model_factory("Schema", schema) Schema2 = JSONSchemaModel.json_model_factory("Schema2", schema2, extends=Schema) loader_mock = SchemasLoader() loader_mock.get_class = MagicMock() loader_mock.get_class.return_value = Schema2 # Act schemaModel = Schema(data, schemas_loader=loader_mock) # Assert self.assertTrue(hasattr(schemaModel, "prop1")) self.assertTrue(hasattr(schemaModel, "prop2")) self.assertEqual(schemaModel.prop1, data["prop1"]) self.assertEqual(schemaModel.prop2, data["prop2"]) self.assertEqual(schemaModel["prop1"], data["prop1"]) self.assertEqual(schemaModel["prop2"], data["prop2"]) self.assertEqual(type(schemaModel.prop2), Schema2)