예제 #1
0
def test_mapping_from_json():
    mapping = {"a": 1, "b": 2}
    json_data = {
        "__fcn__": "tests.test_marshall.MappingEntity",
        "mapping": mapping
    }
    marshall = Marshall()
    assert marshall.from_json(json.dumps(json_data)) == MappingEntity(
        mapping=immutables.Map(mapping))
예제 #2
0
def test_json_serialisable_class_from_json():
    value = 123
    json_data = {
        "__fcn__": "tests.test_marshall.JsonSerialisableEntity",
        "public": 123
    }
    marshall = Marshall()
    assert marshall.from_json(
        json.dumps(json_data)) == JsonSerialisableEntity(public=value)
예제 #3
0
def test_entity_with_custom_datetime_codec_deserialised_from_json():
    entity_name = "Entity One"
    iso_dt1 = "2020-01-02T03:04:05.123456"
    dt1 = datetime(2020, 1, 2, 3, 4, 5, 123456)
    json_string = json.dumps(
        _make_with_datetime_dict(name=entity_name, iso_dt=iso_dt1))
    marshall = Marshall()
    marshall.register_codec(fcn="eventz.marshall.DatetimeCodec",
                            codec=DatetimeCodec())
    assert marshall.from_json(json_string) == CustomTypeEntity(
        name=entity_name, timestamp=dt1)
예제 #4
0
def test_enum_from_json():
    json_data = {
        "__fcn__": "tests.test_marshall.EnumEntity",
        "option": {
            "__fcn__": "tests.test_marshall.Option",
            "_value_": 2,
            "_name_": "TWO",
        },
    }
    marshall = Marshall()
    assert marshall.from_json(
        json.dumps(json_data)) == EnumEntity(option=Option.TWO)
예제 #5
0
def test_sequence_of_messages_deserialised_from_json():
    marshall = Marshall()
    json_string = json.dumps([
        _make_simple_entity("Event One", numbers1),
        _make_simple_entity("Event Two", numbers2),
        _make_simple_entity("Event Three", numbers3),
    ])
    assert marshall.from_json(json_string) == [
        SimpleTypeEntity(name="Event One", numbers=numbers1),
        SimpleTypeEntity(name="Event Two", numbers=numbers2),
        SimpleTypeEntity(name="Event Three", numbers=numbers3),
    ]
예제 #6
0
def test_single_message_deserialisation_from_json():
    marshall = Marshall()
    json_string = json.dumps(_make_simple_entity("Event One", numbers1))
    assert marshall.from_json(json_string) == SimpleTypeEntity(
        name="Event One", numbers=numbers1)
예제 #7
0
def test_complex_object_deserialised_from_json():
    json_string = json.dumps(_make_complex_entity("Value One", "Value Two"))
    marshall = Marshall()
    assert marshall.from_json(json_string) == ComplexTypeEntity(
        one=ValueType(name="Value One"), two=ValueType(name="Value Two"))