예제 #1
0
    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)')
예제 #2
0
    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)')
예제 #3
0
 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]))
예제 #4
0
    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%')")
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
    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%')")
예제 #8
0
 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]))
예제 #9
0
 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)')
예제 #10
0
 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)')
예제 #11
0
 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)')