Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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)
Beispiel #4
0
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}}
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #8
0
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, ...]])
Beispiel #10
0
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
Beispiel #11
0
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)