Skip to content

Commit

Permalink
Add tests for value search endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
jochenklar committed Nov 10, 2024
1 parent e4d35a3 commit 9d25784
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 1 deletion.
27 changes: 26 additions & 1 deletion rdmo/projects/tests/test_viewset_value.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@
urlnames = {
'list': 'v1-projects:value-list',
'detail': 'v1-projects:value-detail',
'file': 'v1-projects:value-file'
'file': 'v1-projects:value-file',
'search': 'v1-projects:value-search'
}

values = [
Expand Down Expand Up @@ -173,3 +174,27 @@ def test_file(db, client, files, username, password, value_id):
assert response.status_code == 404
else:
assert response.status_code == 401



@pytest.mark.parametrize('username,password', users)
def test_search(db, client, username, password):
client.login(username=username, password=password)

url = reverse(urlnames['search'])
response = client.get(url)

if password:
assert response.status_code == 200
assert isinstance(response.json(), list)


if username == 'user':
assert sorted([item['id'] for item in response.json()]) == values_internal
else:
values_list = Value.objects.filter(project__in=view_value_permission_map.get(username, [])) \
.filter(snapshot=None) \
.exclude_empty()[:10]
assert sorted([item['id'] for item in response.json()]) == sorted([item.id for item in values_list])
else:
assert response.status_code == 401
61 changes: 61 additions & 0 deletions rdmo/projects/tests/test_viewset_value_search.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
from django.urls import reverse

from ..models import Value

view_value_permission_map = {
'owner': [1, 2, 3, 4, 5, 12],
}

urlnames = {
'search': 'v1-projects:value-search'
}

attribute_id = 14
search = 'Fir'

def test_search(db, client):
client.login(username='owner', password='owner')

url = reverse(urlnames['search'])
response = client.get(url)

values_list = Value.objects.filter(project__in=view_value_permission_map.get('owner', [])) \
.filter(snapshot=None) \
.exclude_empty()[:10]
assert sorted([item['id'] for item in response.json()]) == sorted([item.id for item in values_list])


def test_search_attribute(db, client):
client.login(username='owner', password='owner')

url = reverse(urlnames['search']) + f'?attribute={attribute_id}'
response = client.get(url)

values_list = Value.objects.filter(project__in=view_value_permission_map.get('owner', [])) \
.filter(attribute_id=attribute_id, snapshot=None) \
.exclude_empty()[:10]
assert sorted([item['id'] for item in response.json()]) == sorted([item.id for item in values_list])


def test_search_attribute_snapshot(db, client):
client.login(username='owner', password='owner')

url = reverse(urlnames['search']) + f'?attribute={attribute_id}&snapshot=all'
response = client.get(url)

values_list = Value.objects.filter(project__in=view_value_permission_map.get('owner', [])) \
.filter(attribute_id=attribute_id) \
.exclude_empty()[:10]
assert sorted([item['id'] for item in response.json()]) == sorted([item.id for item in values_list])


def test_search_attribute_search(db, client):
client.login(username='owner', password='owner')

url = reverse(urlnames['search']) + f'?attribute={attribute_id}&search={search}'
response = client.get(url)

values_list = Value.objects.filter(project__in=view_value_permission_map.get('owner', [])) \
.filter(attribute_id=attribute_id, text__contains=search) \
.exclude_empty()[:10]
assert sorted([item['id'] for item in response.json()]) == sorted([item.id for item in values_list])

0 comments on commit 9d25784

Please sign in to comment.