support /api/v5/customers/{externalId}/subscriptions method
This commit is contained in:
parent
e72d179f35
commit
aff95ec791
@ -141,4 +141,45 @@ trait Customers
|
||||
"POST"
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update subscriptions a customer
|
||||
*
|
||||
* @param array $subscriptions subscriptions data
|
||||
* @param integer $customerId identifier customer
|
||||
* @param string $by (default: 'externalId')
|
||||
* @param string|null $site (default: null)
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||
* @throws \RetailCrm\Exception\CurlException
|
||||
*
|
||||
* @return \RetailCrm\Response\ApiResponse
|
||||
*/
|
||||
public function customerSubscriptionsUpdate(array $subscriptions, $customerId, $by = 'externalId', $site = null)
|
||||
{
|
||||
if (!count($subscriptions)) {
|
||||
throw new \InvalidArgumentException(
|
||||
'Parameter `subscriptions` must contains a data'
|
||||
);
|
||||
}
|
||||
|
||||
if (!is_int($customerId)) {
|
||||
throw new \InvalidArgumentException(
|
||||
'Parameter `customerId` must be an integer'
|
||||
);
|
||||
}
|
||||
|
||||
$this->checkIdParameter($by);
|
||||
|
||||
/* @noinspection PhpUndefinedMethodInspection */
|
||||
return $this->client->makeRequest(
|
||||
sprintf('/customer/%s/subscriptions', $customerId),
|
||||
'POST',
|
||||
$this->fillSite(
|
||||
$site,
|
||||
['subscriptions' => json_encode($subscriptions), 'by' => $by]
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,8 @@
|
||||
|
||||
namespace RetailCrm\Tests\Methods\Version5;
|
||||
|
||||
use RetailCrm\Http\Client;
|
||||
use RetailCrm\Response\ApiResponse;
|
||||
use RetailCrm\Test\TestCase;
|
||||
|
||||
/**
|
||||
@ -441,4 +443,45 @@ class ApiClientCustomersTest extends TestCase
|
||||
static::assertTrue($responseDelete->isSuccessful(), 'Note deleted');
|
||||
static::assertEquals(200, $responseDelete->getStatusCode());
|
||||
}
|
||||
|
||||
public function testCustomerSubscriptionsUpdate()
|
||||
{
|
||||
$clientMock = $this->getMockBuilder(\RetailCrm\Http\Client::class)
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(['makeRequest'])
|
||||
->getMock()
|
||||
;
|
||||
|
||||
$parameters = [
|
||||
'subscriptions' => [
|
||||
[
|
||||
'channel' => 'email',
|
||||
'active' => false
|
||||
]
|
||||
],
|
||||
'by' => 'externalId',
|
||||
'site' => 'test'
|
||||
];
|
||||
|
||||
$clientMock->expects(self::once())->method('makeRequest')->with(
|
||||
'/customer/123/subscriptions',
|
||||
'POST',
|
||||
[
|
||||
'subscriptions' => json_encode($parameters['subscriptions']),
|
||||
'by' => $parameters['by'],
|
||||
'site' => $parameters['site']
|
||||
]
|
||||
)->willReturn((new ApiResponse(200, json_encode(['success' => true])))->asJsonResponse());
|
||||
|
||||
$client = static::getMockedApiClient($clientMock);
|
||||
|
||||
$response = $client->request->customerSubscriptionsUpdate(
|
||||
$parameters['subscriptions'],
|
||||
123,
|
||||
$parameters['by'],
|
||||
$parameters['site']
|
||||
);
|
||||
|
||||
static::assertTrue($response->isSuccessful());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user