Esempio n. 1
0
def test_list(engine):
    typedef = List(UUID)
    loaded = [uuid.uuid4() for _ in range(5)]
    expected = [{"S": str(id)} for id in loaded]

    dumped = typedef.dynamo_dump(loaded, context={"engine": engine})
    assert dumped == expected
    assert typedef.dynamo_load(dumped, context={"engine": engine}) == loaded
Esempio n. 2
0
def test_nested_output_actions_pass(action_type):
    """Any actions returned from _dump are nestable"""
    class AlwaysAction(String):
        def _dump(self, value, **kwargs):
            return action_type.new_action(value)

    typedef = List(AlwaysAction)
    typedef._dump(["foo"], context=None)

    typedef = Map(foo=AlwaysAction)
    typedef._dump({"foo": "f"}, context=None)
Esempio n. 3
0
def test_nested_output_actions_fail(action_type):
    """When the _dump function returns a non-nestable action the type raises"""
    class AlwaysAction(String):
        def _dump(self, value, **kwargs):
            return action_type.new_action(value)

    typedef = List(AlwaysAction)
    with pytest.raises(ValueError):
        typedef._dump(["foo"], context=None)

    typedef = Map(foo=AlwaysAction)
    with pytest.raises(ValueError):
        typedef._dump({"foo": "f"}, context=None)
Esempio n. 4
0
    assert type._load(None, context=context) is None
    assert type._load({typedef.backing_type: None}, context=context) is None
    assert type.dynamo_load(None, context=context) is None

    assert type._dump(None, context=context) == actions.wrap(None)
    assert type.dynamo_dump(None, context=context) is None


@pytest.mark.parametrize("typedef, default", [
    (String(), ""),
    (Binary(), b""),
    (Set(String), set()),
    (Set(Integer), set()),
    (Set(Binary), set()),
    (List(DateTime), list()),
    (DocumentType, {
        "Rating": None,
        "Stock": None,
        "Description": {
            "Heading": "",
            "Body": "",
            "Specifications": ""
        },
        "Id": None,
        "Updated": None
    }),
    (DynamicList(), []),
    (DynamicMap(), {}),
])
def test_load_none_vector_types(engine, typedef, default):
Esempio n. 5
0
    condition = c.is_(3)
    assert condition.operation == "=="
    assert condition.column is c
    assert condition.values == [3]

    condition = c.is_not(3)
    assert condition.operation == "!="
    assert condition.column is c
    assert condition.values == [3]


@pytest.mark.parametrize(
    "op, typedefs, args",
    [("begins_with", [
        Integer(),
        List(String),
        Map(s=String),
        Boolean(),
        Set(Integer),
        Set(Binary),
        Set(String)
    ], ("one-arg", )),
     ("contains", [Integer(), Boolean(), Map(s=String)], ("one-arg", )),
     ("between", [
         Set(String),
         Set(Binary),
         Set(String),
         List(String),
         Map(s=String),
         Boolean()
     ], ("first-arg", "second-arg"))])