async def test_delete_await_across_transaction_success(self): obj = await Tournament.create(name="Test1") query = Tournament.filter(id=obj.id).delete() async with in_transaction(): await query self.assertEqual(await Tournament.all(), [])
async def test_update_await_across_transaction_success(self): obj = await Tournament.create(name="Test1") query = Tournament.filter(id=obj.id).update(name="Test2") async with in_transaction(): await query self.assertEqual( await Tournament.all().values("id", "name"), [{"id": obj.id, "name": "Test2"}] )
async def test_delete_await_across_transaction_fail(self): obj = await Tournament.create(name="Test1") query = Tournament.filter(id=obj.id).delete() try: async with in_transaction(): await query raise KeyError("moo") except KeyError: pass self.assertEqual( await Tournament.all().values("id", "name"), [{"id": obj.id, "name": "Test1"}] )
async def test_subquery_filter(self): t1 = await Tournament.create(name="1") ret = await Tournament.filter( pk=Subquery(Tournament.filter(pk=t1.pk).values("id"))).first() self.assertEqual(ret, t1)
async def test_subquery_select(self): t1 = await Tournament.create(name="1") ret = (await Tournament.filter(pk=t1.pk).annotate( ids=Subquery(Tournament.filter(pk=t1.pk).values("id")) ).values("ids", "id")) self.assertEqual(ret, [{"id": t1.pk, "ids": t1.pk}])