parent
1901f1a81d
commit
2efa527817
4
.gitignore
vendored
4
.gitignore
vendored
@ -12,3 +12,7 @@ phpunit.xml
|
|||||||
.project
|
.project
|
||||||
.swp
|
.swp
|
||||||
/nbproject
|
/nbproject
|
||||||
|
.docker
|
||||||
|
docker-compose*.yml
|
||||||
|
.php_cs*
|
||||||
|
.phpunit*
|
@ -114,6 +114,82 @@ abstract class AbstractLoader
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check ID type
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function checkId($id)
|
||||||
|
{
|
||||||
|
if (!is_int($id)) {
|
||||||
|
throw new \InvalidArgumentException(
|
||||||
|
'Parameter `id` must be integer'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check pagination input parameters
|
||||||
|
*
|
||||||
|
* @param int $limit
|
||||||
|
* @param int $page
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function checkPaginationParameters($limit, $page)
|
||||||
|
{
|
||||||
|
$this->checkPaginationLimit($limit);
|
||||||
|
|
||||||
|
if (!is_int($page) || 1 > $page) {
|
||||||
|
throw new \InvalidArgumentException(
|
||||||
|
'Parameter `page` must be an integer and must be greater than 0'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check pagination input parameter `limit`
|
||||||
|
*
|
||||||
|
* @param int $limit
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function checkPaginationLimit($limit)
|
||||||
|
{
|
||||||
|
$allowedLimits = [20, 50, 100];
|
||||||
|
if (!is_int($limit) || !in_array($limit, $allowedLimits, true)) {
|
||||||
|
throw new \InvalidArgumentException(
|
||||||
|
'Parameter `limit` must be an integer and contain one of the values [20, 50, 100]'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check input parameter `site`
|
||||||
|
*
|
||||||
|
* @param string $site
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function checkSite($site)
|
||||||
|
{
|
||||||
|
if (!is_string($site) || '' === $site) {
|
||||||
|
throw new \InvalidArgumentException(
|
||||||
|
'Parameter `site` must contains a data'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fill params by site value
|
* Fill params by site value
|
||||||
*
|
*
|
||||||
|
@ -56,4 +56,5 @@ class ApiVersion5 extends AbstractLoader
|
|||||||
use V5\Telephony;
|
use V5\Telephony;
|
||||||
use V5\Users;
|
use V5\Users;
|
||||||
use V5\IntegrationPayments;
|
use V5\IntegrationPayments;
|
||||||
|
use V5\Loyalty;
|
||||||
}
|
}
|
||||||
|
399
lib/RetailCrm/Methods/V5/Loyalty.php
Normal file
399
lib/RetailCrm/Methods/V5/Loyalty.php
Normal file
@ -0,0 +1,399 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace RetailCrm\Methods\V5;
|
||||||
|
|
||||||
|
use InvalidArgumentException;
|
||||||
|
use RetailCrm\Response\ApiResponse;
|
||||||
|
|
||||||
|
trait Loyalty
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create Account
|
||||||
|
*
|
||||||
|
* @param array $loyaltyAccount
|
||||||
|
* @param string $site
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function accountCreate(array $loyaltyAccount, $site)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkSite($site);
|
||||||
|
|
||||||
|
if (empty($loyaltyAccount['phoneNumber']) && empty($loyaltyAccount['cardNumber'])) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'One of the parameters must be filled: `phoneNumber` or `cardNumber`'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($loyaltyAccount['customer'])) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'Parameter `customer` must contains a data'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
'/loyalty/account/create',
|
||||||
|
'POST',
|
||||||
|
$this->fillSite(
|
||||||
|
$site,
|
||||||
|
['loyaltyAccount' => json_encode($loyaltyAccount)]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Account info
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function accountGet($id)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkId($id);
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
"/loyalty/account/$id",
|
||||||
|
'GET'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Activate Account
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function accountActivate($id)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkId($id);
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
"/loyalty/account/$id/activate",
|
||||||
|
'POST'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write off Bonuses for participation in the loyalty program
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param array $bonus
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function bonusCharge($id, array $bonus)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkId($id);
|
||||||
|
|
||||||
|
if (empty($bonus['amount'])) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'Parameter `amount` must contains a data or must be greater than 0'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
"/loyalty/account/$id/bonus/charge",
|
||||||
|
'POST',
|
||||||
|
$bonus
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accrue Bonuses for participation in the loyalty program
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param array $bonus
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function bonusCredit($id, array $bonus)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkId($id);
|
||||||
|
|
||||||
|
if (empty($bonus['amount'])) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'Parameter `amount` must contains a data or must be greater than 0'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
"/loyalty/account/$id/bonus/credit",
|
||||||
|
'POST',
|
||||||
|
$bonus
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a Bonus account history to participate in the loyalty program
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param array $filter
|
||||||
|
* @param int $limit
|
||||||
|
* @param int $page
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function accountBonusOperationsGet($id, array $filter = [], $limit = 20, $page = 1)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkId($id);
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkPaginationParameters($limit, $page);
|
||||||
|
|
||||||
|
$parameters = [
|
||||||
|
'limit' => $limit,
|
||||||
|
'page' => $page,
|
||||||
|
];
|
||||||
|
if (!empty($filter)) {
|
||||||
|
$parameters['filter'] = $filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
"/loyalty/account/$id/bonus/operations",
|
||||||
|
'GET',
|
||||||
|
$parameters
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get detailed information about Bonuses
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param string $status
|
||||||
|
* @param array $filter
|
||||||
|
* @param int $limit
|
||||||
|
* @param int $page
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function accountBonusDetailsGet($id, $status, array $filter = [], $limit = 20, $page = 1)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkId($id);
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkPaginationParameters($limit, $page);
|
||||||
|
|
||||||
|
$allowedStatuses = [
|
||||||
|
'waiting_activation',
|
||||||
|
'burn_soon',
|
||||||
|
];
|
||||||
|
if (!in_array($status, $allowedStatuses, true)) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'Parameter `status` must take one of the values [`waiting_activation`,`burn_soon`]'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$parameters = [
|
||||||
|
'limit' => $limit,
|
||||||
|
'page' => $page,
|
||||||
|
];
|
||||||
|
if (!empty($filter)) {
|
||||||
|
$parameters['filter'] = $filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
"/loyalty/account/$id/bonus/$status/details",
|
||||||
|
'GET',
|
||||||
|
$parameters
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Editing participation in the loyalty program
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param array $loyaltyAccount
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function accountEdit($id, array $loyaltyAccount)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkId($id);
|
||||||
|
if (empty($loyaltyAccount)) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'Parameter `loyaltyAccount` must contains a data'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
"/loyalty/account/$id/edit",
|
||||||
|
'POST',
|
||||||
|
['loyaltyAccount' => \json_encode($loyaltyAccount)]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Accounts info
|
||||||
|
*
|
||||||
|
* @param array $filter
|
||||||
|
* @param int $limit
|
||||||
|
* @param int $page
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function accountsGet(array $filter = [], $limit = 20, $page = 1)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkPaginationParameters($limit, $page);
|
||||||
|
$parameters = [
|
||||||
|
'limit' => $limit,
|
||||||
|
'page' => $page,
|
||||||
|
];
|
||||||
|
if (!empty($filter)) {
|
||||||
|
$parameters['filter'] = $filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
'/loyalty/accounts',
|
||||||
|
'GET',
|
||||||
|
$parameters
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Bonus account history for all participants in all loyalty programs
|
||||||
|
*
|
||||||
|
* @param array $filter
|
||||||
|
* @param int $limit
|
||||||
|
* @param string|null $cursor
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function bonusOperationsGet($cursor, array $filter = [], $limit = 20)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkPaginationLimit($limit);
|
||||||
|
|
||||||
|
$parameters = [
|
||||||
|
'limit' => $limit,
|
||||||
|
];
|
||||||
|
if (!empty($filter)) {
|
||||||
|
$parameters['filter'] = $filter;
|
||||||
|
}
|
||||||
|
if (!empty($cursor)) {
|
||||||
|
$parameters['cursor'] = $cursor;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
'/loyalty/bonus/operations',
|
||||||
|
'GET',
|
||||||
|
$parameters
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the maximum customer discount
|
||||||
|
*
|
||||||
|
* @param string $site
|
||||||
|
* @param array $order
|
||||||
|
* @param int|null $bonuses
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function calculate($site, array $order, $bonuses)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkSite($site);
|
||||||
|
if (empty($order)) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'Parameter `order` must contains a data'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (null !== $bonuses && !is_int($bonuses) && !is_float($bonuses)) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'Parameter `bonuses` must be an integer or float'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = $this->fillSite($site, ['order' => \json_encode($order)]);
|
||||||
|
if (null !== $bonuses) {
|
||||||
|
$data['bonuses'] = $bonuses;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
'/loyalty/calculate',
|
||||||
|
'POST',
|
||||||
|
$data
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of loyalty programs
|
||||||
|
*
|
||||||
|
* @param array $filter
|
||||||
|
* @param int $limit
|
||||||
|
* @param int $page
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function loyaltiesGet(array $filter = [], $limit = 20, $page = 1)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkPaginationParameters($limit, $page);
|
||||||
|
$parameters = [
|
||||||
|
'limit' => $limit,
|
||||||
|
'page' => $page,
|
||||||
|
];
|
||||||
|
if (!empty($filter)) {
|
||||||
|
$parameters['filter'] = $filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
'/loyalty/loyalties',
|
||||||
|
'GET',
|
||||||
|
$parameters
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get information about the loyalty program
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function loyaltyGet($id)
|
||||||
|
{
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
$this->checkId($id);
|
||||||
|
|
||||||
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
|
return $this->client->makeRequest(
|
||||||
|
"/loyalty/loyalties/$id",
|
||||||
|
'GET'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
723
tests/RetailCrm/Tests/Methods/Version5/ApiClientLoyaltyTest.php
Normal file
723
tests/RetailCrm/Tests/Methods/Version5/ApiClientLoyaltyTest.php
Normal file
@ -0,0 +1,723 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace RetailCrm\Tests\Methods\Version5;
|
||||||
|
|
||||||
|
use RetailCrm\Test\TestCase;
|
||||||
|
|
||||||
|
class ApiClientLoyaltyTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider accountCreateProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param array $account
|
||||||
|
* @param string $site
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testAccountCreate(array $account, $site, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->accountCreate($account, $site);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function accountCreateProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success' => [
|
||||||
|
[
|
||||||
|
'phoneNumber' => 111111111,
|
||||||
|
'customer' => ['id' => 6218],
|
||||||
|
],
|
||||||
|
'gray_sale_3',
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_data' => [
|
||||||
|
[
|
||||||
|
'customer' => ['id' => 6218],
|
||||||
|
],
|
||||||
|
'gray_sale_3',
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
'error_site' => [
|
||||||
|
[
|
||||||
|
'phoneNumber' => 111111111,
|
||||||
|
'customer' => ['id' => 6218],
|
||||||
|
],
|
||||||
|
'',
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider accountGetProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testAccountGet($id, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->accountGet($id);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function accountGetProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success' => [
|
||||||
|
246,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error' => [
|
||||||
|
null,
|
||||||
|
'InvalidArgumentException'
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider accountActivateProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testAccountActivate($id, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->accountActivate($id);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function accountActivateProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success' => [
|
||||||
|
246,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error' => [
|
||||||
|
null,
|
||||||
|
'InvalidArgumentException'
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider bonusChargeProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param array $bonus
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testBonusCharge($id, array $bonus, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->bonusCharge($id, $bonus);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function bonusChargeProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success' => [
|
||||||
|
246,
|
||||||
|
['amount' => 50],
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_bonus' => [
|
||||||
|
246,
|
||||||
|
['comment' => 'test'],
|
||||||
|
'InvalidArgumentException'
|
||||||
|
],
|
||||||
|
'error_id' => [
|
||||||
|
null,
|
||||||
|
['amount' => 50],
|
||||||
|
'InvalidArgumentException'
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider bonusCreditProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param array $bonus
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testBonusCredit($id, array $bonus, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->bonusCredit($id, $bonus);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function bonusCreditProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success' => [
|
||||||
|
246,
|
||||||
|
['amount' => 50],
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_bonus' => [
|
||||||
|
246,
|
||||||
|
['comment' => 'test'],
|
||||||
|
'InvalidArgumentException'
|
||||||
|
],
|
||||||
|
'error_id' => [
|
||||||
|
null,
|
||||||
|
['amount' => 50],
|
||||||
|
'InvalidArgumentException'
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider accountBonusOperationsGetProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param array $filter
|
||||||
|
* @param int $limit
|
||||||
|
* @param int $page
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testAccountBonusOperationsGet($id, array $filter, $limit, $page, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->accountBonusOperationsGet($id, $filter, $limit, $page);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function accountBonusOperationsGetProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success_1' => [
|
||||||
|
246,
|
||||||
|
['createdAtFrom' => '2023-05-02 17:29:03'],
|
||||||
|
100,
|
||||||
|
1,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'success_2' => [
|
||||||
|
246,
|
||||||
|
[],
|
||||||
|
50,
|
||||||
|
1,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_limit' => [
|
||||||
|
246,
|
||||||
|
[],
|
||||||
|
35,
|
||||||
|
2,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
'error_page' => [
|
||||||
|
246,
|
||||||
|
[],
|
||||||
|
50,
|
||||||
|
0,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
'error_id' => [
|
||||||
|
null,
|
||||||
|
[],
|
||||||
|
50,
|
||||||
|
0,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider accountBonusDetailsGetProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param string $status
|
||||||
|
* @param array $filter
|
||||||
|
* @param int $limit
|
||||||
|
* @param int $page
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testAccountBonusDetailsGet($id, $status, array $filter, $limit, $page, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->accountBonusDetailsGet($id, $status, $filter, $limit, $page);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function accountBonusDetailsGetProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success_1' => [
|
||||||
|
246,
|
||||||
|
'waiting_activation',
|
||||||
|
['date' => '2023-11-11 18:29:03'],
|
||||||
|
100,
|
||||||
|
1,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'success_2' => [
|
||||||
|
246,
|
||||||
|
'burn_soon',
|
||||||
|
[],
|
||||||
|
50,
|
||||||
|
1,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_status' => [
|
||||||
|
246,
|
||||||
|
'something',
|
||||||
|
[],
|
||||||
|
100,
|
||||||
|
1,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
'error_limit' => [
|
||||||
|
246,
|
||||||
|
'waiting_activation',
|
||||||
|
[],
|
||||||
|
35,
|
||||||
|
2,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
'error_page' => [
|
||||||
|
246,
|
||||||
|
'waiting_activation',
|
||||||
|
[],
|
||||||
|
50,
|
||||||
|
0,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
'error_id' => [
|
||||||
|
null,
|
||||||
|
'waiting_activation',
|
||||||
|
[],
|
||||||
|
50,
|
||||||
|
0,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider accountEditProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param array $account
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testAccountEdit($id, array $account, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->accountEdit($id, $account);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function accountEditProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success' => [
|
||||||
|
246,
|
||||||
|
['cardNumber' => 'xxx-001'],
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_data' => [
|
||||||
|
246,
|
||||||
|
[],
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
'error_id' => [
|
||||||
|
null,
|
||||||
|
['cardNumber' => 'xxx-001'],
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider accountsGetProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param array $filter
|
||||||
|
* @param int $limit
|
||||||
|
* @param int $page
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testAccountsGet(array $filter, $limit, $page, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->accountsGet($filter, $limit, $page);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function accountsGetProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success_1' => [
|
||||||
|
['sites' => ['gray_sale_3', 'lp-prerelize-demo']],
|
||||||
|
100,
|
||||||
|
1,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'success_2' => [
|
||||||
|
[],
|
||||||
|
100,
|
||||||
|
1,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_limit' => [
|
||||||
|
[],
|
||||||
|
11,
|
||||||
|
1,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
'error_page' => [
|
||||||
|
[],
|
||||||
|
50,
|
||||||
|
0,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider bonusOperationsGetProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param string|null $cursor
|
||||||
|
* @param array $filter
|
||||||
|
* @param int $limit
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testBonusOperationsGet($cursor, array $filter, $limit, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->bonusOperationsGet($cursor, $filter, $limit);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function bonusOperationsGetProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success' => [
|
||||||
|
null,
|
||||||
|
['loyalties' => [44, 6]],
|
||||||
|
20,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_limit' => [
|
||||||
|
null,
|
||||||
|
[],
|
||||||
|
11,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider calculateProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param string|null $site
|
||||||
|
* @param array $order
|
||||||
|
* @param int $bonuses
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testCalculate($site, array $order, $bonuses, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->calculate($site, $order, $bonuses);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function calculateProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success' => [
|
||||||
|
'gray_sale_3',
|
||||||
|
self::getOrderForCalculate(),
|
||||||
|
0,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_bonuses' => [
|
||||||
|
'gray_sale_3',
|
||||||
|
self::getOrderForCalculate(),
|
||||||
|
'test',
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
'error_site' => [
|
||||||
|
null,
|
||||||
|
self::getOrderForCalculate(),
|
||||||
|
0,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private static function getOrderForCalculate()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
"customer" => [
|
||||||
|
"id" => 6260,
|
||||||
|
],
|
||||||
|
"privilegeType" => "loyalty_level",
|
||||||
|
"discountManualPercent" => 10,
|
||||||
|
"applyRound" => true,
|
||||||
|
"items" => [
|
||||||
|
[
|
||||||
|
"initialPrice" => 1000,
|
||||||
|
"discountManualPercent" => 10,
|
||||||
|
"quantity" => 1,
|
||||||
|
"offer" => [
|
||||||
|
"id" => 2539665,
|
||||||
|
"externalId" => "9339",
|
||||||
|
"xmlId" => "9339",
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider loyaltiesGetProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param array $filter
|
||||||
|
* @param int $limit
|
||||||
|
* @param int $page
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testLoyaltiesGet(array $filter, $limit, $page, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->loyaltiesGet($filter, $limit, $page);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function loyaltiesGetProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success_1' => [
|
||||||
|
['active' => true],
|
||||||
|
20,
|
||||||
|
1,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'success_2' => [
|
||||||
|
[],
|
||||||
|
20,
|
||||||
|
1,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_limit' => [
|
||||||
|
['active' => true],
|
||||||
|
11,
|
||||||
|
1,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
'error_page' => [
|
||||||
|
['active' => true],
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider loyaltyGetProvider
|
||||||
|
*
|
||||||
|
* @group loyalty_v5
|
||||||
|
*
|
||||||
|
* @param int|null $id
|
||||||
|
* @param string|null $exceptionClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testLoyaltyGet($id, $exceptionClass)
|
||||||
|
{
|
||||||
|
$client = static::getApiClient();
|
||||||
|
if (!empty($exceptionClass)) {
|
||||||
|
$this->expectException($exceptionClass);
|
||||||
|
}
|
||||||
|
$response = $client->request->loyaltyGet($id);
|
||||||
|
if (empty($exceptionClass)) {
|
||||||
|
static::assertTrue(in_array($response->getStatusCode(), [200, 201]));
|
||||||
|
static::assertTrue($response->isSuccessful());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
public function loyaltyGetProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'success' => [
|
||||||
|
44,
|
||||||
|
null,
|
||||||
|
],
|
||||||
|
'error_id' => [
|
||||||
|
null,
|
||||||
|
'InvalidArgumentException',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
@ -65,7 +65,7 @@ class ApiClientNotificationsTest extends TestCase
|
|||||||
],
|
],
|
||||||
'error_users_filled' => [
|
'error_users_filled' => [
|
||||||
static function () {
|
static function () {
|
||||||
return self::getErrorNotification();;
|
return self::getErrorNotification();
|
||||||
},
|
},
|
||||||
'InvalidArgumentException',
|
'InvalidArgumentException',
|
||||||
],
|
],
|
||||||
|
Loading…
Reference in New Issue
Block a user