def test_serialization_missing_value_success(uuid_key): _connection(MyModel).put_item( uuid_key, attributes={ "value_with_missing": {"N": "9001"}, }, ) model = MyModel.get(uuid_key) assert model.value_with_missing == MyEnumWithMissing.missing_key
def test_serialization_unknown_value_success(uuid_key): _connection(MyModel).put_item( uuid_key, attributes={ "value_with_unknown": {"N": "9001"}, }, ) model = MyModel.get(uuid_key) assert model.value_with_unknown == MyEnum.unknown_key
def test_serialization_unknown_value_fail(uuid_key): _connection(MyModel).put_item( uuid_key, attributes={ "value": {"N": "9001"}, }, ) with pytest.raises(ValueError, match="9001 is not a valid MyEnum"): MyModel.get(uuid_key)
def test_default_serialization(value, expected_str, expected_value, uuid_key): model = MyModel() model.key = uuid_key model.default = value model.save() actual = MyModel.get(hash_key=uuid_key) assert actual.default == expected_value item = _connection(MyModel).get_item(uuid_key) assert item["Item"] == {"key": ANY, "default": {"S": expected_str}}
def test_serialization_null(uuid_key): model = MyModel() model.key = uuid_key model.value = None model.save() # verify underlying storage item = _connection(MyModel).get_item(uuid_key) assert "value" not in item["Item"] # verify deserialization model = MyModel.get(uuid_key) assert model.value is None
def test_serialization_non_null(uuid_key): model = MyModel() model.key = uuid_key model.value = 456 model.save() # verify underlying storage item = _connection(MyModel).get_item(uuid_key) assert item["Item"]["value"] == {"N": "456"} # verify deserialization model = MyModel.get(uuid_key) assert model.value == 456
def test_serialization(value, expected_attributes, uuid_key): model = MyModel() model.key = uuid_key model.value = value model.save() # verify underlying storage item = _connection(MyModel).get_item(uuid_key) assert item["Item"] == {"key": ANY, **expected_attributes} # verify deserialization model = MyModel.get(uuid_key) assert model.value == value
def test_no_force_tz_serialization(value, expected_str, expected_value, uuid_key): model = MyModel() model.key = uuid_key model.no_force_tz = value model.save() actual = MyModel.get(hash_key=uuid_key) item = _connection(MyModel).get_item(uuid_key) assert item["Item"] == {"key": ANY, "no_force_tz": {"S": expected_str}} assert actual.no_force_tz == expected_value
def test_serialization_untyped(expected_attributes, value, uuid_key): model = MyModel() model.key = uuid_key model.untyped = value model.save() # verify underlying storage item = _connection(MyModel).get_item(uuid_key) assert item["Item"] == {"key": ANY, **expected_attributes} # verify deserialization model = MyModel.get(uuid_key) assert model.untyped == value assert_type(MyModel.untyped, UnicodeDelimitedTupleAttribute[Tuple[Any, ...]])
def test_serialization_non_null(uuid_key): model = MyModel() model.key = uuid_key model.value = date(2015, 12, 31) model.save() # verify underlying storage item = _connection(MyModel).get_item(uuid_key) assert item["Item"] == {"key": ANY, "value": {"N": "20151231"}} # verify deserialization model = MyModel.get(uuid_key) assert model.value.year == 2015 assert model.value.month == 12 assert model.value.day == 31
def test_serialization_non_null(uuid_key): model = MyModel() model.key = uuid_key uuid_str = "19c4f251-5e36-4cc0-bfeb-983dd5d2bacd" uuid_value = UUID(uuid_str) model.value = uuid_value model.save() # verify underlying storage item = _connection(MyModel).get_item(uuid_key) assert item["Item"]["value"] == {"S": uuid_str} # verify deserialization model = MyModel.get(uuid_key) assert model.value == uuid_value
def test_serialization_non_null(uuid_key): model = MyModel() model.key = uuid_key model.value = model.value_ms = model.value_us = timedelta( seconds=456, microseconds=123456, ) model.save() # verify underlying storage item = _connection(MyModel).get_item(uuid_key) assert item["Item"]["value"] == {"N": "456"} assert item["Item"]["value_ms"] == {"N": "456123"} assert item["Item"]["value_us"] == {"N": "456123456"} # verify deserialization model = MyModel.get(uuid_key) assert model.value == timedelta(seconds=456) assert model.value_ms == timedelta(seconds=456, microseconds=123000) assert model.value_us == timedelta(seconds=456, microseconds=123456)