add connectiong to db in tests

This commit is contained in:
collerek
2021-01-12 14:47:55 +01:00
parent 4209d37364
commit 8d619d5fc1

View File

@ -123,69 +123,83 @@ def test_proper_field_init():
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_self_relation(): async def test_self_relation():
sam = await Person.objects.create(name="Sam") async with db:
joe = await Person(name="Joe", supervisor=sam).save() async with db.transaction(force_rollback=True):
assert joe.supervisor.name == "Sam" sam = await Person.objects.create(name="Sam")
joe = await Person(name="Joe", supervisor=sam).save()
assert joe.supervisor.name == "Sam"
joe_check = await Person.objects.select_related("supervisor").get(name="Joe") joe_check = await Person.objects.select_related("supervisor").get(
assert joe_check.supervisor.name == "Sam" name="Joe"
)
assert joe_check.supervisor.name == "Sam"
sam_check = await Person.objects.select_related("employees").get(name="Sam") sam_check = await Person.objects.select_related("employees").get(name="Sam")
assert sam_check.name == "Sam" assert sam_check.name == "Sam"
assert sam_check.employees[0].name == "Joe" assert sam_check.employees[0].name == "Joe"
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_other_forwardref_relation(cleanup): async def test_other_forwardref_relation(cleanup):
checkers = await Game.objects.create(name="checkers") async with db:
uno = await Game(name="Uno").save() async with db.transaction(force_rollback=True):
checkers = await Game.objects.create(name="checkers")
uno = await Game(name="Uno").save()
await Child(name="Billy", favourite_game=uno, least_favourite_game=checkers).save() await Child(
await Child(name="Kate", favourite_game=checkers, least_favourite_game=uno).save() name="Billy", favourite_game=uno, least_favourite_game=checkers
).save()
await Child(
name="Kate", favourite_game=checkers, least_favourite_game=uno
).save()
billy_check = await Child.objects.select_related( billy_check = await Child.objects.select_related(
["favourite_game", "least_favourite_game"] ["favourite_game", "least_favourite_game"]
).get(name="Billy") ).get(name="Billy")
assert billy_check.favourite_game == uno assert billy_check.favourite_game == uno
assert billy_check.least_favourite_game == checkers assert billy_check.least_favourite_game == checkers
uno_check = await Game.objects.select_related(["liked_by", "not_liked_by"]).get( uno_check = await Game.objects.select_related(
name="Uno" ["liked_by", "not_liked_by"]
) ).get(name="Uno")
assert uno_check.liked_by[0].name == "Billy" assert uno_check.liked_by[0].name == "Billy"
assert uno_check.not_liked_by[0].name == "Kate" assert uno_check.not_liked_by[0].name == "Kate"
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_m2m_self_forwardref_relation(cleanup): async def test_m2m_self_forwardref_relation(cleanup):
checkers = await Game.objects.create(name="checkers") async with db:
uno = await Game(name="Uno").save() async with db.transaction(force_rollback=True):
jenga = await Game(name="Jenga").save() checkers = await Game.objects.create(name="checkers")
uno = await Game(name="Uno").save()
jenga = await Game(name="Jenga").save()
billy = await Child( billy = await Child(
name="Billy", favourite_game=uno, least_favourite_game=checkers name="Billy", favourite_game=uno, least_favourite_game=checkers
).save() ).save()
kate = await Child( kate = await Child(
name="Kate", favourite_game=checkers, least_favourite_game=uno name="Kate", favourite_game=checkers, least_favourite_game=uno
).save() ).save()
steve = await Child( steve = await Child(
name="Steve", favourite_game=jenga, least_favourite_game=uno name="Steve", favourite_game=jenga, least_favourite_game=uno
).save() ).save()
await billy.friends.add(kate) await billy.friends.add(kate)
await billy.friends.add(steve) await billy.friends.add(steve)
# await steve.friends.add(kate) # await steve.friends.add(kate)
# await steve.friends.add(billy) # await steve.friends.add(billy)
billy_check = await Child.objects.select_related( billy_check = await Child.objects.select_related(
["friends", "favourite_game", "least_favourite_game",] ["friends", "favourite_game", "least_favourite_game",]
).get(name="Billy") ).get(name="Billy")
assert len(billy_check.friends) == 2 assert len(billy_check.friends) == 2
assert billy_check.friends[0].name == "Kate" assert billy_check.friends[0].name == "Kate"
assert billy_check.friends[1].name == "Steve" assert billy_check.friends[1].name == "Steve"
assert billy_check.favourite_game.name == "Uno" assert billy_check.favourite_game.name == "Uno"
kate_check = await Child.objects.select_related(["also_friends",]).get(name="Kate") kate_check = await Child.objects.select_related(["also_friends",]).get(
assert len(kate_check.also_friends) == 1 name="Kate"
assert kate_check.also_friends[0].name == "Billy" )
assert len(kate_check.also_friends) == 1
assert kate_check.also_friends[0].name == "Billy"