Skip to content
This repository was archived by the owner on Oct 24, 2023. It is now read-only.

Commit 1e54656

Browse files
committed
feat(ProductDiscount): add setValidFromAndUntil update action
1 parent eba565c commit 1e54656

File tree

3 files changed

+87
-0
lines changed

3 files changed

+87
-0
lines changed

src/Core/Builder/Update/ProductDiscountsActionBuilder.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountChangeValueAction;
1212
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetDescriptionAction;
1313
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidFromAction;
14+
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidFromAndUntilAction;
1415
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidUntilAction;
1516

1617
class ProductDiscountsActionBuilder
@@ -94,6 +95,17 @@ public function setValidFrom($action = null)
9495
return $this;
9596
}
9697

98+
/**
99+
* @link https://docs.commercetools.com/http-api-projects-productDiscounts.html#set-valid-from-and-until
100+
* @param ProductDiscountSetValidFromAndUntilAction|callable $action
101+
* @return $this
102+
*/
103+
public function setValidFromAndUntil($action = null)
104+
{
105+
$this->addAction($this->resolveAction(ProductDiscountSetValidFromAndUntilAction::class, $action));
106+
return $this;
107+
}
108+
97109
/**
98110
* @link https://docs.commercetools.com/http-api-projects-productDiscounts.html#set-valid-until
99111
* @param ProductDiscountSetValidUntilAction|callable $action
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
/**
3+
*/
4+
5+
namespace Commercetools\Core\Request\ProductDiscounts\Command;
6+
7+
use Commercetools\Core\Model\Common\Context;
8+
use Commercetools\Core\Request\AbstractAction;
9+
use Commercetools\Core\Model\Common\DateTimeDecorator;
10+
use DateTime;
11+
12+
/**
13+
* @package Commercetools\Core\Request\ProductDiscounts\Command
14+
* @link https://docs.commercetools.com/http-api-projects-productDiscounts.html#set-valid-from-and-until
15+
* @method string getAction()
16+
* @method ProductDiscountSetValidFromAndUntilAction setAction(string $action = null)
17+
* @method DateTimeDecorator getValidFrom()
18+
* @method ProductDiscountSetValidFromAndUntilAction setValidFrom(DateTime $validFrom = null)
19+
* @method DateTimeDecorator getValidUntil()
20+
* @method ProductDiscountSetValidFromAndUntilAction setValidUntil(DateTime $validUntil = null)
21+
*/
22+
class ProductDiscountSetValidFromAndUntilAction extends AbstractAction
23+
{
24+
public function fieldDefinitions()
25+
{
26+
return [
27+
'action' => [static::TYPE => 'string'],
28+
'validFrom' => [
29+
static::TYPE => DateTime::class,
30+
static::DECORATOR => DateTimeDecorator::class
31+
],
32+
'validUntil' => [
33+
static::TYPE => DateTime::class,
34+
static::DECORATOR => DateTimeDecorator::class
35+
],
36+
];
37+
}
38+
39+
/**
40+
* @param array $data
41+
* @param Context|callable $context
42+
*/
43+
public function __construct(array $data = [], $context = null)
44+
{
45+
parent::__construct($data, $context);
46+
$this->setAction('setValidFromAndUntil');
47+
}
48+
}

tests/integration/ProductDiscount/ProductDiscountUpdateRequestTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountChangeValueAction;
2020
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetDescriptionAction;
2121
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidFromAction;
22+
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidFromAndUntilAction;
2223
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidUntilAction;
2324
use Commercetools\Core\Request\ProductDiscounts\ProductDiscountCreateRequest;
2425
use Commercetools\Core\Request\ProductDiscounts\ProductDiscountDeleteRequest;
@@ -255,4 +256,30 @@ public function testSetValidUntil()
255256
$this->assertSame($validUntil->format('c'), $result->getValidUntil()->format('c'));
256257
$this->assertNotSame($productDiscount->getVersion(), $result->getVersion());
257258
}
259+
260+
public function testSetValidFromAndUntil()
261+
{
262+
$draft = $this->getDraft('set-valid-from-until');
263+
$productDiscount = $this->createProductDiscount($draft);
264+
265+
266+
$validFrom = new \DateTime();
267+
$validUntil = new \DateTime('+1 second');
268+
$request = ProductDiscountUpdateRequest::ofIdAndVersion(
269+
$productDiscount->getId(),
270+
$productDiscount->getVersion()
271+
)
272+
->addAction(ProductDiscountSetValidFromAndUntilAction::of()->setValidFrom($validFrom)->setValidUntil($validUntil))
273+
;
274+
$response = $request->executeWithClient($this->getClient());
275+
$result = $request->mapResponse($response);
276+
$this->deleteRequest->setVersion($result->getVersion());
277+
278+
$this->assertInstanceOf(ProductDiscount::class, $result);
279+
$validUntil->setTimezone(new \DateTimeZone('UTC'));
280+
$validFrom->setTimezone(new \DateTimeZone('UTC'));
281+
$this->assertSame($validUntil->format('c'), $result->getValidUntil()->format('c'));
282+
$this->assertSame($validFrom->format('c'), $result->getValidFrom()->format('c'));
283+
$this->assertNotSame($productDiscount->getVersion(), $result->getVersion());
284+
}
258285
}

0 commit comments

Comments
 (0)