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
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
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
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
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 == {}
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}
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}
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}
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
def test_constructor(): with pytest.raises(NotImplementedError): query.ParameterNode()
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()
def test_constructor_bad_param(): prop = model.Property(name="california") with pytest.raises(TypeError): query.ParameterNode(prop, "<", None)
def test_constructor_bad_op(): prop = model.Property(name="guitar") param = query.Parameter("pick") with pytest.raises(TypeError): query.ParameterNode(prop, "less", param)
def test_constructor_bad_property(): param = query.Parameter(11) with pytest.raises(TypeError): query.ParameterNode(None, "!=", param)