def test_groupby_numbers(self): self.assertParse("SELECT * GROUP BY 1;", Select(qp.Wildcard(), group_by=qp.GroupBy([1], None))) self.assertParse( "SELECT * GROUP BY 2, 4, 5;", Select(qp.Wildcard(), group_by=qp.GroupBy([2, 4, 5], None)))
def test_groupby_many(self): self.assertParse( qSelect(qp.Wildcard(), group_by=qp.GroupBy( [qp.Column('a'), qp.Column('b'), qp.Column('c')], None)), "SELECT * GROUP BY a, b, c;")
def test_groupby_having(self): self.assertParse( qSelect(qp.Wildcard(), group_by=qp.GroupBy( [qp.Column('a')], qp.Equal(qp.Function('sum', [qp.Column('position')]), qp.Constant(0)))), "SELECT * GROUP BY a HAVING sum(position) = 0;")
def test_groupby_expr(self): self.assertParse( qSelect(qp.Wildcard(), group_by=qp.GroupBy([ qp.Greater(qp.Function('length', [qp.Column('a')]), qp.Constant(0)), qp.Column('b') ], None)), "SELECT * GROUP BY length(a) > 0, b;")
class TestTranslationBalance(CompileSelectBase): group_by = qp.GroupBy([ qp.Column('account'), qp.Function('account_sortkey', [qp.Column(name='account')]) ], None) order_by = qp.OrderBy( [qp.Function('account_sortkey', [qp.Column('account')])], None) def test_balance(self): balance = self.parse("BALANCES;") select = qc.transform_balances(balance) self.assertEqual( qp.Select([ qp.Target(qp.Column('account'), None), qp.Target(qp.Function('sum', [qp.Column('position')]), None), ], None, None, self.group_by, self.order_by, None, None, None, None), select) def test_balance_with_units(self): balance = self.parse("BALANCES AT cost;") select = qc.transform_balances(balance) self.assertEqual( qp.Select([ qp.Target(qp.Column('account'), None), qp.Target( qp.Function( 'sum', [qp.Function('cost', [qp.Column('position')])]), None) ], None, None, self.group_by, self.order_by, None, None, None, None), select) def test_balance_with_units_and_from(self): balance = self.parse("BALANCES AT cost FROM year = 2014;") select = qc.transform_balances(balance) self.assertEqual( qp.Select([ qp.Target(qp.Column('account'), None), qp.Target( qp.Function( 'sum', [qp.Function('cost', [qp.Column('position')])]), None), ], qp.From(qp.Equal(qp.Column('year'), qp.Constant(2014)), None, None, None), None, self.group_by, self.order_by, None, None, None, None), select)
def test_groupby_one(self): self.assertParse( "SELECT * GROUP BY a;", Select(qp.Wildcard(), group_by=qp.GroupBy([qp.Column('a')], None)))
class TestTranslationBalance(CompileSelectBase): group_by = qp.GroupBy([ qp.Column('account'), qp.Function('account_sortkey', [qp.Column(name='account')]) ], None) order_by = [ qp.OrderBy(qp.Function('account_sortkey', [qp.Column('account')]), qp.Ordering.ASC) ] def test_balance(self): balance = self.parse("BALANCES;") select = qc.transform_balances(balance) self.assertEqual( select, qp.Select([ qp.Target(qp.Column('account'), None), qp.Target(qp.Function('sum', [qp.Column('position')]), None), ], None, None, self.group_by, self.order_by, None, None, None)) def test_balance_with_units(self): balance = self.parse("BALANCES AT cost;") select = qc.transform_balances(balance) self.assertEqual( select, qp.Select([ qp.Target(qp.Column('account'), None), qp.Target( qp.Function( 'sum', [qp.Function('cost', [qp.Column('position')])]), None) ], None, None, self.group_by, self.order_by, None, None, None)) def test_balance_with_units_and_from(self): balance = self.parse("BALANCES AT cost FROM year = 2014;") select = qc.transform_balances(balance) self.assertEqual( select, qp.Select([ qp.Target(qp.Column('account'), None), qp.Target( qp.Function( 'sum', [qp.Function('cost', [qp.Column('position')])]), None), ], qp.From(qp.Equal(qp.Column('year'), qp.Constant(2014)), None, None, None), None, self.group_by, self.order_by, None, None, None)) def test_print(self): self.assertCompile(qc.EvalPrint(None), "PRINT;") def test_print_from(self): self.assertCompile( qc.EvalPrint( qc.EvalFrom( qc.Operator(qp.Equal, [ qe.YearEntryColumn(), qc.EvalConstant(2014), ]), None, None, None)), """PRINT FROM year = 2014;""")