105 lines
3.0 KiB
Python
105 lines
3.0 KiB
Python
import pytest
|
|
import requests
|
|
|
|
from backend import config
|
|
from tests.model.fakes import build_student, build_tribes
|
|
|
|
|
|
@pytest.mark.usefixtures("restart_api")
|
|
@pytest.mark.usefixtures("clean_db")
|
|
def test_api_post_student():
|
|
url = config.get_api_url()
|
|
tribe = build_tribes(1)[0]
|
|
requests.post(f"{url}/tribes", json=tribe.to_dict())
|
|
|
|
data = {"name": "zart", "tribe_name": tribe.name}
|
|
r = requests.post(f"{url}/students", json=data)
|
|
|
|
post_request = r.history[0]
|
|
assert post_request.status_code == 302
|
|
|
|
assert r.status_code == 200
|
|
assert r.json()["name"] == "zart"
|
|
assert r.json()["tribe_name"] == tribe.name
|
|
assert r.json()["id"]
|
|
|
|
|
|
@pytest.mark.usefixtures("restart_api")
|
|
@pytest.mark.usefixtures("clean_db")
|
|
def test_api_post_student_with_id():
|
|
url = config.get_api_url()
|
|
tribe = build_tribes(1)[0]
|
|
requests.post(f"{url}/tribes", json=tribe.to_dict())
|
|
|
|
data = {"id": "1234", "name": "zart", "tribe_name": tribe.name}
|
|
requests.post(f"{url}/students", json=data)
|
|
r = requests.post(f"{url}/students", json=data)
|
|
|
|
assert r.status_code == 409
|
|
assert (
|
|
r.json()
|
|
== f"You can't post a student with an id. It is already registrered. Use PUT to modify it."
|
|
)
|
|
|
|
|
|
@pytest.mark.usefixtures("restart_api")
|
|
@pytest.mark.usefixtures("clean_db")
|
|
def test_api_post_student_in_non_existant_tribe():
|
|
url = config.get_api_url()
|
|
tribe = build_tribes(1)[0]
|
|
requests.post(f"{url}/tribes", json=tribe.to_dict())
|
|
|
|
data = {"name": "zart", "tribe_name": tribe.name + "_"}
|
|
requests.post(f"{url}/students", json=data)
|
|
r = requests.post(f"{url}/students", json=data)
|
|
|
|
assert r.status_code == 409
|
|
assert (
|
|
r.json()
|
|
== f"The tribe {tribe.name+'_'} does not exists. You can't add a student in it."
|
|
)
|
|
|
|
|
|
@pytest.mark.usefixtures("restart_api")
|
|
@pytest.mark.usefixtures("clean_db")
|
|
def test_api_put_student():
|
|
url = config.get_api_url()
|
|
tribe = build_tribes(1)[0]
|
|
requests.post(f"{url}/tribes", json=tribe.to_dict())
|
|
|
|
data = {"name": "zart", "tribe_name": tribe.name}
|
|
r = requests.post(f"{url}/students", json=data)
|
|
|
|
student = r.json()
|
|
student["name"] = "Choupinou"
|
|
|
|
r2 = requests.put(f"{url}/students/{student['id']}", json=student)
|
|
|
|
post_request = r2.history[0]
|
|
assert post_request.status_code == 302
|
|
|
|
assert r2.status_code == 200
|
|
assert r2.json()["name"] == "Choupinou"
|
|
assert r2.json()["tribe_name"] == tribe.name
|
|
assert r2.json()["id"] == r.json()["id"]
|
|
|
|
|
|
@pytest.mark.usefixtures("restart_api")
|
|
@pytest.mark.usefixtures("clean_db")
|
|
def test_api_delete_student():
|
|
url = config.get_api_url()
|
|
tribe = build_tribes(1)[0]
|
|
requests.post(f"{url}/tribes", json=tribe.to_dict())
|
|
|
|
student = build_student([tribe], 1)[0]
|
|
r = requests.post(
|
|
f"{url}/students", json={"name": student.name, "tribe_name": student.tribe.name}
|
|
)
|
|
student_id = r.json()["id"]
|
|
|
|
r = requests.delete(f"{url}/students/{student_id}")
|
|
assert r.status_code == 204
|
|
|
|
r = requests.get(f"{url}/students/")
|
|
assert r.json() == []
|