check orders

This commit is contained in:
collerek
2021-03-07 14:10:35 +01:00
parent 4a66054987
commit e8329c0dcd
4 changed files with 39 additions and 28 deletions

View File

@ -51,14 +51,14 @@ jobs:
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Run postgres
env:
DATABASE_URL: "postgresql://username:password@localhost:5432/testsuite"
run: bash scripts/test.sh
- name: Run mysql
env:
DATABASE_URL: "mysql://username:password@127.0.0.1:3306/testsuite"
run: bash scripts/test.sh
- name: Run postgres
env:
DATABASE_URL: "postgresql://username:password@localhost:5432/testsuite"
run: bash scripts/test.sh
- name: Run sqlite
env:
DATABASE_URL: "sqlite:///testsuite"

View File

@ -173,7 +173,7 @@ class Query:
limit_qry
)
limit_qry = limit_qry.group_by(qry_text)
limit_qry = OrderQuery(sorted_orders=self.sorted_orders).apply(limit_qry)
# limit_qry = OrderQuery(sorted_orders=self.sorted_orders).apply(limit_qry)
limit_qry = LimitQuery(limit_count=self.limit_count).apply(limit_qry)
limit_qry = OffsetQuery(query_offset=self.query_offset).apply(limit_qry)
limit_action = FilterAction(

View File

@ -281,7 +281,7 @@ class QuerySet:
limit_raw_sql=self.limit_sql_raw,
)
exp = qry.build_select_expression()
# print("\n", exp.compile(compile_kwargs={"literal_binds": True}))
print("\n", exp.compile(compile_kwargs={"literal_binds": True}))
return exp
def filter( # noqa: A003

View File

@ -132,6 +132,11 @@ async def test_sort_order_on_main_model():
assert songs[1].name == "Song 2"
assert songs[2].name == "Song 3"
songs = await Song.objects.order_by("name").limit(2).all()
assert len(songs) == 2
assert songs[0].name == "Song 1"
assert songs[1].name == "Song 2"
await Song.objects.create(name="Song 4", sort_order=1)
songs = await Song.objects.order_by(["sort_order", "name"]).all()
@ -169,27 +174,27 @@ async def test_sort_order_on_related_model():
owner = (
await Owner.objects.select_related("toys")
.order_by("toys__name")
.filter(name="Zeus")
.get()
.order_by("toys__name")
.filter(name="Zeus")
.get()
)
assert owner.toys[0].name == "Toy 1"
assert owner.toys[1].name == "Toy 4"
owner = (
await Owner.objects.select_related("toys")
.order_by("-toys__name")
.filter(name="Zeus")
.get()
.order_by("-toys__name")
.filter(name="Zeus")
.get()
)
assert owner.toys[0].name == "Toy 4"
assert owner.toys[1].name == "Toy 1"
owners = (
await Owner.objects.select_related("toys")
.order_by("-toys__name")
.filter(name__in=["Zeus", "Hermes"])
.all()
.order_by("-toys__name")
.filter(name__in=["Zeus", "Hermes"])
.all()
)
assert owners[0].toys[0].name == "Toy 6"
assert owners[0].toys[1].name == "Toy 5"
@ -203,9 +208,9 @@ async def test_sort_order_on_related_model():
owners = (
await Owner.objects.select_related("toys")
.order_by("-toys__name")
.filter(name__in=["Zeus", "Hermes"])
.all()
.order_by("-toys__name")
.filter(name__in=["Zeus", "Hermes"])
.all()
)
assert owners[0].toys[0].name == "Toy 7"
assert owners[0].toys[1].name == "Toy 4"
@ -216,6 +221,12 @@ async def test_sort_order_on_related_model():
assert owners[1].toys[1].name == "Toy 5"
assert owners[1].name == "Hermes"
toys = await Toy.objects.select_related('owner').order_by('owner__name').limit(
2).all()
assert len(toys) == 2
assert toys[0].name == 'Toy 2'
assert toys[1].name == 'Toy 3'
@pytest.mark.asyncio
async def test_sort_order_on_many_to_many():
@ -245,9 +256,9 @@ async def test_sort_order_on_many_to_many():
user = (
await User.objects.select_related("cars")
.filter(name="Mark")
.order_by("cars__name")
.get()
.filter(name="Mark")
.order_by("cars__name")
.get()
)
assert user.cars[0].name == "Buggy"
assert user.cars[1].name == "Ferrari"
@ -256,9 +267,9 @@ async def test_sort_order_on_many_to_many():
user = (
await User.objects.select_related("cars")
.filter(name="Mark")
.order_by("-cars__name")
.get()
.filter(name="Mark")
.order_by("-cars__name")
.get()
)
assert user.cars[3].name == "Buggy"
assert user.cars[2].name == "Ferrari"
@ -274,8 +285,8 @@ async def test_sort_order_on_many_to_many():
users = (
await User.objects.select_related(["cars__factory"])
.order_by(["-cars__factory__name", "cars__name"])
.all()
.order_by(["-cars__factory__name", "cars__name"])
.all()
)
assert users[0].name == "Julie"
@ -321,8 +332,8 @@ async def test_sort_order_with_aliases():
aliases = (
await AliasTest.objects.select_related("nested")
.order_by("-nested__name")
.all()
.order_by("-nested__name")
.all()
)
assert aliases[0].nested.name == "Try4"
assert aliases[1].nested.name == "Try3"