Fix bug around search pagination with non-filtered searches
Also further optimizes the queries
This commit is contained in:
parent
dfd736c4c5
commit
eea026be52
2 changed files with 45 additions and 12 deletions
|
@ -3,6 +3,7 @@ import pytest
|
|||
from peewee import IntegrityError
|
||||
|
||||
from data.model.repository import create_repository, purge_repository, is_empty
|
||||
from data.model.repository import get_filtered_matching_repositories
|
||||
from test.fixtures import *
|
||||
|
||||
def test_duplicate_repository_different_kinds(initialized_db):
|
||||
|
@ -19,3 +20,26 @@ def test_is_empty(initialized_db):
|
|||
|
||||
assert is_empty('devtable', 'somenewrepo')
|
||||
assert not is_empty('devtable', 'simple')
|
||||
|
||||
@pytest.mark.skipif(os.environ.get('TEST_DATABASE_URI', '').find('mysql') >= 0,
|
||||
reason='MySQL requires specialized indexing of newly created repos')
|
||||
@pytest.mark.parametrize('query', [
|
||||
(''),
|
||||
('e'),
|
||||
])
|
||||
@pytest.mark.parametrize('authed_username', [
|
||||
(None),
|
||||
('devtable'),
|
||||
])
|
||||
def test_search_pagination(query, authed_username, initialized_db):
|
||||
# Create some public repos.
|
||||
repo1 = create_repository('devtable', 'somenewrepo', None, repo_kind='image', visibility='public')
|
||||
repo2 = create_repository('devtable', 'somenewrepo2', None, repo_kind='image', visibility='public')
|
||||
repo3 = create_repository('devtable', 'somenewrepo3', None, repo_kind='image', visibility='public')
|
||||
|
||||
repositories = get_filtered_matching_repositories(query, filter_username=authed_username)
|
||||
assert len(repositories) > 3
|
||||
|
||||
next_repos = get_filtered_matching_repositories(query, filter_username=authed_username, offset=1)
|
||||
assert repositories[0].id != next_repos[0].id
|
||||
assert repositories[1].id == next_repos[0].id
|
||||
|
|
Reference in a new issue