Exemplo n.º 1
0
def test_advanced_fields():
    coin = Coin()
    data = protobuf_to_dict(coin)

    assert data == dict(
        tags={},
        names=[],
        categories=[],
    )

    coin.tags['USD'] = 'TUSD'
    coin.tags['HKD'] = 'THKD'
    coin.names.append('alpha')
    coin.names.append('beta')
    cat1 = Category(name='foo', type='cool')
    cat2 = Category(name='bar', type='lame')
    coin.categories.extend([cat1, cat2])

    data = protobuf_to_dict(coin)

    assert data == dict(tags=dict(USD='TUSD', HKD='THKD'),
                        names=['alpha', 'beta'],
                        categories=[
                            dict(name='foo', type='cool'),
                            dict(name='bar', type='lame'),
                        ])
Exemplo n.º 2
0
def test_omit_keys_if_null():
    # Test omit_keys_if_null option
    foo = Foo(
        id=123,
        name='val',
    )
    data = protobuf_to_dict(foo, omit_keys_if_null=True)
    assert data == dict(id=123, name='val')

    foo.content.value = 'stuff'
    data = protobuf_to_dict(foo, omit_keys_if_null=True)
    assert data == dict(id=123, name='val', content='stuff')
Exemplo n.º 3
0
def test_serialize_to_protobuf(mocker):
    build_serializer_cls_spy = mocker.spy(
        auto, '_build_serializer_cls_for_proto_cls')
    assert len(auto.serializer_registry) == 0
    created_at = utcnow()
    source = dict(id=1,
                  name='val',
                  content='stuff',
                  is_active=True,
                  count=12,
                  created_at=created_at)

    data = serialize_to_protobuf(source, Foo)

    assert len(auto.serializer_registry) == 1
    assert 'example.Foo' in auto.serializer_registry

    assert isinstance(data, Foo)
    assert data.id == 1
    assert data.name == 'val'
    assert data.content.value == 'stuff'
    assert data.is_active.value is True
    assert data.count.value == 12
    assert proto_timestamp_to_datetime(data.created_at) == created_at

    # Cool little serialization -> deserialization check
    assert protobuf_to_dict(data) == source

    data2 = serialize_to_protobuf(source, Foo)

    assert data2 == data

    assert len(auto.serializer_registry) == 1

    assert build_serializer_cls_spy.call_count == 1
Exemplo n.º 4
0
def test_nested_deserialization():
    child = Child(name='child', label=StringValue(value='small'))
    parent = Parent(name='parent', label=StringValue(value='big'), child=child)

    data = protobuf_to_dict(parent)
    assert data == dict(name='parent',
                        label='big',
                        child=dict(
                            name='child',
                            label='small',
                            category=None,
                        ))
Exemplo n.º 5
0
def test_unset_wrapped_fields():
    # Test that None is returned for Wrapped fields that are unset
    foo = Foo(
        id=123,
        name='val',
    )
    data = protobuf_to_dict(foo)
    assert data == dict(
        id=123,
        name='val',
        content=None,
        is_active=None,
        count=None,
        created_at=None,
    )
Exemplo n.º 6
0
def test_protobuf_to_dict_basic():
    foo = Foo(
        id=123,
        name='val',
    )
    foo.content.value = 'crypto'
    foo.is_active.value = True
    foo.count.value = 501

    dt = datetime(2019, 1, 1, 12, 0, tzinfo=UTC)
    write_datetime_to_message(foo.created_at, dt)

    data = protobuf_to_dict(foo)

    assert data == dict(
        id=123,
        name='val',
        content='crypto',
        is_active=True,
        count=501,
        created_at=dt,
    )
Exemplo n.º 7
0
def test_fields(foo):
    data = protobuf_to_dict(foo, fields=('id', 'content'))
    assert set(data.keys()) == {'id', 'content'}