def test_parse_sqla_operators(self): r = parse_dictionary({'firstname': 'ilike("john%")'}, self.model) self.assertEqual(str(r[0]), 'lower(people.firstname) LIKE lower(:firstname_1)') r = parse_dictionary({'firstname': 'like("john%")'}, self.model) self.assertEqual(str(r[0]), 'people.firstname LIKE :firstname_1') r = parse_dictionary({'firstname': 'in_(["john","mark"])'}, self.model) self.assertEqual(str(r[0]), 'people.firstname IN (:firstname_1, :firstname_2)')
def test_parse_sqla_and_or_conjunctions(self): r = parse_dictionary( { 'or_': '[{"username": "******"}, {"and_": [' '{"username": "******"},{"ref": "smith"}]}]' }, self.model) self.assertEqual( str(r[0]), 'contacts.username = :username_1 OR ' 'contacts.username = :username_2 AND ' 'contacts.ref = :ref_1') self.assertEqual(type(r), list) self.assertEqual(type(r[0]), BooleanClauseList) self.assertEqual(r[0].operator, or_) self.assertEqual(len(r[0].clauses), 2) expected_expression = sqla_op.eq(self.model.username, 'john') self.assertTrue(expected_expression.compare(r[0].clauses[0])) second_op = r[0].clauses[1] self.assertEqual(type(second_op), BooleanClauseList) self.assertEqual(second_op.operator, and_) self.assertEqual(len(second_op.clauses), 2) expected_expression = sqla_op.eq(self.model.username, 'dylan') self.assertTrue(expected_expression.compare(second_op.clauses[0])) expected_expression = sqla_op.eq(self.model.ref, 'smith') self.assertTrue(expected_expression.compare(second_op.clauses[1]))
def test_parse_sqla_operators(self): r = parse_dictionary({'username': '******'}, self.model) self.assertEqual(str(r[0]), 'lower(contacts.username) LIKE lower(:username_1)') r = parse_dictionary({'username': '******'}, self.model) self.assertEqual(str(r[0]), 'contacts.username LIKE :username_1') r = parse_dictionary({'username': '******'john\',\'mark\')")'}, self.model) self.assertEqual(str(r[0]), 'contacts.username in :username_1') self.assertEqual(r[0].right.value, "('john','mark')") r = parse_dictionary( {'username': '******'john%\'|\'mark%\')")'}, self.model) self.assertEqual(str(r[0]), 'contacts.username similar to :username_1') self.assertEqual(r[0].right.value, "('john%'|'mark%')")
def test_parse_dictionary(self): r = parse_dictionary({'username': '******', 'prog': '!= 5'}, self.model) self.assertEqual(type(r), list) self.assertTrue(len(r) == 2) expected_expression = sqla_op.eq(self.model.username, 'john') any_true = any(expected_expression.compare(elem) for elem in r) self.assertTrue(any_true) expected_expression = sqla_op.ne(self.model.prog, 5) any_true = any(expected_expression.compare(elem) for elem in r) self.assertTrue(any_true)
def test_parse_dictionary(self): r = parse_dictionary({'firstname': 'john', 'prog': 5}, self.model) self.assertEqual(type(r), list) self.assertTrue(len(r) == 2) expected_expression = sqla_op.eq(self.model.firstname, 'john') any_true = any(expected_expression.compare(elem) for elem in r) self.assertTrue(any_true) expected_expression = sqla_op.eq(self.model.prog, 5) any_true = any(expected_expression.compare(elem) for elem in r) self.assertTrue(any_true)
def test_parse_sqla_operators(self): r = parse_dictionary({'firstname': 'ilike("john%")'}, self.model) self.assertEqual(str(r[0]), 'lower(people.firstname) LIKE lower(:firstname_1)') r = parse_dictionary({'firstname': 'like("john%")'}, self.model) self.assertEqual(str(r[0]), 'people.firstname LIKE :firstname_1') r = parse_dictionary({'firstname': 'in("(\'john\',\'mark\')")'}, self.model) self.assertEqual(str(r[0]), 'people.firstname in :firstname_1') self.assertEqual(r[0].right.value, "('john','mark')") r = parse_dictionary({'firstname': 'similar to("(\'john%\'|\'mark%\')")'}, self.model) self.assertEqual(str(r[0]), 'people.firstname similar to :firstname_1') self.assertEqual(r[0].right.value, "('john%'|'mark%')")
def test_parse_sqla_and_or_conjunctions(self): r = parse_dictionary( {'or_': '[{"firstname": "john"}, {"and_": [' '{"firstname": "dylan"},{"lastname": "smith"}]}]'}, self.model) self.assertEqual(str(r[0]), 'people.firstname = :firstname_1 OR ' 'people.firstname = :firstname_2 AND ' 'people.lastname = :lastname_1') self.assertEqual(type(r), list) self.assertEqual(type(r[0]), BooleanClauseList) self.assertEqual(r[0].operator, or_) self.assertEqual(len(r[0].clauses), 2) expected_expression = sqla_op.eq(self.model.firstname, 'john') self.assertTrue(expected_expression.compare(r[0].clauses[0])) second_op = r[0].clauses[1] self.assertEqual(type(second_op), BooleanClauseList) self.assertEqual(second_op.operator, and_) self.assertEqual(len(second_op.clauses), 2) expected_expression = sqla_op.eq(self.model.firstname, 'dylan') self.assertTrue(expected_expression.compare(second_op.clauses[0])) expected_expression = sqla_op.eq(self.model.lastname, 'smith') self.assertTrue(expected_expression.compare(second_op.clauses[1]))
def test_parse_adv_dictionary(self): r = parse_dictionary({'username': ['john', 'dylan']}, self.model) self.assertEqual(str(r[0]), 'contacts.username IN (:username_1, :username_2)')
def test_parse_adv_dictionary(self): r = parse_dictionary({'firstname': ['john', 'dylan']}, self.model) self.assertEqual(str(r[0]), 'people.firstname IN (:firstname_1, :firstname_2)')