Skip to content

Commit aa9e02c

Browse files
committed
Tests Implemented
1 parent 8d09496 commit aa9e02c

File tree

2 files changed

+138
-0
lines changed

2 files changed

+138
-0
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
import uuid
2+
3+
from fastapi.testclient import TestClient
4+
from sqlmodel import Session
5+
6+
from app.core.config import settings
7+
from app.tests.utils.meeting import create_random_meeting
8+
9+
10+
def test_create_meeting(
11+
client: TestClient, superuser_token_headers: dict[str, str]
12+
) -> None:
13+
data = {"title": "Test Meeting", "agenda": "Discuss testing"}
14+
response = client.post(
15+
f"{settings.API_V1_STR}/meetings/",
16+
headers=superuser_token_headers,
17+
json=data,
18+
)
19+
assert response.status_code == 200
20+
content = response.json()
21+
assert content["title"] == data["title"]
22+
assert content["agenda"] == data["agenda"]
23+
assert "id" in content
24+
25+
26+
def test_read_meeting(
27+
client: TestClient, superuser_token_headers: dict[str, str], db: Session
28+
) -> None:
29+
meeting = create_random_meeting(db)
30+
response = client.get(
31+
f"{settings.API_V1_STR}/meetings/{meeting.id}",
32+
headers=superuser_token_headers,
33+
)
34+
assert response.status_code == 200
35+
content = response.json()
36+
assert content["title"] == meeting.title
37+
assert content["agenda"] == meeting.agenda
38+
assert content["id"] == str(meeting.id)
39+
40+
41+
def test_read_meeting_not_found(
42+
client: TestClient, superuser_token_headers: dict[str, str]
43+
) -> None:
44+
response = client.get(
45+
f"{settings.API_V1_STR}/meetings/{uuid.uuid4()}",
46+
headers=superuser_token_headers,
47+
)
48+
assert response.status_code == 404
49+
content = response.json()
50+
assert content["detail"] == "Meeting not found"
51+
52+
53+
def test_read_meetings(
54+
client: TestClient, superuser_token_headers: dict[str, str], db: Session
55+
) -> None:
56+
create_random_meeting(db)
57+
create_random_meeting(db)
58+
response = client.get(
59+
f"{settings.API_V1_STR}/meetings/",
60+
headers=superuser_token_headers,
61+
)
62+
assert response.status_code == 200
63+
content = response.json()
64+
assert len(content["data"]) >= 2
65+
66+
67+
def test_update_meeting(
68+
client: TestClient, superuser_token_headers: dict[str, str], db: Session
69+
) -> None:
70+
meeting = create_random_meeting(db)
71+
data = {"title": "Updated Meeting", "agenda": "Updated agenda"}
72+
response = client.put(
73+
f"{settings.API_V1_STR}/meetings/{meeting.id}",
74+
headers=superuser_token_headers,
75+
json=data,
76+
)
77+
assert response.status_code == 200
78+
content = response.json()
79+
assert content["title"] == data["title"]
80+
assert content["agenda"] == data["agenda"]
81+
assert content["id"] == str(meeting.id)
82+
83+
84+
def test_update_meeting_not_found(
85+
client: TestClient, superuser_token_headers: dict[str, str]
86+
) -> None:
87+
data = {"title": "Updated Meeting", "agenda": "Updated agenda"}
88+
response = client.put(
89+
f"{settings.API_V1_STR}/meetings/{uuid.uuid4()}",
90+
headers=superuser_token_headers,
91+
json=data,
92+
)
93+
assert response.status_code == 404
94+
content = response.json()
95+
assert content["detail"] == "Meeting not found"
96+
97+
98+
def test_delete_meeting(
99+
client: TestClient, superuser_token_headers: dict[str, str], db: Session
100+
) -> None:
101+
meeting = create_random_meeting(db)
102+
response = client.delete(
103+
f"{settings.API_V1_STR}/meetings/{meeting.id}",
104+
headers=superuser_token_headers,
105+
)
106+
assert response.status_code == 200
107+
content = response.json()
108+
assert content["id"] == str(meeting.id)
109+
110+
111+
def test_delete_meeting_not_found(
112+
client: TestClient, superuser_token_headers: dict[str, str]
113+
) -> None:
114+
response = client.delete(
115+
f"{settings.API_V1_STR}/meetings/{uuid.uuid4()}",
116+
headers=superuser_token_headers,
117+
)
118+
assert response.status_code == 404
119+
content = response.json()
120+
assert content["detail"] == "Meeting not found"

backend/app/tests/utils/meeting.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import random
2+
import string
3+
4+
from sqlmodel import Session
5+
6+
from app import crud
7+
from app.models import MeetingCreate
8+
9+
10+
def random_lower_string() -> str:
11+
return "".join(random.choices(string.ascii_lowercase, k=32))
12+
13+
14+
def create_random_meeting(db: Session) -> None:
15+
title = random_lower_string()
16+
agenda = random_lower_string()
17+
meeting_in = MeetingCreate(title=title, agenda=agenda)
18+
return crud.meeting.create_meeting(session=db, meeting_in=meeting_in)

0 commit comments

Comments
 (0)