Add unit test for tag router

This commit is contained in:
linuskmr 2021-12-23 18:28:07 +01:00
parent b9996a9fe6
commit b382beb5a6

View 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?