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

Commit 92fcc1b

Browse files
committed
feat(Extension): support timeoutInMs
1 parent 53ac8b0 commit 92fcc1b

File tree

5 files changed

+85
-0
lines changed

5 files changed

+85
-0
lines changed

src/Core/Builder/Update/ExtensionsActionBuilder.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Commercetools\Core\Request\Extensions\Command\ExtensionChangeDestinationAction;
88
use Commercetools\Core\Request\Extensions\Command\ExtensionChangeTriggersAction;
99
use Commercetools\Core\Request\Extensions\Command\ExtensionSetKeyAction;
10+
use Commercetools\Core\Request\Extensions\Command\ExtensionSetTimeoutInMsAction;
1011

1112
class ExtensionsActionBuilder
1213
{
@@ -45,6 +46,17 @@ public function setKey($action = null)
4546
return $this;
4647
}
4748

49+
/**
50+
* @link https://docs.commercetools.com/http-api-projects-api-extensions.html#set-timeoutinms
51+
* @param ExtensionSetTimeoutInMsAction|callable $action
52+
* @return $this
53+
*/
54+
public function setTimeoutInMs($action = null)
55+
{
56+
$this->addAction($this->resolveAction(ExtensionSetTimeoutInMsAction::class, $action));
57+
return $this;
58+
}
59+
4860
/**
4961
* @return ExtensionsActionBuilder
5062
*/

src/Core/Model/Extension/Extension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
* @method Extension setDestination(Destination $destination = null)
2626
* @method TriggerCollection getTriggers()
2727
* @method Extension setTriggers(TriggerCollection $triggers = null)
28+
* @method int getTimeoutInMs()
29+
* @method Extension setTimeoutInMs(int $timeoutInMs = null)
2830
*/
2931
class Extension extends Resource
3032
{
@@ -44,6 +46,7 @@ public function fieldDefinitions()
4446
'key' => [static::TYPE => 'string'],
4547
'destination' => [static::TYPE => Destination::class],
4648
'triggers' => [static::TYPE => TriggerCollection::class],
49+
'timeoutInMs' => [static::TYPE => 'int'],
4750
];
4851
}
4952
}

src/Core/Model/Extension/ExtensionDraft.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
* @method ExtensionDraft setDestination(Destination $destination = null)
1717
* @method TriggerCollection getTriggers()
1818
* @method ExtensionDraft setTriggers(TriggerCollection $triggers = null)
19+
* @method int getTimeoutInMs()
20+
* @method ExtensionDraft setTimeoutInMs(int $timeoutInMs = null)
1921
*/
2022
class ExtensionDraft extends JsonObject
2123
{
@@ -25,6 +27,7 @@ public function fieldDefinitions()
2527
'key' => [static::TYPE => 'string'],
2628
'destination' => [static::TYPE => Destination::class],
2729
'triggers' => [static::TYPE => TriggerCollection::class],
30+
'timeoutInMs' => [static::TYPE => 'int'],
2831
];
2932
}
3033

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
/**
3+
*/
4+
5+
namespace Commercetools\Core\Request\Extensions\Command;
6+
7+
use Commercetools\Core\Model\Common\Context;
8+
use Commercetools\Core\Request\AbstractAction;
9+
10+
/**
11+
* @package Commercetools\Core\Request\Extensions\Command
12+
* @link https://docs.commercetools.com/http-api-projects-api-extensions.html#set-timeoutinms
13+
* @method string getAction()
14+
* @method ExtensionSetTimeoutInMsAction setAction(string $action = null)
15+
* @method int getTimeoutInMs()
16+
* @method ExtensionSetTimeoutInMsAction setTimeoutInMs(int $timeoutInMs = null)
17+
*/
18+
class ExtensionSetTimeoutInMsAction extends AbstractAction
19+
{
20+
public function fieldDefinitions()
21+
{
22+
return [
23+
'action' => [static::TYPE => 'string'],
24+
'timeoutInMs' => [static::TYPE => 'int'],
25+
];
26+
}
27+
28+
/**
29+
* @param array $data
30+
* @param Context|callable $context
31+
*/
32+
public function __construct(array $data = [], $context = null)
33+
{
34+
parent::__construct($data, $context);
35+
$this->setAction('setTimeoutInMs');
36+
}
37+
}

tests/integration/Extension/ExtensionUpdateRequestTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Commercetools\Core\Request\Extensions\Command\ExtensionChangeDestinationAction;
1515
use Commercetools\Core\Request\Extensions\Command\ExtensionChangeTriggersAction;
1616
use Commercetools\Core\Request\Extensions\Command\ExtensionSetKeyAction;
17+
use Commercetools\Core\Request\Extensions\Command\ExtensionSetTimeoutInMsAction;
1718
use Commercetools\Core\Request\Extensions\ExtensionCreateRequest;
1819
use Commercetools\Core\Request\Extensions\ExtensionDeleteRequest;
1920

@@ -122,4 +123,33 @@ public function testChangeDestination()
122123
$this->assertInstanceOf(Extension::class, $result);
123124
$this->assertSame('https://api.commercetools.com', $result->getDestination()->getUrl());
124125
}
126+
127+
public function testSetTimeoutInMs()
128+
{
129+
$draft = $this->getExtensionDraft();
130+
$extension = $this->createExtension($draft);
131+
132+
$this->assertNull($extension->getTimeoutInMs());
133+
134+
$request = RequestBuilder::of()->extensions()->update($extension)
135+
->addAction(
136+
ExtensionSetTimeoutInMsAction::of()->setTimeoutInMs(1000)
137+
);
138+
$response = $this->getClient()->execute($request);
139+
$result = $request->mapFromResponse($response);
140+
$this->deleteRequest->setVersion($result->getVersion());
141+
142+
$this->assertNotSame($extension->getVersion(), $result->getVersion());
143+
$this->assertInstanceOf(Extension::class, $result);
144+
$this->assertSame(1000, $result->getTimeoutInMs());
145+
}
146+
147+
public function testCreateWithTimeoutMs()
148+
{
149+
$draft = $this->getExtensionDraft();
150+
$draft->setTimeoutInMs(600);
151+
$extension = $this->createExtension($draft);
152+
153+
$this->assertSame(600, $extension->getTimeoutInMs());
154+
}
125155
}

0 commit comments

Comments
 (0)