class DialectTestCase(TestCase): _fixtures = [sample.SampleFixture] def setUp(self): super().setUp() from aiorm.orm.dialect.postgresql import Dialect self._dialect = Dialect() def test_render_get_simple_pk(self): self._dialect.render_get(sample.User, 1876) self.assertEqual(self._dialect.query, """\ SELECT {0}."created_at", {0}."email", {0}."firstname", {0}."id", {0}."lang", \ {0}."lastname", {0}."login", {0}."password" FROM "user" AS {0} WHERE {0}."id" = %s """.format(sample.User.__meta__['alias'])) self.assertEqual(self._dialect.parameters, [1876]) def test_render_get_coumpound_pk(self): self._dialect.render_get(sample.UserGroup, user_id=18, group_id=76) self.assertEqual(self._dialect.query, """\ SELECT {0}."group_id", {0}."user_id" FROM "user_group" AS {0} WHERE {0}."group_id" = %s AND {0}."user_id" = %s """.format(sample.UserGroup.__meta__['alias'])) self.assertEqual(self._dialect.parameters, [76, 18]) def test_render_select(self): self._dialect.render_select(sample.Group) self.assertEqual(self._dialect.query, """\ SELECT {0}."created_at", {0}."id", {0}."name" FROM "group" AS {0} """.format(sample.Group.__meta__['alias'])) self.assertEqual(self._dialect.parameters, []) def test_render_insert(self): group = sample.Group(name='test') self._dialect.render_insert(group) self.assertEqual(self._dialect.query, """\ INSERT INTO "group"("created_at", "name") VALUES ((NOW() at time zone 'utc'), %s) RETURNING "created_at", "id", "name" """) self.assertEqual(self._dialect.parameters, ['test']) def test_render_update(self): user = sample.User(id=89, login='******', email='*****@*****.**', created_at='XXX now XXX') user.firstname = 'first' user.lastname = 'last' self._dialect.render_update(user) self.assertEqual(self._dialect.query, """\ UPDATE "user" SET "created_at" = %s, "email" = %s, "firstname" = %s, "lang" = %s, \ "lastname" = %s, "login" = %s, "password" = %s WHERE "id" = %s RETURNING "created_at", "email", "firstname", "id", "lang", "lastname", \ "login", "password" """) self.assertEqual(self._dialect.parameters, ['XXX now XXX', '*****@*****.**', 'first', None, 'last', 'john', None, 89]) def test_render_delete(self): user = sample.User(id=89, login='******', email='*****@*****.**') self._dialect.render_delete(user) self.assertEqual(self._dialect.query, """\ DELETE FROM "user" WHERE "id" = %s """) self.assertEqual(self._dialect.parameters, [89]) def test_render_join(self): self._dialect._from_model = sample.User user_group = sample.UserGroup(user_id=89, group_id=7) self._dialect.render_join(user_group) self.assertEqual(self._dialect.query, """\ INNER JOIN "user_group" AS {0} ON "{1}".id = "{0}".user_id """.format(sample.UserGroup.__meta__['alias'], sample.User.__meta__['alias'])) self.assertEqual(self._dialect.parameters, []) def test_render_left_join(self): self._dialect._from_model = sample.User user_group = sample.UserGroup(user_id=89, group_id=7) self._dialect.render_left_join(user_group) self.assertEqual(self._dialect.query, """\ LEFT JOIN "user_group" AS {0} ON "{1}".id = "{0}".user_id """.format(sample.UserGroup.__meta__['alias'], sample.User.__meta__['alias'])) self.assertEqual(self._dialect.parameters, []) def test_render_where(self): self._dialect.render_where(sample.Group.name == 'wheel', sample.User.login == 'alice') self.assertEqual(self._dialect.query, """\ WHERE {}."name" = %s AND {}."login" = %s """.format(sample.Group.__meta__['alias'], sample.User.__meta__['alias'])) self.assertEqual(self._dialect.parameters, ['wheel', 'alice']) def test_render_equal(self): equal = mock.Mock() equal.column = sample.Group.name equal.value = 'staff' self._dialect.render_equal(equal) self.assertEqual(self._dialect.query, '{}."name" = %s' ''.format(sample.Group.__meta__['alias'])) self.assertEqual(self._dialect.parameters, ['staff']) def test_render_greater_than(self): equal = mock.Mock() equal.column = sample.Group.name equal.value = 'staff' self._dialect.render_greater_than(equal) self.assertEqual(self._dialect.query, '{}."name" > %s' ''.format(sample.Group.__meta__['alias'])) self.assertEqual(self._dialect.parameters, ['staff']) def test_render_greater_than_or_equal(self): equal = mock.Mock() equal.column = sample.Group.name equal.value = 'staff' self._dialect.render_greater_than_or_equal(equal) self.assertEqual(self._dialect.query, '{}."name" >= %s' ''.format(sample.Group.__meta__['alias'])) self.assertEqual(self._dialect.parameters, ['staff']) def test_render_less_than(self): equal = mock.Mock() equal.column = sample.Group.name equal.value = 'staff' self._dialect.render_less_than(equal) self.assertEqual(self._dialect.query, '{}."name" < %s' ''.format(sample.Group.__meta__['alias'])) self.assertEqual(self._dialect.parameters, ['staff']) def test_render_less_than_or_equal(self): equal = mock.Mock() equal.column = sample.Group.name equal.value = 'staff' self._dialect.render_less_than_or_equal(equal) self.assertEqual(self._dialect.query, '{}."name" <= %s' ''.format(sample.Group.__meta__['alias'])) self.assertEqual(self._dialect.parameters, ['staff']) def test_render_begin_transaction(self): rendered = self._dialect.render_begin_transaction() self.assertEqual(rendered, 'begin') def test_render_rollback_transaction(self): rendered = self._dialect.render_rollback_transaction() self.assertEqual(rendered, 'rollback') def test_render_commit_transaction(self): rendered = self._dialect.render_commit_transaction() self.assertEqual(rendered, 'commit') def test_render_utcnow(self): rendered = self._dialect.render_utcnow(mock.Mock()) self.assertEqual(rendered, "(NOW() at time zone 'utc')") self.assertEqual(self._dialect.query, '') self.assertEqual(self._dialect.parameters, [])
def setUp(self): super().setUp() from aiorm.orm.dialect.postgresql import Dialect self._dialect = Dialect()