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"
0 commit comments