11"""Unit tests for TodoList API endpoints."""
22
3- from typing import Generator
3+ from collections . abc import Generator
44from unittest .mock import MagicMock
55
66import pytest
@@ -44,9 +44,7 @@ def client() -> TestClient:
4444class TestIndex :
4545 """Tests for GET /api/todolists endpoint."""
4646
47- def test_returns_all_todo_lists (
48- self , client : TestClient , mock_service : MagicMock
49- ) -> None :
47+ def test_returns_all_todo_lists (self , client : TestClient , mock_service : MagicMock ) -> None :
5048 """Test that index returns all todo lists."""
5149 # Arrange
5250 expected_todos = [
@@ -86,9 +84,7 @@ def test_returns_empty_list_when_no_todos(
8684class TestShow :
8785 """Tests for GET /api/todolists/{id} endpoint."""
8886
89- def test_returns_todo_list_by_id (
90- self , client : TestClient , mock_service : MagicMock
91- ) -> None :
87+ def test_returns_todo_list_by_id (self , client : TestClient , mock_service : MagicMock ) -> None :
9288 """Test that show returns a specific todo list."""
9389 # Arrange
9490 expected_todo = TodoList (id = 1 , name = "Test list" )
@@ -103,9 +99,7 @@ def test_returns_todo_list_by_id(
10399 assert response .json ()["name" ] == "Test list"
104100 mock_service .get .assert_called_once_with (1 )
105101
106- def test_returns_404_when_not_found (
107- self , client : TestClient , mock_service : MagicMock
108- ) -> None :
102+ def test_returns_404_when_not_found (self , client : TestClient , mock_service : MagicMock ) -> None :
109103 """Test that show returns 404 when todo list doesn't exist."""
110104 # Arrange
111105 mock_service .get .return_value = None
@@ -122,9 +116,7 @@ def test_returns_404_when_not_found(
122116class TestCreate :
123117 """Tests for POST /api/todolists endpoint."""
124118
125- def test_creates_new_todo_list (
126- self , client : TestClient , mock_service : MagicMock
127- ) -> None :
119+ def test_creates_new_todo_list (self , client : TestClient , mock_service : MagicMock ) -> None :
128120 """Test that create successfully creates a new todo list."""
129121 # Arrange
130122 created_todo = TodoList (id = 1 , name = "New list" )
@@ -139,9 +131,7 @@ def test_creates_new_todo_list(
139131 assert response .json ()["name" ] == "New list"
140132 mock_service .create .assert_called_once ()
141133
142- def test_validates_required_fields (
143- self , client : TestClient , mock_service : MagicMock
144- ) -> None :
134+ def test_validates_required_fields (self , client : TestClient , mock_service : MagicMock ) -> None :
145135 """Test that create validates required fields."""
146136 # Act
147137 response = client .post ("/api/todolists" , json = {})
@@ -150,9 +140,7 @@ def test_validates_required_fields(
150140 assert response .status_code == 422
151141 mock_service .create .assert_not_called ()
152142
153- def test_validates_name_not_empty (
154- self , client : TestClient , mock_service : MagicMock
155- ) -> None :
143+ def test_validates_name_not_empty (self , client : TestClient , mock_service : MagicMock ) -> None :
156144 """Test that create validates name is not empty."""
157145 # Act
158146 response = client .post ("/api/todolists" , json = {"name" : "" })
@@ -165,9 +153,7 @@ def test_validates_name_not_empty(
165153class TestUpdate :
166154 """Tests for PUT /api/todolists/{id} endpoint."""
167155
168- def test_updates_existing_todo_list (
169- self , client : TestClient , mock_service : MagicMock
170- ) -> None :
156+ def test_updates_existing_todo_list (self , client : TestClient , mock_service : MagicMock ) -> None :
171157 """Test that update successfully updates an existing todo list."""
172158 # Arrange
173159 updated_todo = TodoList (id = 1 , name = "Updated list" )
@@ -182,9 +168,7 @@ def test_updates_existing_todo_list(
182168 assert response .json ()["name" ] == "Updated list"
183169 mock_service .update .assert_called_once ()
184170
185- def test_returns_404_when_not_found (
186- self , client : TestClient , mock_service : MagicMock
187- ) -> None :
171+ def test_returns_404_when_not_found (self , client : TestClient , mock_service : MagicMock ) -> None :
188172 """Test that update returns 404 when todo list doesn't exist."""
189173 # Arrange
190174 mock_service .update .return_value = None
@@ -197,9 +181,7 @@ def test_returns_404_when_not_found(
197181 assert "not found" in response .json ()["detail" ].lower ()
198182 mock_service .update .assert_called_once ()
199183
200- def test_validates_required_fields (
201- self , client : TestClient , mock_service : MagicMock
202- ) -> None :
184+ def test_validates_required_fields (self , client : TestClient , mock_service : MagicMock ) -> None :
203185 """Test that update validates required fields."""
204186 # Act
205187 response = client .put ("/api/todolists/1" , json = {})
@@ -212,9 +194,7 @@ def test_validates_required_fields(
212194class TestDelete :
213195 """Tests for DELETE /api/todolists/{id} endpoint."""
214196
215- def test_deletes_existing_todo_list (
216- self , client : TestClient , mock_service : MagicMock
217- ) -> None :
197+ def test_deletes_existing_todo_list (self , client : TestClient , mock_service : MagicMock ) -> None :
218198 """Test that delete successfully deletes an existing todo list."""
219199 # Arrange
220200 mock_service .delete .return_value = True
@@ -227,9 +207,7 @@ def test_deletes_existing_todo_list(
227207 assert response .content == b""
228208 mock_service .delete .assert_called_once_with (1 )
229209
230- def test_returns_404_when_not_found (
231- self , client : TestClient , mock_service : MagicMock
232- ) -> None :
210+ def test_returns_404_when_not_found (self , client : TestClient , mock_service : MagicMock ) -> None :
233211 """Test that delete returns 404 when todo list doesn't exist."""
234212 # Arrange
235213 mock_service .delete .return_value = False
0 commit comments