You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.1 KiB
82 lines
2.1 KiB
import pytest
|
|
import requests
|
|
from typing import Generator
|
|
|
|
from utils import Collection
|
|
|
|
|
|
baesian_host = "http://localhost:84"
|
|
name = "Cicero"
|
|
item_id = 1
|
|
userid_seven = 7
|
|
userid_eight = 8
|
|
|
|
upsert_data = {
|
|
"marks": [{"mark": 9, "userid": userid_eight}, {"mark": 9, "userid": userid_seven}],
|
|
"name": name,
|
|
"nr_votes": 2,
|
|
"sum_votes": 18,
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def baesian(demo_db) -> Generator[Collection, None, None]:
|
|
collection = Collection(demo_db, "baesian")
|
|
yield collection
|
|
collection.drop()
|
|
|
|
|
|
def test_upsert_item(baesian):
|
|
requests.post(url="{0}/item/{1}".format(baesian_host, item_id), data={"name": name})
|
|
response = baesian.get({})
|
|
assert response[0]["name"] == name
|
|
assert response[0]["nr_votes"] == 0
|
|
|
|
|
|
def test_add_vote(baesian):
|
|
requests.post(url="{0}/item/{1}".format(baesian_host, item_id), data={"name": name})
|
|
requests.put(
|
|
url="{0}/item/vote/{1}".format(baesian_host, item_id),
|
|
data={"userid": userid_eight, "mark": 9},
|
|
)
|
|
requests.put(
|
|
url="{0}/item/vote/{1}".format(baesian_host, item_id),
|
|
data={"userid": userid_seven, "mark": 9},
|
|
)
|
|
|
|
response = baesian.get({})
|
|
assert len(response[0]["marks"]) == response[0]["nr_votes"]
|
|
assert response[0]["name"] == name
|
|
assert response[0]["sum_votes"] == 18
|
|
|
|
|
|
def test_get_item(baesian):
|
|
baesian.upsert(key=item_id, data=upsert_data)
|
|
|
|
response = requests.get(
|
|
url="{0}/item/{1}".format(baesian_host, item_id),
|
|
).json()
|
|
assert response["baesian_average"] == 9.0
|
|
assert response["sum_votes"] == 18
|
|
|
|
|
|
def test_get_items(baesian):
|
|
baesian.upsert(key=item_id, data=upsert_data)
|
|
response = requests.get(
|
|
url="{0}/items".format(baesian_host),
|
|
).json()
|
|
|
|
assert response[0]["name"] == name
|
|
assert len(response[0]["marks"]) > 0
|
|
|
|
|
|
def delete_item(baesian):
|
|
baesian.upsert(key=item_id, data=upsert_data)
|
|
response = requests.delete(
|
|
url="{0}/item/{1}".format(baesian_host, item_id),
|
|
).json()
|
|
|
|
assert response.status_code == 200
|
|
|
|
db_response = baesian.get({})
|
|
assert db_response == []
|
|
|