Ejemplo n.º 1
0
    def test___eq__():
        prop1 = model.Property(name="val")
        param1 = query.Parameter("abc")
        parameter_node1 = query.ParameterNode(prop1, "=", param1)
        prop2 = model.Property(name="ue")
        parameter_node2 = query.ParameterNode(prop2, "=", param1)
        parameter_node3 = query.ParameterNode(prop1, "<", param1)
        param2 = query.Parameter(900)
        parameter_node4 = query.ParameterNode(prop1, "=", param2)
        parameter_node5 = unittest.mock.sentinel.parameter_node

        assert parameter_node1 == parameter_node1
        assert not parameter_node1 == parameter_node2
        assert not parameter_node1 == parameter_node3
        assert not parameter_node1 == parameter_node4
        assert not parameter_node1 == parameter_node5
Ejemplo n.º 2
0
 def test_constructor():
     prop = model.Property(name="val")
     param = query.Parameter("abc")
     parameter_node = query.ParameterNode(prop, "=", param)
     assert parameter_node._prop is prop
     assert parameter_node._op == "="
     assert parameter_node._param is param
Ejemplo n.º 3
0
    def test___repr__():
        prop = model.Property(name="val")
        param = query.Parameter("abc")
        parameter_node = query.ParameterNode(prop, "=", param)

        expected = "ParameterNode({!r}, '=', Parameter('abc'))".format(prop)
        assert repr(parameter_node) == expected
Ejemplo n.º 4
0
    def test_pickling():
        prop = model.Property(name="val")
        param = query.Parameter("abc")
        parameter_node = query.ParameterNode(prop, "=", param)

        pickled = pickle.dumps(parameter_node)
        unpickled = pickle.loads(pickled)
        assert parameter_node == unpickled
Ejemplo n.º 5
0
    def test_resolve():
        prop = model.Property(name="val")
        param = query.Parameter("abc")
        parameter_node = query.ParameterNode(prop, "=", param)

        used = {}
        with pytest.raises(NotImplementedError):
            parameter_node.resolve({}, used)
        assert used == {}
Ejemplo n.º 6
0
    def test_resolve_in_empty_container():
        prop = model.Property(name="val")
        param = query.Parameter("replace")
        parameter_node = query.ParameterNode(prop, "in", param)

        value = ()
        bindings = {"replace": value}
        used = {}
        resolved_node = parameter_node.resolve(bindings, used)

        assert resolved_node == query.FalseNode()
        assert used == {"replace": True}
Ejemplo n.º 7
0
    def test_resolve_simple():
        prop = model.Property(name="val")
        param = query.Parameter("abc")
        parameter_node = query.ParameterNode(prop, "=", param)

        value = 67
        bindings = {"abc": value}
        used = {}
        resolved_node = parameter_node.resolve(bindings, used)

        assert resolved_node == query.FilterNode("val", "=", value)
        assert used == {"abc": True}
Ejemplo n.º 8
0
    def test_resolve_with_in():
        prop = model.Property(name="val")
        param = query.Parameter("replace")
        parameter_node = query.ParameterNode(prop, "in", param)

        value = (19, 20, 28)
        bindings = {"replace": value}
        used = {}
        resolved_node = parameter_node.resolve(bindings, used)

        assert resolved_node == query.DisjunctionNode(
            query.FilterNode("val", "=", 19),
            query.FilterNode("val", "=", 20),
            query.FilterNode("val", "=", 28),
        )
        assert used == {"replace": True}
Ejemplo n.º 9
0
 def query_filters(self, model_class, filters):
     """Get the filters in a format compatible with the Query constructor"""
     gql_filters = self.filters()
     for name_op in sorted(gql_filters):
         name, op = name_op
         values = gql_filters[name_op]
         op = op.lower()
         for (func, args) in values:
             prop = model_class._properties.get(name)
             val = self._args_to_val(func, args)
             if isinstance(val, query_module.ParameterizedThing):
                 node = query_module.ParameterNode(prop, op, val)
             else:
                 node = prop._comparison(op, val)
             filters.append(node)
     if filters:
         filters = query_module.ConjunctionNode(*filters)
     else:
         filters = None
     return filters
Ejemplo n.º 10
0
 def test_constructor():
     with pytest.raises(NotImplementedError):
         query.ParameterNode()
Ejemplo n.º 11
0
 def test__to_filter():
     prop = model.Property(name="val")
     param = query.Parameter("abc")
     parameter_node = query.ParameterNode(prop, "=", param)
     with pytest.raises(exceptions.BadArgumentError):
         parameter_node._to_filter()
Ejemplo n.º 12
0
 def test_constructor_bad_param():
     prop = model.Property(name="california")
     with pytest.raises(TypeError):
         query.ParameterNode(prop, "<", None)
Ejemplo n.º 13
0
 def test_constructor_bad_op():
     prop = model.Property(name="guitar")
     param = query.Parameter("pick")
     with pytest.raises(TypeError):
         query.ParameterNode(prop, "less", param)
Ejemplo n.º 14
0
 def test_constructor_bad_property():
     param = query.Parameter(11)
     with pytest.raises(TypeError):
         query.ParameterNode(None, "!=", param)