Skip to content

Commit c0a4099

Browse files
committed
Add tests
1 parent 147ca93 commit c0a4099

File tree

1 file changed

+215
-0
lines changed

1 file changed

+215
-0
lines changed

tests/Integration/ApiPlatform/DiscountEndpointTest.php

Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,11 @@ public static function getProtectedEndpoints(): iterable
223223
'/discount',
224224
];
225225

226+
yield 'update endpoint' => [
227+
'PATCH',
228+
'/discount/1',
229+
];
230+
226231
yield 'list endpoint' => [
227232
'GET',
228233
'/discounts',
@@ -232,5 +237,215 @@ public static function getProtectedEndpoints(): iterable
232237
'DELETE',
233238
'/discount/1',
234239
];
240+
241+
yield 'get conditions endpoint' => [
242+
'GET',
243+
'/discount/1/conditions',
244+
];
245+
246+
yield 'update conditions endpoint' => [
247+
'PATCH',
248+
'/discount/1/conditions',
249+
];
250+
}
251+
252+
/**
253+
* @depends testAddDiscountAndGet
254+
*
255+
* @param int $discountId
256+
*
257+
* @return int
258+
*/
259+
public function testPartialUpdateDiscount(int $discountId): int
260+
{
261+
$updatedDiscount = $this->partialUpdateItem('/discount/' . $discountId, [
262+
'description' => 'Updated description',
263+
], ['discount_write']);
264+
$this->assertEquals('Updated description', $updatedDiscount['description']);
265+
266+
$updatedDiscount = $this->partialUpdateItem('/discount/' . $discountId, [
267+
'code' => 'NEWCODE123',
268+
], ['discount_write']);
269+
$this->assertEquals('NEWCODE123', $updatedDiscount['code']);
270+
271+
$updatedDiscount = $this->partialUpdateItem('/discount/' . $discountId, [
272+
'priority' => 10,
273+
], ['discount_write']);
274+
$this->assertEquals(10, $updatedDiscount['priority']);
275+
276+
$updatedDiscount = $this->partialUpdateItem('/discount/' . $discountId, [
277+
'active' => true,
278+
], ['discount_write']);
279+
$this->assertEquals(true, $updatedDiscount['active']);
280+
281+
$updatedDiscount = $this->partialUpdateItem('/discount/' . $discountId, [
282+
'totalQuantity' => 100,
283+
], ['discount_write']);
284+
$this->assertEquals(100, $updatedDiscount['totalQuantity']);
285+
286+
$updatedDiscount = $this->partialUpdateItem('/discount/' . $discountId, [
287+
'quantityPerUser' => 5,
288+
], ['discount_write']);
289+
$this->assertEquals(5, $updatedDiscount['quantityPerUser']);
290+
291+
$updatedDiscount = $this->partialUpdateItem('/discount/' . $discountId, [
292+
'customerId' => 1,
293+
], ['discount_write']);
294+
$this->assertEquals(1, $updatedDiscount['customerId']);
295+
296+
$updatedDiscount = $this->partialUpdateItem('/discount/' . $discountId, [
297+
'highlightInCart' => true,
298+
], ['discount_write']);
299+
$this->assertEquals(true, $updatedDiscount['highlightInCart']);
300+
301+
$updatedDiscount = $this->partialUpdateItem('/discount/' . $discountId, [
302+
'allowPartialUse' => false,
303+
], ['discount_write']);
304+
$this->assertEquals(false, $updatedDiscount['allowPartialUse']);
305+
306+
$updatedDiscount = $this->partialUpdateItem('/discount/' . $discountId, [
307+
'names' => [
308+
'en-US' => 'Updated EN name',
309+
'fr-FR' => 'Updated FR name',
310+
],
311+
], ['discount_write']);
312+
$this->assertEquals('Updated EN name', $updatedDiscount['names']['en-US']);
313+
$this->assertEquals('Updated FR name', $updatedDiscount['names']['fr-FR']);
314+
315+
return $discountId;
316+
}
317+
318+
/**
319+
* @depends testPartialUpdateDiscount
320+
*
321+
* @param int $discountId
322+
*
323+
* @return int
324+
*/
325+
public function testGetUpdatedDiscount(int $discountId): int
326+
{
327+
$discount = $this->getItem('/discount/' . $discountId, ['discount_read']);
328+
$this->assertEquals('Updated description', $discount['description']);
329+
$this->assertEquals('NEWCODE123', $discount['code']);
330+
$this->assertEquals(10, $discount['priority']);
331+
$this->assertEquals(true, $discount['active']);
332+
$this->assertEquals(100, $discount['totalQuantity']);
333+
$this->assertEquals(5, $discount['quantityPerUser']);
334+
$this->assertEquals('Updated EN name', $discount['names']['en-US']);
335+
$this->assertEquals('Updated FR name', $discount['names']['fr-FR']);
336+
337+
return $discountId;
338+
}
339+
340+
/**
341+
* @depends testGetUpdatedDiscount
342+
*
343+
* @param int $discountId
344+
*
345+
* @return int
346+
*/
347+
public function testGetDiscountConditions(int $discountId): int
348+
{
349+
$conditions = $this->getItem('/discount/' . $discountId . '/conditions', ['discount_read']);
350+
$this->assertArrayHasKey('discountId', $conditions);
351+
$this->assertEquals($discountId, $conditions['discountId']);
352+
353+
return $discountId;
354+
}
355+
356+
/**
357+
* @depends testGetDiscountConditions
358+
*
359+
* @param int $discountId
360+
*
361+
* @return int
362+
*/
363+
public function testUpdateDiscountConditions(int $discountId): int
364+
{
365+
$updatedConditions = $this->partialUpdateItem('/discount/' . $discountId . '/conditions', [
366+
'minimumProductsQuantity' => 5,
367+
], ['discount_write']);
368+
$this->assertEquals(5, $updatedConditions['minimumProductsQuantity']);
369+
370+
$updatedConditions = $this->partialUpdateItem('/discount/' . $discountId . '/conditions', [
371+
'minimumAmount' => '50.00',
372+
'minimumAmountCurrencyId' => 1,
373+
'minimumAmountTaxIncluded' => true,
374+
'minimumAmountShippingIncluded' => false,
375+
], ['discount_write']);
376+
$this->assertEquals('50.00', $updatedConditions['minimumAmount']);
377+
$this->assertEquals(1, $updatedConditions['minimumAmountCurrencyId']);
378+
$this->assertEquals(true, $updatedConditions['minimumAmountTaxIncluded']);
379+
$this->assertEquals(false, $updatedConditions['minimumAmountShippingIncluded']);
380+
381+
$updatedConditions = $this->partialUpdateItem('/discount/' . $discountId . '/conditions', [
382+
'carrierIds' => [1, 2],
383+
], ['discount_write']);
384+
$this->assertIsArray($updatedConditions['carrierIds']);
385+
$this->assertCount(2, $updatedConditions['carrierIds']);
386+
$this->assertContains(1, $updatedConditions['carrierIds']);
387+
$this->assertContains(2, $updatedConditions['carrierIds']);
388+
389+
$updatedConditions = $this->partialUpdateItem('/discount/' . $discountId . '/conditions', [
390+
'countryIds' => [1, 2, 3],
391+
], ['discount_write']);
392+
$this->assertIsArray($updatedConditions['countryIds']);
393+
$this->assertCount(3, $updatedConditions['countryIds']);
394+
$this->assertContains(1, $updatedConditions['countryIds']);
395+
$this->assertContains(2, $updatedConditions['countryIds']);
396+
$this->assertContains(3, $updatedConditions['countryIds']);
397+
398+
return $discountId;
399+
}
400+
401+
/**
402+
* @depends testUpdateDiscountConditions
403+
*
404+
* @param int $discountId
405+
*
406+
* @return int
407+
*/
408+
public function testUpdateDiscountConditionsWithProductRules(int $discountId): int
409+
{
410+
$updatedConditions = $this->partialUpdateItem('/discount/' . $discountId . '/conditions', [
411+
'productConditions' => [
412+
[
413+
'quantity' => 3,
414+
'type' => 'products',
415+
'rules' => [
416+
[
417+
'type' => 'products',
418+
'itemIds' => [1, 2, 3],
419+
],
420+
],
421+
],
422+
],
423+
], ['discount_write']);
424+
$this->assertArrayHasKey('productConditions', $updatedConditions);
425+
$this->assertIsArray($updatedConditions['productConditions']);
426+
427+
if (!empty($updatedConditions['productConditions'])) {
428+
$this->assertGreaterThanOrEqual(1, count($updatedConditions['productConditions']));
429+
}
430+
431+
return $discountId;
432+
}
433+
434+
/**
435+
* @depends testUpdateDiscountConditionsWithProductRules
436+
*
437+
* @param int $discountId
438+
*
439+
* @return void
440+
*/
441+
public function testGetUpdatedDiscountConditions(int $discountId): void
442+
{
443+
$conditions = $this->getItem('/discount/' . $discountId . '/conditions', ['discount_read']);
444+
$this->assertEquals($discountId, $conditions['discountId']);
445+
$this->assertEquals(5, $conditions['minimumProductsQuantity']);
446+
$this->assertEquals('50.00', $conditions['minimumAmount']);
447+
$this->assertEquals(1, $conditions['minimumAmountCurrencyId']);
448+
$this->assertEquals(true, $conditions['minimumAmountTaxIncluded']);
449+
$this->assertEquals(false, $conditions['minimumAmountShippingIncluded']);
235450
}
236451
}

0 commit comments

Comments
 (0)