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

Commit

Permalink
feat(Extension): support timeoutInMs
Browse files Browse the repository at this point in the history
  • Loading branch information
nikossvnk committed May 21, 2019
1 parent 53ac8b0 commit 92fcc1b
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/Core/Builder/Update/ExtensionsActionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Commercetools\Core\Request\Extensions\Command\ExtensionChangeDestinationAction;
use Commercetools\Core\Request\Extensions\Command\ExtensionChangeTriggersAction;
use Commercetools\Core\Request\Extensions\Command\ExtensionSetKeyAction;
use Commercetools\Core\Request\Extensions\Command\ExtensionSetTimeoutInMsAction;

class ExtensionsActionBuilder
{
Expand Down Expand Up @@ -45,6 +46,17 @@ public function setKey($action = null)
return $this;
}

/**
* @link https://docs.commercetools.com/http-api-projects-api-extensions.html#set-timeoutinms
* @param ExtensionSetTimeoutInMsAction|callable $action
* @return $this
*/
public function setTimeoutInMs($action = null)
{
$this->addAction($this->resolveAction(ExtensionSetTimeoutInMsAction::class, $action));
return $this;
}

/**
* @return ExtensionsActionBuilder
*/
Expand Down
3 changes: 3 additions & 0 deletions src/Core/Model/Extension/Extension.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
* @method Extension setDestination(Destination $destination = null)
* @method TriggerCollection getTriggers()
* @method Extension setTriggers(TriggerCollection $triggers = null)
* @method int getTimeoutInMs()
* @method Extension setTimeoutInMs(int $timeoutInMs = null)
*/
class Extension extends Resource
{
Expand All @@ -44,6 +46,7 @@ public function fieldDefinitions()
'key' => [static::TYPE => 'string'],
'destination' => [static::TYPE => Destination::class],
'triggers' => [static::TYPE => TriggerCollection::class],
'timeoutInMs' => [static::TYPE => 'int'],
];
}
}
3 changes: 3 additions & 0 deletions src/Core/Model/Extension/ExtensionDraft.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
* @method ExtensionDraft setDestination(Destination $destination = null)
* @method TriggerCollection getTriggers()
* @method ExtensionDraft setTriggers(TriggerCollection $triggers = null)
* @method int getTimeoutInMs()
* @method ExtensionDraft setTimeoutInMs(int $timeoutInMs = null)
*/
class ExtensionDraft extends JsonObject
{
Expand All @@ -25,6 +27,7 @@ public function fieldDefinitions()
'key' => [static::TYPE => 'string'],
'destination' => [static::TYPE => Destination::class],
'triggers' => [static::TYPE => TriggerCollection::class],
'timeoutInMs' => [static::TYPE => 'int'],
];
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php
/**
*/

namespace Commercetools\Core\Request\Extensions\Command;

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

/**
* @package Commercetools\Core\Request\Extensions\Command
* @link https://docs.commercetools.com/http-api-projects-api-extensions.html#set-timeoutinms
* @method string getAction()
* @method ExtensionSetTimeoutInMsAction setAction(string $action = null)
* @method int getTimeoutInMs()
* @method ExtensionSetTimeoutInMsAction setTimeoutInMs(int $timeoutInMs = null)
*/
class ExtensionSetTimeoutInMsAction extends AbstractAction
{
public function fieldDefinitions()
{
return [
'action' => [static::TYPE => 'string'],
'timeoutInMs' => [static::TYPE => 'int'],
];
}

/**
* @param array $data
* @param Context|callable $context
*/
public function __construct(array $data = [], $context = null)
{
parent::__construct($data, $context);
$this->setAction('setTimeoutInMs');
}
}
30 changes: 30 additions & 0 deletions tests/integration/Extension/ExtensionUpdateRequestTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use Commercetools\Core\Request\Extensions\Command\ExtensionChangeDestinationAction;
use Commercetools\Core\Request\Extensions\Command\ExtensionChangeTriggersAction;
use Commercetools\Core\Request\Extensions\Command\ExtensionSetKeyAction;
use Commercetools\Core\Request\Extensions\Command\ExtensionSetTimeoutInMsAction;
use Commercetools\Core\Request\Extensions\ExtensionCreateRequest;
use Commercetools\Core\Request\Extensions\ExtensionDeleteRequest;

Expand Down Expand Up @@ -122,4 +123,33 @@ public function testChangeDestination()
$this->assertInstanceOf(Extension::class, $result);
$this->assertSame('https://api.commercetools.com', $result->getDestination()->getUrl());
}

public function testSetTimeoutInMs()
{
$draft = $this->getExtensionDraft();
$extension = $this->createExtension($draft);

$this->assertNull($extension->getTimeoutInMs());

$request = RequestBuilder::of()->extensions()->update($extension)
->addAction(
ExtensionSetTimeoutInMsAction::of()->setTimeoutInMs(1000)
);
$response = $this->getClient()->execute($request);
$result = $request->mapFromResponse($response);
$this->deleteRequest->setVersion($result->getVersion());

$this->assertNotSame($extension->getVersion(), $result->getVersion());
$this->assertInstanceOf(Extension::class, $result);
$this->assertSame(1000, $result->getTimeoutInMs());
}

public function testCreateWithTimeoutMs()
{
$draft = $this->getExtensionDraft();
$draft->setTimeoutInMs(600);
$extension = $this->createExtension($draft);

$this->assertSame(600, $extension->getTimeoutInMs());
}
}

0 comments on commit 92fcc1b

Please # to comment.