1
0
mirror of https://github.com/quay/quay.git synced 2026-01-27 18:42:52 +03:00
Files
quay/data/model/test/test_modelutil.py
Kenny Lee Sin Cheong 5f63b3a7bb chore: drop deprecated tables and remove unused code (PROJQUAY-522) (#2089)
* chore: drop deprecated tables and remove unused code

* isort imports

* migration: check for table existence before drop
2023-08-25 12:17:24 -04:00

60 lines
1.4 KiB
Python

from test.fixtures import *
import pytest
from data.database import Role
from data.model.modelutil import paginate
@pytest.mark.parametrize(
"page_size",
[
10,
20,
50,
100,
200,
500,
1000,
],
)
@pytest.mark.parametrize(
"descending",
[
False,
True,
],
)
def test_paginate(page_size, descending, initialized_db):
# Add a bunch of rows into a test table (`Role`).
for i in range(0, 522):
Role.create(name="testrole%s" % i)
query = Role.select().where(Role.name ** "testrole%")
all_matching_roles = list(query)
assert len(all_matching_roles) == 522
# Paginate a query to lookup roles.
collected = []
page_token = None
while True:
results, page_token = paginate(
query, Role, limit=page_size, descending=descending, page_token=page_token
)
assert len(results) <= page_size
collected.extend(results)
if page_token is None:
break
assert len(results) == page_size
for index, result in enumerate(results[1:]):
if descending:
assert result.id < results[index].id
else:
assert result.id > results[index].id
assert len(collected) == len(all_matching_roles)
assert {c.id for c in collected} == {a.id for a in all_matching_roles}