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))
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)
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)
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)
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), ]
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)
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"))