def test_statement(self): ist = InsertStatement('table', None) ist.add_assignment(Column(db_field='a'), 'b') ist.add_assignment(Column(db_field='c'), 'd') self.assertEqual(six.text_type(ist), 'INSERT INTO table ("a", "c") VALUES (%(0)s, %(1)s)')
def test_context_update(self): us = UpdateStatement("table") us.add_assignment(Column(db_field="a"), "b") us.add_assignment(Column(db_field="c"), "d") us.add_where(Column(db_field="a"), EqualsOperator(), "x") us.update_context_id(3) self.assertEqual( six.text_type(us), 'UPDATE table SET "a" = %(4)s, "c" = %(5)s WHERE "a" = %(3)s') self.assertEqual(us.get_context(), {"4": "b", "5": "d", "3": "x"})
def test_context_update(self): ist = InsertStatement('table', None) ist.add_assignment(Column(db_field='a'), 'b') ist.add_assignment(Column(db_field='c'), 'd') ist.update_context_id(4) self.assertEqual(six.text_type(ist), 'INSERT INTO table ("a", "c") VALUES (%(4)s, %(5)s)') ctx = ist.get_context() self.assertEqual(ctx, {'4': 'b', '5': 'd'})
def test_context_update(self): us = UpdateStatement('table') us.add_assignment(Column(db_field='a'), 'b') us.add_assignment(Column(db_field='c'), 'd') us.add_where(Column(db_field='a'), EqualsOperator(), 'x') us.update_context_id(3) self.assertEqual( six.text_type(us), 'UPDATE table SET "a" = %(4)s, "c" = %(5)s WHERE "a" = %(3)s') self.assertEqual(us.get_context(), {'4': 'b', '5': 'd', '3': 'x'})
def test_rendering(self): us = UpdateStatement('table') us.add_assignment(Column(db_field='a'), 'b') us.add_assignment(Column(db_field='c'), 'd') us.add_where(Column(db_field='a'), EqualsOperator(), 'x') self.assertEqual( six.text_type(us), 'UPDATE table SET "a" = %(0)s, "c" = %(1)s WHERE "a" = %(2)s', six.text_type(us)) us.add_where(Column(db_field='a'), NotEqualsOperator(), 'y') self.assertEqual( six.text_type(us), 'UPDATE table SET "a" = %(0)s, "c" = %(1)s WHERE "a" = %(2)s AND "a" != %(3)s', six.text_type(us))
def test_rendering(self): us = UpdateStatement("table") us.add_assignment(Column(db_field="a"), "b") us.add_assignment(Column(db_field="c"), "d") us.add_where(Column(db_field="a"), EqualsOperator(), "x") self.assertEqual( six.text_type(us), 'UPDATE table SET "a" = %(0)s, "c" = %(1)s WHERE "a" = %(2)s', six.text_type(us), ) us.add_where(Column(db_field="a"), NotEqualsOperator(), "y") self.assertEqual( six.text_type(us), 'UPDATE table SET "a" = %(0)s, "c" = %(1)s WHERE "a" = %(2)s AND "a" != %(3)s', six.text_type(us), )
def test_context_update(self): ds = DeleteStatement('table', None) ds.add_field(MapDeleteClause('d', {1: 2}, {1: 2, 3: 4})) ds.add_where(Column(db_field='a'), EqualsOperator(), 'b') ds.update_context_id(7) self.assertEqual(six.text_type(ds), 'DELETE "d"[%(8)s] FROM table WHERE "a" = %(7)s') self.assertEqual(ds.get_context(), {'7': 'b', '8': 3})
def test_count(self): ss = SelectStatement('table', count=True, limit=10, order_by='d') ss.add_where(Column(db_field='a'), EqualsOperator(), 'b') self.assertEqual( six.text_type(ss), 'SELECT COUNT(*) FROM table WHERE "a" = %(0)s LIMIT 10', six.text_type(ss)) self.assertIn('LIMIT', six.text_type(ss)) self.assertNotIn('ORDER', six.text_type(ss))
def test_context_update(self): ds = DeleteStatement("table", None) ds.add_field(MapDeleteClause("d", {1: 2}, {1: 2, 3: 4})) ds.add_where(Column(db_field="a"), EqualsOperator(), "b") ds.update_context_id(7) self.assertEqual(six.text_type(ds), 'DELETE "d"[%(8)s] FROM table WHERE "a" = %(7)s') self.assertEqual(ds.get_context(), {"7": "b", "8": 3})
def test_count(self): ss = SelectStatement("table", count=True, limit=10, order_by="d") ss.add_where(Column(db_field="a"), EqualsOperator(), "b") self.assertEqual( six.text_type(ss), 'SELECT COUNT(*) FROM table WHERE "a" = %(0)s LIMIT 10', six.text_type(ss), ) self.assertIn("LIMIT", six.text_type(ss)) self.assertNotIn("ORDER", six.text_type(ss))
def test_distinct(self): ss = SelectStatement('table', distinct_fields=['field2']) ss.add_where(Column(db_field='field1'), EqualsOperator(), 'b') self.assertEqual(six.text_type(ss), 'SELECT DISTINCT "field2" FROM table WHERE "field1" = %(0)s', six.text_type(ss)) ss = SelectStatement('table', distinct_fields=['field1', 'field2']) self.assertEqual(six.text_type(ss), 'SELECT DISTINCT "field1", "field2" FROM table') ss = SelectStatement('table', distinct_fields=['field1'], count=True) self.assertEqual(six.text_type(ss), 'SELECT DISTINCT COUNT("field1") FROM table')
def test_context_id_update(self): """ tests that the right things happen the the context id """ ss = SelectStatement("table") ss.add_where(Column(db_field="a"), EqualsOperator(), "b") self.assertEqual(ss.get_context(), {"0": "b"}) self.assertEqual(str(ss), 'SELECT * FROM table WHERE "a" = %(0)s') ss.update_context_id(5) self.assertEqual(ss.get_context(), {"5": "b"}) self.assertEqual(str(ss), 'SELECT * FROM table WHERE "a" = %(5)s')
def test_comparisons(self): c0 = Column() c1 = Column() self.assertEqual(c1.position - c0.position, 1) # __ne__ self.assertNotEqual(c0, c1) self.assertNotEqual(c0, object()) # __eq__ self.assertEqual(c0, c0) self.assertFalse(c0 == object()) # __lt__ self.assertLess(c0, c1) try: c0 < object() # this raises for Python 3 except TypeError: pass # __le__ self.assertLessEqual(c0, c1) self.assertLessEqual(c0, c0) try: c0 <= object() # this raises for Python 3 except TypeError: pass # __gt__ self.assertGreater(c1, c0) try: c1 > object() # this raises for Python 3 except TypeError: pass # __ge__ self.assertGreaterEqual(c1, c0) self.assertGreaterEqual(c1, c1) try: c1 >= object() # this raises for Python 3 except TypeError: pass
def test_range_deletion_rendering(self): ds = DeleteStatement('table', None) ds.add_where(Column(db_field='a'), EqualsOperator(), 'b') ds.add_where(Column(db_field='created_at'), GreaterThanOrEqualOperator(), '0') ds.add_where(Column(db_field='created_at'), LessThanOrEqualOperator(), '10') self.assertEqual( six.text_type(ds), 'DELETE FROM table WHERE "a" = %(0)s AND "created_at" >= %(1)s AND "created_at" <= %(2)s', six.text_type(ds)) ds = DeleteStatement('table', None) ds.add_where(Column(db_field='a'), EqualsOperator(), 'b') ds.add_where(Column(db_field='created_at'), InOperator(), ['0', '10', '20']) self.assertEqual( six.text_type(ds), 'DELETE FROM table WHERE "a" = %(0)s AND "created_at" IN %(1)s', six.text_type(ds)) ds = DeleteStatement('table', None) ds.add_where(Column(db_field='a'), NotEqualsOperator(), 'b') self.assertEqual(six.text_type(ds), 'DELETE FROM table WHERE "a" != %(0)s', six.text_type(ds))
def test_range_deletion_rendering(self): ds = DeleteStatement("table", None) ds.add_where(Column(db_field="a"), EqualsOperator(), "b") ds.add_where(Column(db_field="created_at"), GreaterThanOrEqualOperator(), "0") ds.add_where(Column(db_field="created_at"), LessThanOrEqualOperator(), "10") self.assertEqual( six.text_type(ds), 'DELETE FROM table WHERE "a" = %(0)s AND "created_at" >= %(1)s AND "created_at" <= %(2)s', six.text_type(ds), ) ds = DeleteStatement("table", None) ds.add_where(Column(db_field="a"), EqualsOperator(), "b") ds.add_where(Column(db_field="created_at"), InOperator(), ["0", "10", "20"]) self.assertEqual( six.text_type(ds), 'DELETE FROM table WHERE "a" = %(0)s AND "created_at" IN %(1)s', six.text_type(ds), ) ds = DeleteStatement("table", None) ds.add_where(Column(db_field="a"), NotEqualsOperator(), "b") self.assertEqual(six.text_type(ds), 'DELETE FROM table WHERE "a" != %(0)s', six.text_type(ds))
def test_where_clause_rendering(self): ss = SelectStatement("table") ss.add_where(Column(db_field="a"), EqualsOperator(), "b") self.assertEqual( six.text_type(ss), 'SELECT * FROM table WHERE "a" = %(0)s', six.text_type(ss) )
def test_additional_rendering(self): ist = InsertStatement('table', ttl=60) ist.add_assignment(Column(db_field='a'), 'b') ist.add_assignment(Column(db_field='c'), 'd') self.assertIn('USING TTL 60', six.text_type(ist))
def test_context(self): ss = SelectStatement('table') ss.add_where(Column(db_field='a'), EqualsOperator(), 'b') self.assertEqual(ss.get_context(), {'0': 'b'})
def test_where_clause_rendering(self): ds = DeleteStatement("table", None) ds.add_where(Column(db_field="a"), EqualsOperator(), "b") self.assertEqual(six.text_type(ds), 'DELETE FROM table WHERE "a" = %(0)s', six.text_type(ds))
def test_context(self): ds = DeleteStatement('table', None) ds.add_where(Column(db_field='a'), EqualsOperator(), 'b') self.assertEqual(ds.get_context(), {'0': 'b'})
def test_context(self): us = UpdateStatement('table') us.add_assignment(Column(db_field='a'), 'b') us.add_assignment(Column(db_field='c'), 'd') us.add_where(Column(db_field='a'), EqualsOperator(), 'x') self.assertEqual(us.get_context(), {'0': 'b', '1': 'd', '2': 'x'})
def test_additional_rendering(self): us = UpdateStatement("table", ttl=60) us.add_assignment(Column(db_field="a"), "b") us.add_where(Column(db_field="a"), EqualsOperator(), "x") self.assertIn("USING TTL 60", six.text_type(us))
def test_context(self): ss = SelectStatement("table") ss.add_where(Column(db_field="a"), EqualsOperator(), "b") self.assertEqual(ss.get_context(), {"0": "b"})
def test_context(self): ds = DeleteStatement("table", None) ds.add_where(Column(db_field="a"), EqualsOperator(), "b") self.assertEqual(ds.get_context(), {"0": "b"})
def test_context(self): us = UpdateStatement("table") us.add_assignment(Column(db_field="a"), "b") us.add_assignment(Column(db_field="c"), "d") us.add_where(Column(db_field="a"), EqualsOperator(), "x") self.assertEqual(us.get_context(), {"0": "b", "1": "d", "2": "x"})
def test_hash(self): c0 = Column() self.assertEqual(id(c0), c0.__hash__())
def test_additional_rendering(self): us = UpdateStatement('table', ttl=60) us.add_assignment(Column(db_field='a'), 'b') us.add_where(Column(db_field='a'), EqualsOperator(), 'x') self.assertIn('USING TTL 60', six.text_type(us))