def test_register_model(monkeypatch): container = core.AvroModelContainer() schema = SchemaFromJSONData(TEST_SCHEMA, container) monkeypatch.setattr("avro_models.core.create_data_model", lambda x, y, z: TEST_OUTPUT_CLASS) assert container.register_model(schema, WrapperClass) == TEST_OUTPUT_CLASS assert len(container._schema_map) == 1
def test_import_schema(schema_json, schema_file, expected): container = core.AvroModelContainer() with mock.patch("avro_models.core.open", return_value=StringIO(TEST_SCHEMA_FILE_CONTENT)): assert json.dumps( core.import_schema(container, schema_json=schema_json, schema_file=schema_file)) == expected
def test_avro_schema_decorator(monkeypatch): container = core.AvroModelContainer() schema = mock.MagicMock(spec=Schema) monkeypatch.setattr("builtins.open", lambda x, y: StringIO(TEST_SCHEMA_FILE_CONTENT)) monkeypatch.setattr("avro_models.core.SchemaFromJSONData", lambda x, y: schema) monkeypatch.setattr(container, "register_model", lambda x, y: TEST_OUTPUT_CLASS) assert core.avro_schema(container, schema_file=TEST_FILE_PATH)( models.AvroComplexModel).__name__ == TEST_CLASS_NAME
def test_avro_schema_decorator(mock_open, mock_container, mock_schema, mock_schema_from_json_data): mock_open.side_effect = [ StringIO(TEST_SCHEMA_FILE_CONTENT), StringIO(TEST_SCHEMA_FILE_CONTENT) ] mock_schema_from_json_data.return_value = mock_schema mock_container.return_value.register_model.return_value = TEST_OUTPUT_CLASS mock_container.return_value.GetSchema.side_effect = [ None, TEST_AVRO_SCHEMA, TEST_AVRO_SCHEMA, TEST_AVRO_SCHEMA ] container = core.AvroModelContainer() assert core.avro_schema(container, schema_file=TEST_FILE_PATH)( models.AvroComplexModel).__name__ == TEST_CLASS_NAME assert mock_schema_from_json_data.call_count, 1 core.avro_schema(container, schema_file=TEST_FILE_PATH)(models.AvroComplexModel) assert mock_schema_from_json_data.call_count, 1 core.avro_schema(container, full_name="test.Date")(models.AvroComplexModel) assert mock_schema_from_json_data.call_count, 1
def test_register_model(mock_model, mock_schema, mock_schema_from_json_data): mock_schema_from_json_data.return_value = mock_schema container = core.AvroModelContainer() schema = SchemaFromJSONData(TEST_SCHEMA, container) assert container.register_model(schema, WrapperClass) == TEST_OUTPUT_CLASS assert len(container._schema_map) == 1
def test_fixed_schema(): names = core.AvroModelContainer() schema = SchemaFromJSONData(TEST_FIXED_SCHEMA) data_cls = models.create_data_model(schema, WrapperClass, names) assert data_cls.get_size() == TEST_FIXED_SCHEMA['size']
def test_map_schema(): names = core.AvroModelContainer() schema = SchemaFromJSONData(TEST_MAP_SCHEMA) data_cls = models.create_data_model(schema, WrapperClass, names) assert data_cls.get_contained_class() == int
def test_enum_schema_model(): schema = SchemaFromJSONData(TEST_ENUM_SCHEMA) data_cls = models.create_data_model(schema, WrapperClass, core.AvroModelContainer()) assert set(data_cls.get_symbols()) == set(TEST_ENUM_SCHEMA['symbols'])
def test_record_schema_model(): schema = SchemaFromJSONData(TEST_RECORD_SCHEMA) record_cls = models.create_data_model(schema, WrapperClass, core.AvroModelContainer()) assert record_cls.get_fields() == schema.fields
def test_create_data_model_successful(schema_json, expected_type): schema = SchemaFromJSONData(schema_json) data_cls = models.create_data_model(schema, WrapperClass, core.AvroModelContainer()) assert issubclass(data_cls, expected_type) assert data_cls.get_schema() == schema
def test_find_avro_model(schema_json, has_schema, model): with mock.patch("avro_models.core.AvroModelContainer") as mock_container: mock_container.return_value.has_schema.return_value = has_schema mock_container.return_value.get_avro_model.return_value = model schema = SchemaFromJSONData(schema_json) assert models.find_avro_model(schema, core.AvroModelContainer()) == model