2323namespace PsApiResourcesTest \Integration \ApiPlatform ;
2424
2525use PrestaShop \PrestaShop \Core \Domain \Discount \Command \AddDiscountCommand ;
26+ use PrestaShop \PrestaShop \Core \Domain \Discount \Command \DeleteDiscountCommand ;
2627use PrestaShop \PrestaShop \Core \Domain \Discount \Query \GetDiscountForEditing ;
28+ use Tests \Resources \DatabaseDump ;
2729use Tests \Resources \Resetter \LanguageResetter ;
2830
2931class DiscountEndpointTest extends ApiTestCase
@@ -39,6 +41,20 @@ public static function setUpBeforeClass(): void
3941 parent ::setUpBeforeClass ();
4042
4143 LanguageResetter::resetLanguages ();
44+ DatabaseDump::restoreTables ([
45+ 'cart_cart_rule ' ,
46+ 'cart_rule ' ,
47+ 'cart_rule_carrier ' ,
48+ 'cart_rule_combination ' ,
49+ 'cart_rule_country ' ,
50+ 'cart_rule_group ' ,
51+ 'cart_rule_lang ' ,
52+ 'cart_rule_product_rule ' ,
53+ 'cart_rule_product_rule_group ' ,
54+ 'cart_rule_product_rule_value ' ,
55+ 'cart_rule_shop ' ,
56+ ]);
57+
4258 self ::addLanguageByLocale ('fr-FR ' );
4359 self ::createApiClient (['discount_write ' , 'discount_read ' ]);
4460 }
@@ -162,16 +178,60 @@ public function testGetDiscount(): void
162178 self ::assertResponseStatusCodeSame (200 );
163179
164180 $ decodedResponse = json_decode ($ response ->getContent (), true );
165-
166181 $ this ->assertNotFalse ($ decodedResponse );
167182 $ this ->assertArrayHasKey ('discountId ' , $ decodedResponse );
183+ $ this ->assertEquals (1 , $ decodedResponse ['priority ' ]);
184+ $ this ->assertFalse ($ decodedResponse ['active ' ]);
185+ $ this ->assertArrayHasKey ('validFrom ' , $ decodedResponse );
186+ $ this ->assertArrayHasKey ('validTo ' , $ decodedResponse );
187+ $ this ->assertEquals (1 , $ decodedResponse ['totalQuantity ' ]);
188+ $ this ->assertEquals (1 , $ decodedResponse ['quantityPerUser ' ]);
189+ $ this ->assertEquals ('' , $ decodedResponse ['description ' ]);
190+ $ this ->assertEquals ('' , $ decodedResponse ['code ' ]);
191+ $ this ->assertEquals ('0 ' , $ decodedResponse ['customerId ' ]);
192+ $ this ->assertFalse ($ decodedResponse ['highlightInCart ' ]);
193+ $ this ->assertTrue ($ decodedResponse ['allowPartialUse ' ]);
194+ $ this ->assertEquals (1 , $ decodedResponse ['currencyId ' ]);
195+ $ this ->assertEquals (0 , $ decodedResponse ['reductionProduct ' ]);
168196 $ this ->assertArrayHasKey (
169197 'type ' ,
170198 $ decodedResponse
171199 );
172200 $ this ->assertEquals ('cart_level ' , $ decodedResponse ['type ' ]);
173201 }
174202
203+ public function testListDiscount (): void
204+ {
205+ // skip test if class does not exist
206+ if (!class_exists (GetDiscountForEditing::class)) {
207+ $ this ->markTestSkipped ('GetDiscountForEditing class does not exist ' );
208+ }
209+
210+ $ bearerToken = $ this ->getBearerToken (['discount_read ' ]);
211+ $ response = static ::createClient ()->request ('GET ' , '/discounts ' , [
212+ 'auth_bearer ' => $ bearerToken ,
213+ ]);
214+ self ::assertResponseStatusCodeSame (200 );
215+
216+ $ decodedResponse = json_decode ($ response ->getContent (), true );
217+
218+ $ this ->assertCount (6 , $ decodedResponse );
219+ }
220+
221+ public function testDeleteDiscount (): void
222+ {
223+ // skip test if class does not exist
224+ if (!class_exists (DeleteDiscountCommand::class)) {
225+ $ this ->markTestSkipped ('GetDiscountForEditing class does not exist ' );
226+ }
227+
228+ $ bearerToken = $ this ->getBearerToken (['discount_write ' ]);
229+ static ::createClient ()->request ('DELETE ' , '/discount/1 ' , [
230+ 'auth_bearer ' => $ bearerToken ,
231+ ]);
232+ self ::assertResponseStatusCodeSame (204 );
233+ }
234+
175235 public function getProtectedEndpoints (): iterable
176236 {
177237 yield 'get endpoint ' => [
@@ -183,5 +243,15 @@ public function getProtectedEndpoints(): iterable
183243 'POST ' ,
184244 '/discount ' ,
185245 ];
246+
247+ yield 'list endpoint ' => [
248+ 'GET ' ,
249+ '/discounts '
250+ ];
251+
252+ yield 'delete endpoint ' => [
253+ 'DELETE ' ,
254+ '/discount/1 ' ,
255+ ];
186256 }
187257}
0 commit comments