1
0
mirror of https://github.com/ilri/dspace-statistics-api.git synced 2024-06-28 17:13:46 +02:00
dspace-statistics-api/tests/test_api.py
Alan Orth 556c5ae088
tests/test_api.py: Use response.text instead of content
Falcon's response content is raw bytes, while its text is a string.
Let's use the latter so we can use json.loads() in Python 3.5, 3.6,
and 3.7 with the same code.

See: https://falcon.readthedocs.io/en/stable/api/testing.html
2018-11-11 17:01:17 +02:00

68 lines
1.7 KiB
Python

from falcon import testing
import json
import pytest
from dspace_statistics_api.app import api
@pytest.fixture
def client():
return testing.TestClient(api)
def test_get_docs(client):
'''Test requesting the documentation at the root.'''
response = client.simulate_get('/')
assert isinstance(response.content, bytes)
assert response.status_code == 200
def test_get_item(client):
'''Test requesting a single item.'''
response = client.simulate_get('/item/17')
response_doc = json.loads(response.text)
assert isinstance(response_doc['downloads'], int)
assert isinstance(response_doc['id'], int)
assert isinstance(response_doc['views'], int)
assert response.status_code == 200
def test_get_missing_item(client):
'''Test requesting a single non-existing item.'''
response = client.simulate_get('/item/1')
assert response.status_code == 404
def test_get_items(client):
'''Test requesting 100 items.'''
response = client.simulate_get('/items', query_string='limit=100')
response_doc = json.loads(response.content)
assert isinstance(response_doc['currentPage'], int)
assert isinstance(response_doc['totalPages'], int)
assert isinstance(response_doc['statistics'], list)
assert response.status_code == 200
def test_get_items_invalid_limit(client):
'''Test requesting 100 items with an invalid limit parameter.'''
response = client.simulate_get('/items', query_string='limit=101')
assert response.status_code == 400
def test_get_items_invalid_page(client):
'''Test requesting 100 items with an invalid page parameter.'''
response = client.simulate_get('/items', query_string='page=-1')
assert response.status_code == 400