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

Commit

Permalink
feat(ProductDiscount): add setValidFromAndUntil update action
Browse files Browse the repository at this point in the history
jenschude committed Jul 23, 2018

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent eba565c commit 1e54656
Showing 3 changed files with 87 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/Core/Builder/Update/ProductDiscountsActionBuilder.php
Original file line number Diff line number Diff line change
@@ -11,6 +11,7 @@
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountChangeValueAction;
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetDescriptionAction;
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidFromAction;
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidFromAndUntilAction;
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidUntilAction;

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

/**
* @link https://docs.commercetools.com/http-api-projects-productDiscounts.html#set-valid-from-and-until
* @param ProductDiscountSetValidFromAndUntilAction|callable $action
* @return $this
*/
public function setValidFromAndUntil($action = null)
{
$this->addAction($this->resolveAction(ProductDiscountSetValidFromAndUntilAction::class, $action));
return $this;
}

/**
* @link https://docs.commercetools.com/http-api-projects-productDiscounts.html#set-valid-until
* @param ProductDiscountSetValidUntilAction|callable $action
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php
/**
*/

namespace Commercetools\Core\Request\ProductDiscounts\Command;

use Commercetools\Core\Model\Common\Context;
use Commercetools\Core\Request\AbstractAction;
use Commercetools\Core\Model\Common\DateTimeDecorator;
use DateTime;

/**
* @package Commercetools\Core\Request\ProductDiscounts\Command
* @link https://docs.commercetools.com/http-api-projects-productDiscounts.html#set-valid-from-and-until
* @method string getAction()
* @method ProductDiscountSetValidFromAndUntilAction setAction(string $action = null)
* @method DateTimeDecorator getValidFrom()
* @method ProductDiscountSetValidFromAndUntilAction setValidFrom(DateTime $validFrom = null)
* @method DateTimeDecorator getValidUntil()
* @method ProductDiscountSetValidFromAndUntilAction setValidUntil(DateTime $validUntil = null)
*/
class ProductDiscountSetValidFromAndUntilAction extends AbstractAction
{
public function fieldDefinitions()
{
return [
'action' => [static::TYPE => 'string'],
'validFrom' => [
static::TYPE => DateTime::class,
static::DECORATOR => DateTimeDecorator::class
],
'validUntil' => [
static::TYPE => DateTime::class,
static::DECORATOR => DateTimeDecorator::class
],
];
}

/**
* @param array $data
* @param Context|callable $context
*/
public function __construct(array $data = [], $context = null)
{
parent::__construct($data, $context);
$this->setAction('setValidFromAndUntil');
}
}
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountChangeValueAction;
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetDescriptionAction;
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidFromAction;
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidFromAndUntilAction;
use Commercetools\Core\Request\ProductDiscounts\Command\ProductDiscountSetValidUntilAction;
use Commercetools\Core\Request\ProductDiscounts\ProductDiscountCreateRequest;
use Commercetools\Core\Request\ProductDiscounts\ProductDiscountDeleteRequest;
@@ -255,4 +256,30 @@ public function testSetValidUntil()
$this->assertSame($validUntil->format('c'), $result->getValidUntil()->format('c'));
$this->assertNotSame($productDiscount->getVersion(), $result->getVersion());
}

public function testSetValidFromAndUntil()
{
$draft = $this->getDraft('set-valid-from-until');
$productDiscount = $this->createProductDiscount($draft);


$validFrom = new \DateTime();
$validUntil = new \DateTime('+1 second');
$request = ProductDiscountUpdateRequest::ofIdAndVersion(
$productDiscount->getId(),
$productDiscount->getVersion()
)
->addAction(ProductDiscountSetValidFromAndUntilAction::of()->setValidFrom($validFrom)->setValidUntil($validUntil))
;
$response = $request->executeWithClient($this->getClient());
$result = $request->mapResponse($response);
$this->deleteRequest->setVersion($result->getVersion());

$this->assertInstanceOf(ProductDiscount::class, $result);
$validUntil->setTimezone(new \DateTimeZone('UTC'));
$validFrom->setTimezone(new \DateTimeZone('UTC'));
$this->assertSame($validUntil->format('c'), $result->getValidUntil()->format('c'));
$this->assertSame($validFrom->format('c'), $result->getValidFrom()->format('c'));
$this->assertNotSame($productDiscount->getVersion(), $result->getVersion());
}
}

0 comments on commit 1e54656

Please # to comment.