Add unit test for tag router
This commit is contained in:
parent
b9996a9fe6
commit
b382beb5a6
1 changed files with 76 additions and 0 deletions
76
backend/src/routes/test_tags.py
Normal file
76
backend/src/routes/test_tags.py
Normal file
|
@ -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?
|
Loading…
Reference in a new issue