Пример #1
0
 def test_should_sniff_operator(self):
     scenarios = [
         {
             'expected': (
                 EQUAL_OPERATOR_STR,
                 1,
             ),
             'call_args': Operator.equal(1)
         },
         {
             'expected': (
                 BIGGER_OPERATOR_STR,
                 1,
             ),
             'call_args': Operator.bigger(1)
         },
         {
             'expected': (
                 BIGGER_OR_EQUAL_OPERATOR_STR,
                 1,
             ),
             'call_args': Operator.bigger_or_equal(1)
         },
         {
             'expected': (
                 SMALLER_OPERATOR_STR,
                 1,
             ),
             'call_args': Operator.smaller(1)
         },
         {
             'expected': (
                 SMALLER_OR_EQUAL_OPERATOR_STR,
                 1,
             ),
             'call_args': Operator.smaller_or_equal(1)
         },
         {
             'expected': (
                 DIFFERENT_OPERATOR_STR,
                 1,
             ),
             'call_args': Operator.different(1)
         },
         {
             'expected': (
                 IN_OPERATOR_STR,
                 [1, 2, 3],
             ),
             'call_args': Operator.in_operator(1, 2, 3)
         },
         {
             'expected': (
                 IN_OPERATOR_STR,
                 [1, 2, 3],
             ),
             'call_args': Operator.in_operator([1, 2, 3])
         },
         {
             'expected': (
                 LIKE_OPERATOR_STR,
                 '%WORKA%',
             ),
             'call_args': Operator.like('%WORKA%')
         },
         {
             'expected': (
                 BETWEEN_OPERATOR_STR,
                 (
                     '20170701',
                     '20170731',
                 ),
             ),
             'call_args': Operator.between('20170701', '20170731')
         },
     ]
     for scenario in scenarios:
         expected = scenario['expected']
         call_args = scenario['call_args']
         actual = Operator.sniff(call_args)
         self.assertEqual(expected, actual)
Пример #2
0
    def test_select_from_where(self):
        """Asserts Statement object Where"""
        scenarios = [{
            'expected': 'WHERE A == 1',
            'elements': ('A == 1', )
        }, {
            'expected': 'WHERE A == 1',
            'elements': (Ex({'A': 1}), )
        }, {
            'expected': 'WHERE A == 1',
            'elements': (Ex({'A': op.equal(1)}), )
        }, {
            'expected': 'WHERE A > 1',
            'elements': (Ex({'A': op.bigger(1)}), )
        }, {
            'expected': 'WHERE A >= 1',
            'elements': (Ex({'A': op.bigger_or_equal(1)}), )
        }, {
            'expected': 'WHERE A < 1',
            'elements': (Ex({'A': op.smaller(1)}), )
        }, {
            'expected': 'WHERE A <= 1',
            'elements': (Ex({'A': op.smaller_or_equal(1)}), )
        }, {
            'expected': 'WHERE A <> 1',
            'elements': (Ex({'A': op.different(1)}), )
        }, {
            'expected': 'WHERE DAY IN (20, 30, 40)',
            'elements': (Ex({'DAY': [20, 30, 40]}), )
        }, {
            'expected': 'WHERE DAY IN (20, 30, 40)',
            'elements': (Ex({'DAY': op.in_operator([20, 30, 40])}), )
        }, {
            'expected': 'WHERE DAY IN (\'20\', \'30\', \'40\')',
            'elements': (Ex({'DAY': ['20', '30', '40']}), )
        }, {
            'expected':
            'WHERE REFERENCE_DAY BETWEEN \'20170101\' AND \'20170731\'',
            'elements':
            ('REFERENCE_DAY BETWEEN \'20170101\' AND \'20170731\'', )
        }, {
            'expected':
            'WHERE REFERENCE_DAY BETWEEN \'20170701\' AND \'20170731\'',
            'elements':
            (Ex({'REFERENCE_DAY': op.between('20170701', '20170731')}), )
        }, {
            'expected': 'WHERE A == 1 OR B == 1',
            'elements': ('A == 1 OR B == 1', )
        }, {
            'expected': 'WHERE (A == 1 OR B == 1)',
            'elements': (ExOr({
                'A': 1,
                'B': 1
            }, order=['A', 'B']), )
        }, {
            'expected':
            'WHERE (A == 1 AND (B == 2 OR C == 3))',
            'elements': (Ex(Ex({'A': 1}),
                            ExOr({
                                'B': 2,
                                'C': 3
                            }, order=['B', 'C'])), )
        }, {
            'expected': 'WHERE A == 1 AND B == 2',
            'elements': (Ex({
                'A': 1
            }).add(Ex({'B': 2})), )
        }, {
            'expected': 'WHERE A == 1 AND B == 2',
            'elements': (Ex({'A': 1}) + Ex({'B': 2}), )
        }]
        for scenario in scenarios:
            elements = scenario['elements']
            expected = scenario['expected']

            statement = Where().add(*elements)
            actual = statement.parse()
            self.assertEqualQueries(expected, actual)
Пример #3
0
 def test_between_operator(self):
     expected = BETWEEN_OPERATOR_STR, ('20170701', '20170731')
     actual = Operator.between('20170701', '20170731')
     self.assertEqual(expected, actual)