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 PrestaShop \PrestaShop \Core \Grid \Definition \Factory \DiscountGridDefinitionFactory ;
29+ use Tests \Resources \DatabaseDump ;
2730use Tests \Resources \Resetter \LanguageResetter ;
2831
2932class DiscountEndpointTest extends ApiTestCase
@@ -39,6 +42,20 @@ public static function setUpBeforeClass(): void
3942 parent ::setUpBeforeClass ();
4043
4144 LanguageResetter::resetLanguages ();
45+ DatabaseDump::restoreTables ([
46+ 'cart_cart_rule ' ,
47+ 'cart_rule ' ,
48+ 'cart_rule_carrier ' ,
49+ 'cart_rule_combination ' ,
50+ 'cart_rule_country ' ,
51+ 'cart_rule_group ' ,
52+ 'cart_rule_lang ' ,
53+ 'cart_rule_product_rule ' ,
54+ 'cart_rule_product_rule_group ' ,
55+ 'cart_rule_product_rule_value ' ,
56+ 'cart_rule_shop ' ,
57+ ]);
58+
4259 self ::addLanguageByLocale ('fr-FR ' );
4360 self ::createApiClient (['discount_write ' , 'discount_read ' ]);
4461 }
@@ -162,16 +179,60 @@ public function testGetDiscount(): void
162179 self ::assertResponseStatusCodeSame (200 );
163180
164181 $ decodedResponse = json_decode ($ response ->getContent (), true );
165-
166182 $ this ->assertNotFalse ($ decodedResponse );
167183 $ this ->assertArrayHasKey ('discountId ' , $ decodedResponse );
184+ $ this ->assertEquals (1 , $ decodedResponse ['priority ' ]);
185+ $ this ->assertFalse ($ decodedResponse ['active ' ]);
186+ $ this ->assertArrayHasKey ('validFrom ' , $ decodedResponse );
187+ $ this ->assertArrayHasKey ('validTo ' , $ decodedResponse );
188+ $ this ->assertEquals (1 , $ decodedResponse ['totalQuantity ' ]);
189+ $ this ->assertEquals (1 , $ decodedResponse ['quantityPerUser ' ]);
190+ $ this ->assertEquals ('' , $ decodedResponse ['description ' ]);
191+ $ this ->assertEquals ('' , $ decodedResponse ['code ' ]);
192+ $ this ->assertEquals ('0 ' , $ decodedResponse ['customerId ' ]);
193+ $ this ->assertFalse ($ decodedResponse ['highlightInCart ' ]);
194+ $ this ->assertTrue ($ decodedResponse ['allowPartialUse ' ]);
195+ $ this ->assertEquals (1 , $ decodedResponse ['currencyId ' ]);
196+ $ this ->assertEquals (0 , $ decodedResponse ['reductionProduct ' ]);
168197 $ this ->assertArrayHasKey (
169198 'type ' ,
170199 $ decodedResponse
171200 );
172201 $ this ->assertEquals ('cart_level ' , $ decodedResponse ['type ' ]);
173202 }
174203
204+ public function testListDiscount (): void
205+ {
206+ // skip test if class does not exist
207+ if (!class_exists (DiscountGridDefinitionFactory::class)) {
208+ $ this ->markTestSkipped ('GetDiscountForEditing class does not exist ' );
209+ }
210+
211+ $ bearerToken = $ this ->getBearerToken (['discount_read ' ]);
212+ $ response = static ::createClient ()->request ('GET ' , '/discounts ' , [
213+ 'auth_bearer ' => $ bearerToken ,
214+ ]);
215+ self ::assertResponseStatusCodeSame (200 );
216+
217+ $ decodedResponse = json_decode ($ response ->getContent (), true );
218+
219+ $ this ->assertCount (6 , $ decodedResponse );
220+ }
221+
222+ public function testDeleteDiscount (): void
223+ {
224+ // skip test if class does not exist
225+ if (!class_exists (DeleteDiscountCommand::class)) {
226+ $ this ->markTestSkipped ('GetDiscountForEditing class does not exist ' );
227+ }
228+
229+ $ bearerToken = $ this ->getBearerToken (['discount_write ' ]);
230+ static ::createClient ()->request ('DELETE ' , '/discount/1 ' , [
231+ 'auth_bearer ' => $ bearerToken ,
232+ ]);
233+ self ::assertResponseStatusCodeSame (204 );
234+ }
235+
175236 public function getProtectedEndpoints (): iterable
176237 {
177238 yield 'get endpoint ' => [
@@ -183,5 +244,15 @@ public function getProtectedEndpoints(): iterable
183244 'POST ' ,
184245 '/discount ' ,
185246 ];
247+
248+ yield 'list endpoint ' => [
249+ 'GET ' ,
250+ '/discounts ' ,
251+ ];
252+
253+ yield 'delete endpoint ' => [
254+ 'DELETE ' ,
255+ '/discount/1 ' ,
256+ ];
186257 }
187258}
0 commit comments