add querysetproxy methods and tests

This commit is contained in:
collerek
2021-06-08 14:54:16 +02:00
parent 9b27ef187d
commit 89c05ecf54
2 changed files with 137 additions and 0 deletions

View File

@ -355,3 +355,87 @@ async def test_queryset_values_multiple_select_related():
"posts__name": "Check this out, ormar now for free",
},
]
@pytest.mark.asyncio
async def test_querysetproxy_values():
async with database:
role = (
await Role.objects.select_related("users__categories")
.filter(name="admin")
.get()
)
user = await role.users.values()
assert user == [
{
"id": 1,
"name": "Anonymous",
"roles__id": 1,
"roles__name": "admin",
"roleuser__id": 1,
"roleuser__role": 1,
"roleuser__user": 1,
}
]
user = (
await role.users.filter(name="Anonymous")
.select_related("categories")
.fields({"name": ..., "categories": {"name"}})
.values(exclude_through=True)
)
assert user == [
{
"name": "Anonymous",
"roles__id": 1,
"roles__name": "admin",
"categories__name": "News",
}
]
user = (
await role.users.filter(name="Anonymous")
.select_related("categories")
.fields({"name": ..., "categories": {"name"}})
.exclude_fields("roles")
.values(exclude_through=True)
)
assert user == [{"name": "Anonymous", "categories__name": "News"}]
@pytest.mark.asyncio
async def test_querysetproxy_values_list():
async with database:
role = (
await Role.objects.select_related("users__categories")
.filter(name="admin")
.get()
)
user = await role.users.values_list()
assert user == [(1, "Anonymous", 1, 1, 1, 1, "admin")]
user = (
await role.users.filter(name="Anonymous")
.select_related("categories")
.fields({"name": ..., "categories": {"name"}})
.values_list(exclude_through=True)
)
assert user == [("Anonymous", "News", 1, "admin")]
user = (
await role.users.filter(name="Anonymous")
.select_related("categories")
.fields({"name": ..., "categories": {"name"}})
.exclude_fields("roles")
.values_list(exclude_through=True)
)
assert user == [("Anonymous", "News")]
user = (
await role.users.filter(name="Anonymous")
.select_related("categories")
.fields({"name"})
.exclude_fields("roles")
.values_list(exclude_through=True, flatten=True)
)
assert user == ["Anonymous"]