@@ -112,23 +112,58 @@ def test_update_category_adds_linked_subcategories(self, create_authenticated_he
112112 assert self ._category_subcategory_ids (category ["id" ]) == [subcategory ["id" ]]
113113
114114 def test_update_subcategory_adds_categories_and_products (self , create_authenticated_headers , create_category , create_product , create_subcategory ):
115- category1 = create_category ("UC1" ).get_json ()
116- category2 = create_category ("UC2" ).get_json ()
117- product1 = create_product ("UP1" ).get_json ()
118- product2 = create_product ("UP2" ).get_json ()
119- subcategory = create_subcategory ("U_SC" ).get_json ()
120-
121115 headers = create_authenticated_headers ()
116+ category1 = create_category ("UC1" , headers = headers ).get_json ()
117+ category2 = create_category ("UC2" , headers = headers ).get_json ()
118+ product1 = create_product ("UP1" , headers = headers ).get_json ()
119+ product2 = create_product ("UP2" , headers = headers ).get_json ()
120+ subcategory = create_subcategory ("U_SC" , headers = headers ).get_json ()
121+
122122 update_response = self .client .put (
123- f"/subcategory /{ subcategory ['id' ]} /update " ,
123+ f"/subcategories /{ subcategory ['id' ]} " ,
124124 json = {"categories" : [category1 ["id" ], category2 ["id" ]], "products" : [product1 ["id" ], product2 ["id" ]]},
125125 headers = headers ,
126126 )
127- assert update_response .status_code == 201
127+ assert update_response .status_code == 200
128128
129129 assert self ._subcategory_category_ids (subcategory ["id" ]) == sorted ([category1 ["id" ], category2 ["id" ]])
130130 assert self ._subcategory_product_ids (subcategory ["id" ]) == sorted ([product1 ["id" ], product2 ["id" ]])
131131
132+ def test_update_subcategory_adds_linked_categories_and_products (self , create_authenticated_headers , create_category , create_product , create_subcategory ):
133+ headers = create_authenticated_headers ()
134+ category = create_category ("UC1" , headers = headers ).get_json ()
135+ product = create_product ("UP1" , headers = headers ).get_json ()
136+ subcategory = create_subcategory ("U_SC" , categories = [category ["id" ]], products = [product ["id" ]], headers = headers ).get_json ()
137+
138+ with pytest .raises (IntegrityError ) as ie_c :
139+ self .client .put (
140+ f"/subcategories/{ subcategory ['id' ]} " ,
141+ json = {"categories" : [category ["id" ]]},
142+ headers = headers ,
143+ )
144+ with pytest .raises (IntegrityError ) as ie_p :
145+ self .client .put (
146+ f"/subcategories/{ subcategory ['id' ]} " ,
147+ json = {"products" : [product ["id" ]]},
148+ headers = headers ,
149+ )
150+ with pytest .raises (IntegrityError ) as ie_cp :
151+ self .client .put (
152+ f"/subcategories/{ subcategory ['id' ]} " ,
153+ json = {"categories" : [category ["id" ]], "products" : [product ["id" ]]},
154+ headers = headers ,
155+ )
156+
157+ assert isinstance (ie_c .value .orig , sqlite3 .IntegrityError )
158+ assert isinstance (ie_p .value .orig , sqlite3 .IntegrityError )
159+ assert isinstance (ie_cp .value .orig , sqlite3 .IntegrityError )
160+ assert "UNIQUE constraint failed" in str (ie_c .value .orig )
161+ assert "UNIQUE constraint failed" in str (ie_p .value .orig )
162+ assert "UNIQUE constraint failed" in str (ie_cp .value .orig )
163+
164+ assert self ._subcategory_category_ids (subcategory ["id" ]) == [category ["id" ]]
165+ assert self ._subcategory_product_ids (subcategory ["id" ]) == [product ["id" ]]
166+
132167 def test_update_product_adds_subcategories (self , create_authenticated_headers , create_product , create_subcategory ):
133168 subcategory1 = create_subcategory ("UPS1" ).get_json ()
134169 subcategory2 = create_subcategory ("UPS2" ).get_json ()
@@ -177,32 +212,34 @@ def test_get_category_products_populated_with_pagination(self, create_category,
177212
178213 def test_get_subcategory_categories_empty (self , create_subcategory ):
179214 subcategory = create_subcategory ("SC_NoCat" ).get_json ()
180- resp = self .client .get (f"/subcategory /{ subcategory ['id' ]} /categories" )
215+ resp = self .client .get (f"/subcategories /{ subcategory ['id' ]} /categories" )
181216 self ._assert_related_collection (resp , "categories" )
182217
183- def test_get_subcategory_categories_populated (self , create_category , create_subcategory ):
184- category1 = create_category ("C1" ).get_json ()
185- category2 = create_category ("C2" ).get_json ()
186- subcategory = create_subcategory ("SC_Cats" , categories = [category1 ["id" ], category2 ["id" ]]).get_json ()
218+ def test_get_subcategory_categories_populated (self , create_category , create_subcategory , create_authenticated_headers ):
219+ headers = create_authenticated_headers ()
220+ category1 = create_category ("C1" , headers = headers ).get_json ()
221+ category2 = create_category ("C2" , headers = headers ).get_json ()
222+ subcategory = create_subcategory ("SC_Cats" , categories = [category1 ["id" ], category2 ["id" ]], headers = headers ).get_json ()
187223
188- resp = self .client .get (f"/subcategory /{ subcategory ['id' ]} /categories" )
224+ resp = self .client .get (f"/subcategories /{ subcategory ['id' ]} /categories" )
189225 self ._assert_related_collection (resp , "categories" , expected_ids = [category1 ["id" ], category2 ["id" ]])
190226
191227 def test_get_subcategory_products_empty (self , create_subcategory ):
192228 subcategory = create_subcategory ("SC_NoProd" ).get_json ()
193- resp = self .client .get (f"/subcategory /{ subcategory ['id' ]} /products" )
229+ resp = self .client .get (f"/subcategories /{ subcategory ['id' ]} /products" )
194230 self ._assert_related_collection (resp , "products" )
195231
196- def test_get_subcategory_products_populated_with_pagination (self , create_subcategory , create_product ):
197- subcategory = create_subcategory ("SC_Pag" ).get_json ()
232+ def test_get_subcategory_products_populated_with_pagination (self , create_subcategory , create_product , create_authenticated_headers ):
233+ headers = create_authenticated_headers ()
234+ subcategory = create_subcategory ("SC_Pag" , headers = headers ).get_json ()
198235
199236 product_ids = set ()
200237 for index in range (11 ):
201- product_resp = create_product (f"SP{ index } " , "desc" , subcategories = [subcategory ["id" ]])
238+ product_resp = create_product (f"SP{ index } " , "desc" , subcategories = [subcategory ["id" ]], headers = headers )
202239 product_ids .add (product_resp .get_json ().get ("id" ))
203240
204- page1 = self .client .get (f"/subcategory /{ subcategory ['id' ]} /products?page=1" ).get_json ()
205- page2 = self .client .get (f"/subcategory /{ subcategory ['id' ]} /products?page=2" ).get_json ()
241+ page1 = self .client .get (f"/subcategories /{ subcategory ['id' ]} /products?page=1" ).get_json ()
242+ page2 = self .client .get (f"/subcategories /{ subcategory ['id' ]} /products?page=2" ).get_json ()
206243 assert len (page1 ["products" ]) == 10
207244 assert len (page2 ["products" ]) == 1
208245
@@ -227,8 +264,8 @@ def test_get_product_subcategories_populated(self, create_product, create_subcat
227264 [
228265 "/categories/999999/subcategories" ,
229266 "/categories/999999/products" ,
230- "/subcategory /999999/categories" ,
231- "/subcategory /999999/products" ,
267+ "/subcategories /999999/categories" ,
268+ "/subcategories /999999/products" ,
232269 "/product/999999/subcategories" ,
233270 ],
234271 )
0 commit comments