diff --git a/backend/src/routes/test_tags.py b/backend/src/routes/test_tags.py new file mode 100644 index 0000000..c8fbc52 --- /dev/null +++ b/backend/src/routes/test_tags.py @@ -0,0 +1,76 @@ +from datetime import datetime + +from fastapi.testclient import TestClient +from fastapi import status +from sqlmodel import Session, select + +from src.models.tag import Tag + + +def test_tag_create(client: TestClient): + tag = {"name": "Uni"} + response = client.post("/tags/", json=tag) + response_data: dict = response.json() + assert response.status_code == status.HTTP_201_CREATED + assert tag.items() <= response_data.items() # Is subset, i.e. was all send data saved? + assert response_data["id"] # Not empty? + + +def test_tag_get(client: TestClient, session: Session): + # Fill database + tag = Tag(name="Uni") + session.add(tag) + session.commit() + # Request data from API + response = client.get("/tags/Uni") + response_data = response.json() + assert response.status_code == status.HTTP_200_OK + assert response_data["id"] # Not empty? + assert response_data["name"] == tag.name + + +def test_tag_update(client: TestClient, session: Session): + # Fill database + tag = Tag(name="Uni") + session.add(tag) + session.commit() + # Perform update via API + tag_updates = {"name": "UNI"} + response = client.patch("/tags/Uni", json=tag_updates) + response_data = response.json() + assert response.status_code == status.HTTP_200_OK + assert response_data["id"] # Not empty? + assert response_data["name"] == tag_updates["name"] + + +def test_tag_delete(client: TestClient, session: Session): + # Fill database + tag = Tag(name="Uni") + session.add(tag) + session.commit() + # Delete via API + response = client.delete("/tags/Uni") + response_data = response.json() + assert response.status_code == status.HTTP_204_NO_CONTENT + assert session.exec(select(Tag).where(Tag.name == "Uni")).first() is None # Element deleted from database? + + +def test_tag_get_list(client: TestClient, session: Session): + pass + # Fill database + tag_uni = Tag(name="Uni", creation_date=datetime.now()) + tag_sport = Tag(name="Sport", creation_date=datetime.now()) + session.add(tag_uni) + session.add(tag_sport) + session.commit() + # Request data from API + response = client.get("/tags/") + response_data = response.json() + assert response.status_code == status.HTTP_200_OK + assert len(response_data) == 2 + + assert response_data[0]["name"] == tag_uni.name + assert response_data[0]["id"] # Not empty? + + assert response_data[1]["name"] == tag_sport.name + assert response_data[1]["id"] # Not empty?