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: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi 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 - name: Run mysql
env: env:
DATABASE_URL: "mysql://username:password@127.0.0.1:3306/testsuite" DATABASE_URL: "mysql://username:password@127.0.0.1:3306/testsuite"
run: bash scripts/test.sh 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 - name: Run sqlite
env: env:
DATABASE_URL: "sqlite:///testsuite" DATABASE_URL: "sqlite:///testsuite"

View File

@ -173,7 +173,7 @@ class Query:
limit_qry limit_qry
) )
limit_qry = limit_qry.group_by(qry_text) 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 = LimitQuery(limit_count=self.limit_count).apply(limit_qry)
limit_qry = OffsetQuery(query_offset=self.query_offset).apply(limit_qry) limit_qry = OffsetQuery(query_offset=self.query_offset).apply(limit_qry)
limit_action = FilterAction( limit_action = FilterAction(

View File

@ -281,7 +281,7 @@ class QuerySet:
limit_raw_sql=self.limit_sql_raw, limit_raw_sql=self.limit_sql_raw,
) )
exp = qry.build_select_expression() 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 return exp
def filter( # noqa: A003 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[1].name == "Song 2"
assert songs[2].name == "Song 3" 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) await Song.objects.create(name="Song 4", sort_order=1)
songs = await Song.objects.order_by(["sort_order", "name"]).all() songs = await Song.objects.order_by(["sort_order", "name"]).all()
@ -169,27 +174,27 @@ async def test_sort_order_on_related_model():
owner = ( owner = (
await Owner.objects.select_related("toys") await Owner.objects.select_related("toys")
.order_by("toys__name") .order_by("toys__name")
.filter(name="Zeus") .filter(name="Zeus")
.get() .get()
) )
assert owner.toys[0].name == "Toy 1" assert owner.toys[0].name == "Toy 1"
assert owner.toys[1].name == "Toy 4" assert owner.toys[1].name == "Toy 4"
owner = ( owner = (
await Owner.objects.select_related("toys") await Owner.objects.select_related("toys")
.order_by("-toys__name") .order_by("-toys__name")
.filter(name="Zeus") .filter(name="Zeus")
.get() .get()
) )
assert owner.toys[0].name == "Toy 4" assert owner.toys[0].name == "Toy 4"
assert owner.toys[1].name == "Toy 1" assert owner.toys[1].name == "Toy 1"
owners = ( owners = (
await Owner.objects.select_related("toys") await Owner.objects.select_related("toys")
.order_by("-toys__name") .order_by("-toys__name")
.filter(name__in=["Zeus", "Hermes"]) .filter(name__in=["Zeus", "Hermes"])
.all() .all()
) )
assert owners[0].toys[0].name == "Toy 6" assert owners[0].toys[0].name == "Toy 6"
assert owners[0].toys[1].name == "Toy 5" assert owners[0].toys[1].name == "Toy 5"
@ -203,9 +208,9 @@ async def test_sort_order_on_related_model():
owners = ( owners = (
await Owner.objects.select_related("toys") await Owner.objects.select_related("toys")
.order_by("-toys__name") .order_by("-toys__name")
.filter(name__in=["Zeus", "Hermes"]) .filter(name__in=["Zeus", "Hermes"])
.all() .all()
) )
assert owners[0].toys[0].name == "Toy 7" assert owners[0].toys[0].name == "Toy 7"
assert owners[0].toys[1].name == "Toy 4" 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].toys[1].name == "Toy 5"
assert owners[1].name == "Hermes" 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 @pytest.mark.asyncio
async def test_sort_order_on_many_to_many(): async def test_sort_order_on_many_to_many():
@ -245,9 +256,9 @@ async def test_sort_order_on_many_to_many():
user = ( user = (
await User.objects.select_related("cars") await User.objects.select_related("cars")
.filter(name="Mark") .filter(name="Mark")
.order_by("cars__name") .order_by("cars__name")
.get() .get()
) )
assert user.cars[0].name == "Buggy" assert user.cars[0].name == "Buggy"
assert user.cars[1].name == "Ferrari" assert user.cars[1].name == "Ferrari"
@ -256,9 +267,9 @@ async def test_sort_order_on_many_to_many():
user = ( user = (
await User.objects.select_related("cars") await User.objects.select_related("cars")
.filter(name="Mark") .filter(name="Mark")
.order_by("-cars__name") .order_by("-cars__name")
.get() .get()
) )
assert user.cars[3].name == "Buggy" assert user.cars[3].name == "Buggy"
assert user.cars[2].name == "Ferrari" assert user.cars[2].name == "Ferrari"
@ -274,8 +285,8 @@ async def test_sort_order_on_many_to_many():
users = ( users = (
await User.objects.select_related(["cars__factory"]) await User.objects.select_related(["cars__factory"])
.order_by(["-cars__factory__name", "cars__name"]) .order_by(["-cars__factory__name", "cars__name"])
.all() .all()
) )
assert users[0].name == "Julie" assert users[0].name == "Julie"
@ -321,8 +332,8 @@ async def test_sort_order_with_aliases():
aliases = ( aliases = (
await AliasTest.objects.select_related("nested") await AliasTest.objects.select_related("nested")
.order_by("-nested__name") .order_by("-nested__name")
.all() .all()
) )
assert aliases[0].nested.name == "Try4" assert aliases[0].nested.name == "Try4"
assert aliases[1].nested.name == "Try3" assert aliases[1].nested.name == "Try3"