def test_expr_function__and_eq(self): self.assertParse( qSelect(qp.Wildcard(), where_clause=qp.And( qp.Equal(qp.Column('a'), qp.Constant(2)), qp.Not(qp.Equal(qp.Column('b'), qp.Constant(3))))), "SELECT * WHERE a = 2 AND b != 3;")
def test_expr_paren_multi2(self): self.assertParse( qSelect([qp.Target( qp.Not(qp.Equal( qp.Column('a'), qp.Not(qp.Equal( qp.Column('b'), qp.And(qp.Constant(42), qp.Constant(17)))))), None)]), "SELECT a != (b != (42 AND 17));")
def test_print_from(self): self.assertParse( qp.Print( qp.From( qp.Equal(qp.Column('date'), qp.Constant(datetime.date(2014, 1, 1))), None, True, None)), "PRINT FROM date = 2014-01-01 CLOSE;")
def test_balances_from_with_transformer_simple(self): self.assertParse( qp.Balances( 'units', None, qp.Equal(qp.Column('date'), qp.Constant(datetime.date(2014, 1, 1)))), "BALANCES AT units WHERE date = 2014-01-01;")
def test_expr_binaryop(self): self.assertEqual(qc.EvalEqual(qe.DateColumn(), qc.EvalConstant(datetime.date(2014, 1, 1))), qc.compile_expression( qp.Equal(qp.Column('date'), qp.Constant(datetime.date(2014, 1, 1))), qe.TargetsEnvironment()))
def test_journal_from(self): self.assertParse( qp.Journal( None, None, qp.From( qp.Equal(qp.Column('date'), qp.Constant(datetime.date(2014, 1, 1))), None, True, None)), "JOURNAL FROM date = 2014-01-01 CLOSE;")
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_balances_from(self): self.assertParse( qp.Balances( None, qp.From( qp.Equal(qp.Column('date'), qp.Constant(datetime.date(2014, 1, 1))), None, True, None)), "BALANCES FROM date = 2014-01-01 CLOSE;")
def test_balances_from_with_transformer(self): self.assertParse( qp.Balances('units', qp.From(qp.Equal(qp.Column('date'), qp.Constant(datetime.date(2014, 1, 1))), None, True, None), None), "BALANCES AT units FROM date = 2014-01-01 CLOSE;")
def setUp(self): super().setUp() self.targets = [qp.Target(qp.Column('a'), None), qp.Target(qp.Column('b'), None)] self.expr = qp.Equal(qp.Column('d'), qp.And( qp.Function('max', [qp.Column('e')]), qp.Constant(17)))
def test_from_select(self): subselect = qSelect( qp.Wildcard(), qp.From(qp.Equal(qp.Column('date'), qp.Constant(datetime.date(2014, 5, 2))), None, None, None)) expected = qSelect([qp.Target(qp.Column('a'), None), qp.Target(qp.Column('b'), None)], subselect, qp.Equal(qp.Column('c'), qp.Constant(5)), limit=100) self.assertParse(expected, """ SELECT a, b FROM ( SELECT * FROM date = 2014-05-02 ) WHERE c = 5 LIMIT 100; """)
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_journal_with_account_and_from(self): journal = self.parse("JOURNAL 'liabilities' FROM year = 2014;") select = qc.transform_journal(journal) self.assertEqual( qp.Select([ qp.Target(qp.Column('date'), None), qp.Target(qp.Column('flag'), None), qp.Target(qp.Function('maxwidth', [qp.Column('payee'), qp.Constant(48)]), None), qp.Target(qp.Function('maxwidth', [qp.Column('narration'), qp.Constant(80)]), None), qp.Target(qp.Column('account'), None), qp.Target(qp.Column('position'), None), qp.Target(qp.Column('balance'), None), ], qp.From(qp.Equal(qp.Column('year'), qp.Constant(2014)), None, None, None), qp.Match(qp.Column('account'), qp.Constant('liabilities')), None, None, None, None, None, None), select)
def test_expr_paren_multi(self): self.assertParse( qSelect([ qp.Target(qp.Not(qp.Equal(qp.Column('a'), qp.Constant(42))), None) ]), "SELECT not (a = 42);")
def test_expr_ne(self): self.assertParse( qSelect([ qp.Target(qp.Not(qp.Equal(qp.Column('a'), qp.Constant(42))), None) ]), "SELECT a != 42;")