1+ import sqlite3
2+
13import pytest
4+ from sqlalchemy .exc import IntegrityError
25
36from app .models import Category
47from tests import utils
@@ -36,19 +39,23 @@ def test_create_category(self, create_category):
3639 assert "id" in data
3740 self ._verify_category_in_db (self .TEST_CATEGORY_NAME )
3841
39- def test_create_category_duplicate_name (self , create_category ):
40- create_category ( self . TEST_CATEGORY_NAME )
41- response = create_category (self .TEST_CATEGORY_NAME )
42+ def test_create_category_duplicate_name (self , create_category , create_authenticated_headers ):
43+ headers = create_authenticated_headers ( )
44+ create_category (self .TEST_CATEGORY_NAME , headers = headers )
4245
43- assert response .status_code == 500
46+ with pytest .raises (IntegrityError ) as ie :
47+ create_category (self .TEST_CATEGORY_NAME , headers = headers )
48+
49+ assert isinstance (ie .value .orig , sqlite3 .IntegrityError )
50+ assert "UNIQUE constraint failed" in str (ie .value .orig )
4451 assert self ._count_categories () == 1
4552 self ._verify_category_in_db (self .TEST_CATEGORY_NAME )
4653
4754 def test_get_category_by_id (self , create_category ):
4855 response = create_category ("Books" )
4956 data = response .get_json ()
5057 cat_id = data ["id" ]
51- get_resp = self .client .get (f"/category /{ cat_id } " )
58+ get_resp = self .client .get (f"/categories /{ cat_id } " )
5259
5360 assert get_resp .status_code == 200
5461 data = get_resp .get_json ()
@@ -70,14 +77,14 @@ def test_get_all_categories(self, create_category):
7077
7178 def test_update_category (self , create_authenticated_headers , create_category ):
7279 headers = create_authenticated_headers ()
73- response = create_category ("OldName" , headers )
80+ response = create_category ("OldName" , headers = headers )
7481 data = response .get_json ()
7582 cat_id = data ["id" ]
7683 update_resp = self .client .put (
77- f"/category /{ cat_id } /update " , json = {"name" : "NewName" }, headers = headers
84+ f"/categories /{ cat_id } " , json = {"name" : "NewName" }, headers = headers
7885 )
7986
80- assert update_resp .status_code == 201
87+ assert update_resp .status_code == 200
8188 data = update_resp .get_json ()
8289 assert data ["name" ] == "NewName"
8390 assert data ["id" ] == cat_id
@@ -87,13 +94,13 @@ def test_update_category(self, create_authenticated_headers, create_category):
8794
8895 def test_delete_category (self , create_authenticated_headers , create_category ):
8996 headers = create_authenticated_headers ()
90- response = create_category ("ToDelete" , headers )
97+ response = create_category ("ToDelete" , headers = headers )
9198 data = response .get_json ()
9299 cat_id = data ["id" ]
93- delete_resp = self .client .delete (f"/category /{ cat_id } " , headers = headers )
100+ delete_resp = self .client .delete (f"/categories /{ cat_id } " , headers = headers )
94101
95- assert delete_resp .status_code == 200
96- get_resp = self .client .get (f"/category /{ cat_id } " )
102+ assert delete_resp .status_code == 204
103+ get_resp = self .client .get (f"/categories /{ cat_id } " )
97104 assert get_resp .status_code == 404
98105 self ._verify_category_in_db ("ToDelete" , should_exist = False )
99106
@@ -108,7 +115,7 @@ def test_delete_category(self, create_authenticated_headers, create_category):
108115 def test_create_category_token_error (self , get_headers , expected_code ):
109116 headers = get_headers (self )
110117 response = self .client .post (
111- "/category/create " , json = {"name" : "CreateTokenError" }, headers = headers
118+ "/categories " , json = {"name" : "CreateTokenError" }, headers = headers
112119 )
113120 utils .verify_token_error_response (response , expected_code )
114121 self ._verify_category_in_db ("CreateTokenError" , should_exist = False )
@@ -121,15 +128,14 @@ def test_create_category_token_error(self, get_headers, expected_code):
121128 (lambda self : None , "authorization_required" )
122129 ]
123130 )
124- def test_update_category_token_error (self , get_headers , create_category , create_authenticated_headers , expected_code ):
125- headers = create_authenticated_headers ()
126- response = create_category ("UpdateTokenError" , headers )
131+ def test_update_category_token_error (self , get_headers , create_category , expected_code ):
132+ response = create_category ("UpdateTokenError" )
127133 data = response .get_json ()
128134 cat_id = data ["id" ]
129135
130136 update_headers = get_headers (self )
131137 update_resp = self .client .put (
132- f"/category /{ cat_id } /update " ,
138+ f"/categories /{ cat_id } " ,
133139 json = {"name" : "UpdatedName" },
134140 headers = update_headers ,
135141 )
@@ -146,14 +152,13 @@ def test_update_category_token_error(self, get_headers, create_category, create_
146152 (lambda self : None , "authorization_required" )
147153 ]
148154 )
149- def test_delete_category_token_error (self , get_headers , create_category , create_authenticated_headers , expected_code ):
150- headers = create_authenticated_headers ()
151- response = create_category ("DeleteTokenError" , headers )
155+ def test_delete_category_token_error (self , get_headers , create_category , expected_code ):
156+ response = create_category ("DeleteTokenError" )
152157 data = response .get_json ()
153158 cat_id = data ["id" ]
154159
155160 delete_headers = get_headers (self )
156- delete_resp = self .client .delete (f"/category /{ cat_id } " , headers = delete_headers )
161+ delete_resp = self .client .delete (f"/categories /{ cat_id } " , headers = delete_headers )
157162
158163 utils .verify_token_error_response (delete_resp , expected_code )
159164 self ._verify_category_in_db ("DeleteTokenError" )
0 commit comments