Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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']
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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'])
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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