MCPcopy
hub / github.com/tortoise/tortoise-orm / test_relations

Function test_relations

tests/test_relations.py:37–88  ·  view source on GitHub ↗
(db)

Source from the content-addressed store, hash-verified

35
36@pytest.mark.asyncio
37async def test_relations(db):
38 tournament = Tournament(name="New Tournament")
39 await tournament.save()
40 await Event(name="Without participants", tournament_id=tournament.id).save()
41 event = Event(name="Test", tournament_id=tournament.id)
42 await event.save()
43 participants = []
44 for i in range(2):
45 team = Team(name=f"Team {(i + 1)}")
46 await team.save()
47 participants.append(team)
48 await event.participants.add(participants[0], participants[1])
49 await event.participants.add(participants[0], participants[1])
50
51 with pytest.raises(NoValuesFetched):
52 [team.id for team in event.participants] # pylint: disable=W0104
53
54 teamids = []
55 async for team in event.participants:
56 teamids.append(team.id)
57 assert set(teamids) == {participants[0].id, participants[1].id}
58 teamids = [team.id async for team in event.participants]
59 assert set(teamids) == {participants[0].id, participants[1].id}
60
61 assert {team.id for team in event.participants} == {participants[0].id, participants[1].id}
62
63 assert event.participants[0].id in {participants[0].id, participants[1].id}
64
65 selected_events = await Event.filter(participants=participants[0].id).prefetch_related(
66 "participants", "tournament"
67 )
68 assert len(selected_events) == 1
69 assert selected_events[0].tournament.id == tournament.id
70 assert len(selected_events[0].participants) == 2
71 await participants[0].fetch_related("events")
72 assert participants[0].events[0] == event
73
74 await Team.fetch_for_list(participants, "events")
75
76 await Team.filter(events__tournament__id=tournament.id)
77
78 await Event.filter(tournament=tournament)
79
80 await Tournament.filter(events__name__in=["Test", "Prod"]).distinct()
81
82 result = await Event.filter(pk=event.pk).values(
83 "event_id", "name", tournament="tournament__name"
84 )
85 assert result[0]["tournament"] == tournament.name
86
87 result = await Event.filter(pk=event.pk).values_list("event_id", "participants__name")
88 assert len(result) == 2
89
90
91@pytest.mark.asyncio

Callers

nothing calls this directly

Calls 12

TournamentClass · 0.90
EventClass · 0.90
TeamClass · 0.90
saveMethod · 0.80
addMethod · 0.80
fetch_relatedMethod · 0.80
distinctMethod · 0.80
prefetch_relatedMethod · 0.45
filterMethod · 0.45
fetch_for_listMethod · 0.45
valuesMethod · 0.45
values_listMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…