1
0
mirror of synced 2024-11-24 22:36:06 +03:00

Merge pull request #20 from gwinn/master

merge v4 to master
This commit is contained in:
Alex Lushpai 2016-07-22 02:37:53 +04:00 committed by GitHub
commit 49f253c228
20 changed files with 870 additions and 304 deletions

19
.travis.yml Normal file
View File

@ -0,0 +1,19 @@
language: php
cache:
directories:
- $HOME/.composer/cache
php:
- '5.3'
- '5.4'
- '5.5'
- '5.6'
- '7.0'
before_script:
- flags="--prefer-dist --no-dev"
- composer install $flags
- wget -c -O phpunit.xml https://db.tt/uMin8U9t
script: phpunit

View File

@ -1,6 +1,6 @@
# retailCRM API PHP client # retailCRM API PHP client
PHP-client for [retailCRM API](http://www.retailcrm.pro/docs/Developers/ApiVersion3). PHP-client for [retailCRM API](http://www.retailcrm.pro/docs/Developers/ApiVersion4).
Use [API documentation](http://retailcrm.github.io/api-client-php) Use [API documentation](http://retailcrm.github.io/api-client-php)
@ -15,7 +15,7 @@ Use [API documentation](http://retailcrm.github.io/api-client-php)
2) Run into your project directory: 2) Run into your project directory:
```bash ```bash
composer require retailcrm/api-client-php ~3.0.0 --no-dev composer require retailcrm/api-client-php ~4.0.0 --no-dev
``` ```
If you have not used `composer` before, include autoloader into your project. If you have not used `composer` before, include autoloader into your project.

View File

@ -1,6 +1,6 @@
# PHP-клиент для retailCRM API # PHP-клиент для retailCRM API
PHP-клиент для работы с [retailCRM API](http://www.retailcrm.ru/docs/Developers/ApiVersion3). PHP-клиент для работы с [retailCRM API](http://www.retailcrm.ru/docs/Developers/ApiVersion4).
Рекомендуем обращаться к [документации](http://retailcrm.github.io/api-client-php) по библиотеке, в частности по классу [RetailCrm\ApiClient](http://retailcrm.github.io/api-client-php/class-RetailCrm.ApiClient.html). Рекомендуем обращаться к [документации](http://retailcrm.github.io/api-client-php) по библиотеке, в частности по классу [RetailCrm\ApiClient](http://retailcrm.github.io/api-client-php/class-RetailCrm.ApiClient.html).
@ -15,7 +15,7 @@ PHP-клиент для работы с [retailCRM API](http://www.retailcrm.ru/
2) Выполните в папке проекта: 2) Выполните в папке проекта:
```bash ```bash
composer require retailcrm/api-client-php ~3.0.0 --no-dev composer require retailcrm/api-client-php ~4.0.0 --no-dev
``` ```
В конфиг `composer.json` вашего проекта будет добавлена библиотека `retailcrm/api-client-php`, которая установится в папку `vendor/`. При отсутствии файла конфига или папки с вендорами они будут созданы. В конфиг `composer.json` вашего проекта будет добавлена библиотека `retailcrm/api-client-php`, которая установится в папку `vendor/`. При отсутствии файла конфига или папки с вендорами они будут созданы.

View File

@ -15,16 +15,6 @@
"php": ">=5.3.0", "php": ">=5.3.0",
"ext-curl": "*" "ext-curl": "*"
}, },
"require-dev": {
"phpunit/phpunit": "5.2.*",
"phpunit/php-code-coverage": "3.3.0",
"phpunit/php-invoker": "1.1.4",
"phpmd/phpmd": "2.4.*",
"sebastian/phpcpd": "2.0.*",
"sebastian/phpdcd": "1.0.*",
"squizlabs/php_codesniffer": "2.5.*",
"apigen/apigen": "4.1.*"
},
"support": { "support": {
"email": "support@retailcrm.pro" "email": "support@retailcrm.pro"
}, },
@ -33,7 +23,7 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.0.x-dev" "dev-master": "4.0.x-dev"
} }
}, },
"config": { "config": {

View File

@ -9,7 +9,7 @@
* @package RetailCrm * @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
namespace RetailCrm; namespace RetailCrm;
@ -26,12 +26,12 @@ use RetailCrm\Response\ApiResponse;
* @package RetailCrm * @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
class ApiClient class ApiClient
{ {
const VERSION = 'v3'; const VERSION = 'v4';
protected $client; protected $client;
@ -53,7 +53,7 @@ class ApiClient
*/ */
public function __construct($url, $apiKey, $site = null) public function __construct($url, $apiKey, $site = null)
{ {
if ('/' !== substr($url, strlen($url) - 1, 1)) { if ('/' !== $url[strlen($url) - 1]) {
$url .= '/'; $url .= '/';
} }
@ -63,6 +63,56 @@ class ApiClient
$this->siteCode = $site; $this->siteCode = $site;
} }
/**
* Returns users list
*
* @param array $filter
* @param null $page
* @param null $limit
*
* @throws \RetailCrm\Exception\InvalidJsonException
* @throws \RetailCrm\Exception\CurlException
* @throws \InvalidArgumentException
*
* @return ApiResponse
*/
public function usersList(array $filter = array(), $page = null, $limit = null)
{
$parameters = array();
if (count($filter)) {
$parameters['filter'] = $filter;
}
if (null !== $page) {
$parameters['page'] = (int) $page;
}
if (null !== $limit) {
$parameters['limit'] = (int) $limit;
}
return $this->client->makeRequest(
'/users',
Client::METHOD_GET,
$parameters
);
}
/**
* Returns user data
*
* @param integer $id user ID
*
* @throws \RetailCrm\Exception\InvalidJsonException
* @throws \RetailCrm\Exception\CurlException
* @throws \InvalidArgumentException
*
* @return ApiResponse
*/
public function usersGet($id)
{
return $this->client->makeRequest("/users/$id", Client::METHOD_GET);
}
/** /**
* Returns filtered orders list * Returns filtered orders list
* *
@ -151,53 +201,6 @@ class ApiClient
); );
} }
/**
* Returns a orders history
*
* @param \DateTime $startDate (default: null)
* @param \DateTime $endDate (default: null)
* @param int $limit (default: 100)
* @param int $offset (default: 0)
* @param bool $skipMyChanges (default: true)
*
* @throws \InvalidArgumentException
* @throws \RetailCrm\Exception\CurlException
* @throws \RetailCrm\Exception\InvalidJsonException
*
* @return ApiResponse
*/
public function ordersHistory(
\DateTime $startDate = null,
\DateTime $endDate = null,
$limit = 100,
$offset = 0,
$skipMyChanges = true
) {
$parameters = array();
if ($startDate) {
$parameters['startDate'] = $startDate->format('Y-m-d H:i:s');
}
if ($endDate) {
$parameters['endDate'] = $endDate->format('Y-m-d H:i:s');
}
if ($limit) {
$parameters['limit'] = (int) $limit;
}
if ($offset) {
$parameters['offset'] = (int) $offset;
}
if ($skipMyChanges) {
$parameters['skipMyChanges'] = (bool) $skipMyChanges;
}
return $this->client->makeRequest(
'/orders/history',
Client::METHOD_GET,
$parameters
);
}
/** /**
* Returns statuses of the orders * Returns statuses of the orders
* *
@ -210,10 +213,8 @@ class ApiClient
* *
* @return ApiResponse * @return ApiResponse
*/ */
public function ordersStatuses( public function ordersStatuses(array $ids = array(), array $externalIds = array())
array $ids = array(), {
array $externalIds = array()
) {
$parameters = array(); $parameters = array();
if (count($ids)) { if (count($ids)) {
@ -320,6 +321,35 @@ class ApiClient
); );
} }
/**
* Get orders history
* @param array $filter
* @param null $page
* @param null $limit
*
* @return ApiResponse
*/
public function ordersHistory(array $filter = array(), $page = null, $limit = null)
{
$parameters = array();
if (count($filter)) {
$parameters['filter'] = $filter;
}
if (null !== $page) {
$parameters['page'] = (int) $page;
}
if (null !== $limit) {
$parameters['limit'] = (int) $limit;
}
return $this->client->makeRequest(
'/orders/history',
Client::METHOD_GET,
$parameters
);
}
/** /**
* Returns filtered customers list * Returns filtered customers list
* *
@ -333,11 +363,8 @@ class ApiClient
* *
* @return ApiResponse * @return ApiResponse
*/ */
public function customersList( public function customersList(array $filter = array(), $page = null, $limit = null)
array $filter = array(), {
$page = null,
$limit = null
) {
$parameters = array(); $parameters = array();
if (count($filter)) { if (count($filter)) {
@ -500,6 +527,35 @@ class ApiClient
); );
} }
/**
* Get customers history
* @param array $filter
* @param null $page
* @param null $limit
*
* @return ApiResponse
*/
public function customersHistory(array $filter = array(), $page = null, $limit = null)
{
$parameters = array();
if (count($filter)) {
$parameters['filter'] = $filter;
}
if (null !== $page) {
$parameters['page'] = (int) $page;
}
if (null !== $limit) {
$parameters['limit'] = (int) $limit;
}
return $this->client->makeRequest(
'/customers/history',
Client::METHOD_GET,
$parameters
);
}
/** /**
* Get orders assembly list * Get orders assembly list
* *
@ -513,11 +569,8 @@ class ApiClient
* *
* @return ApiResponse * @return ApiResponse
*/ */
public function ordersPacksList( public function ordersPacksList(array $filter = array(), $page = null, $limit = null)
array $filter = array(), {
$page = null,
$limit = null
) {
$parameters = array(); $parameters = array();
if (count($filter)) { if (count($filter)) {
@ -577,11 +630,8 @@ class ApiClient
* *
* @return ApiResponse * @return ApiResponse
*/ */
public function ordersPacksHistory( public function ordersPacksHistory(array $filter = array(), $page = null, $limit = null)
array $filter = array(), {
$page = null,
$limit = null
) {
$parameters = array(); $parameters = array();
if (count($filter)) { if (count($filter)) {
@ -687,11 +737,8 @@ class ApiClient
* *
* @return ApiResponse * @return ApiResponse
*/ */
public function storeInventories( public function storeInventories(array $filter = array(), $page = null, $limit = null)
array $filter = array(), {
$page = null,
$limit = null
) {
$parameters = array(); $parameters = array();
if (count($filter)) { if (count($filter)) {
@ -711,6 +758,56 @@ class ApiClient
); );
} }
/**
* Get store settings
*
* @param string $code get settings code
*
* @return ApiResponse
* @throws \RetailCrm\Exception\InvalidJsonException
* @throws \RetailCrm\Exception\CurlException
* @throws \InvalidArgumentException
*
* @return ApiResponse
*/
public function storeSettingsGet($code)
{
if (empty($code)) {
throw new \InvalidArgumentException('Parameter `code` must be set');
}
return $this->client->makeRequest(
"/store/settings/$code",
Client::METHOD_GET
);
}
/**
* Edit store configuration
*
* @param array $configuration
*
* @throws \RetailCrm\Exception\InvalidJsonException
* @throws \RetailCrm\Exception\CurlException
* @throws \InvalidArgumentException
*
* @return ApiResponse
*/
public function storeSettingsEdit(array $configuration)
{
if (!count($configuration) || empty($configuration['code'])) {
throw new \InvalidArgumentException(
'Parameter `configuration` must contains a data & configuration `code` must be set'
);
}
return $this->client->makeRequest(
sprintf('/store/settings/%s/edit', $configuration['code']),
Client::METHOD_POST,
$configuration
);
}
/** /**
* Upload store inventories * Upload store inventories
* *
@ -738,6 +835,120 @@ class ApiClient
); );
} }
/**
* Get products
*
* @param array $filter (default: array())
* @param int $page (default: null)
* @param int $limit (default: null)
*
* @throws \InvalidArgumentException
* @throws \RetailCrm\Exception\CurlException
* @throws \RetailCrm\Exception\InvalidJsonException
*
* @return ApiResponse
*/
public function storeProducts(array $filter = array(), $page = null, $limit = null)
{
$parameters = array();
if (count($filter)) {
$parameters['filter'] = $filter;
}
if (null !== $page) {
$parameters['page'] = (int) $page;
}
if (null !== $limit) {
$parameters['limit'] = (int) $limit;
}
return $this->client->makeRequest(
'/store/products',
Client::METHOD_GET,
$parameters
);
}
/**
* Get delivery settings
*
* @param string $code
*
* @throws \InvalidArgumentException
* @throws \RetailCrm\Exception\CurlException
* @throws \RetailCrm\Exception\InvalidJsonException
*
* @return ApiResponse
*/
public function deliverySettingsGet($code)
{
if (empty($code)) {
throw new \InvalidArgumentException('Parameter `code` must be set');
}
return $this->client->makeRequest(
"/delivery/generic/setting/$code",
Client::METHOD_GET
);
}
/**
* Edit delivery configuration
*
* @param array $configuration
*
* @throws \RetailCrm\Exception\InvalidJsonException
* @throws \RetailCrm\Exception\CurlException
* @throws \InvalidArgumentException
*
* @return ApiResponse
*/
public function deliverySettingsEdit(array $configuration)
{
if (!count($configuration) || empty($configuration['code'])) {
throw new \InvalidArgumentException(
'Parameter `configuration` must contains a data & configuration `code` must be set'
);
}
return $this->client->makeRequest(
sprintf('/delivery/generic/settings/%s/edit', $configuration['code']),
Client::METHOD_POST,
$configuration
);
}
/**
* Delivery tracking update
*
* @param string $code
* @param array $statusUpdate
*
* @throws \RetailCrm\Exception\InvalidJsonException
* @throws \RetailCrm\Exception\CurlException
* @throws \InvalidArgumentException
*
* @return ApiResponse
*/
public function deliveryTracking($code, array $statusUpdate)
{
if (empty($code)) {
throw new \InvalidArgumentException('Parameter `code` must be set');
}
if (!count($statusUpdate)) {
throw new \InvalidArgumentException(
'Parameter `statusUpdate` must contains a data'
);
}
return $this->client->makeRequest(
sprintf('/delivery/generic/%s/tracking', $code),
Client::METHOD_POST,
$statusUpdate
);
}
/** /**
* Returns available county list * Returns available county list
* *
@ -1209,29 +1420,64 @@ class ApiClient
} }
/** /**
* Telephony settings * Get telephony settings
*
* @param string $code
*
* @throws \RetailCrm\Exception\InvalidJsonException
* @throws \RetailCrm\Exception\CurlException
* @throws \InvalidArgumentException
*
* @return ApiResponse
*/
public function telephonySettingsGet($code)
{
if (empty($code)) {
throw new \InvalidArgumentException('Parameter `code` must be set');
}
return $this->client->makeRequest(
"/telephony/setting/$code",
Client::METHOD_GET
);
}
/**
* Edit telephony settings
* *
* @param string $code symbolic code * @param string $code symbolic code
* @param string $clientId client id * @param string $clientId client id
* @param boolean $active telephony activity * @param boolean $active telephony activity
* @param mixed $makeCallUrl service init url
* @param mixed $name service name * @param mixed $name service name
* @param mixed $makeCallUrl service init url
* @param mixed $image service logo url(svg file) * @param mixed $image service logo url(svg file)
* *
* @throws \InvalidArgumentException * @param array $additionalCodes
* @throws \RetailCrm\Exception\CurlException * @param array $externalPhones
* @throws \RetailCrm\Exception\InvalidJsonException * @param bool $allowEdit
* @param bool $inputEventSupported
* @param bool $outputEventSupported
* @param bool $hangupEventSupported
* @param bool $changeUserStatusUrl
* *
* @return ApiResponse * @return ApiResponse
*/ */
public function telephonySettings( public function telephonySettingsEdit(
$code, $code,
$clientId, $clientId,
$active = false, $active = false,
$makeCallUrl = false,
$name = false, $name = false,
$image = false $makeCallUrl = false,
) { $image = false,
$additionalCodes = array(),
$externalPhones = array(),
$allowEdit = false,
$inputEventSupported = false,
$outputEventSupported = false,
$hangupEventSupported = false,
$changeUserStatusUrl = false
)
{
if (!isset($code)) { if (!isset($code)) {
throw new \InvalidArgumentException('Code must be set'); throw new \InvalidArgumentException('Code must be set');
} }
@ -1254,39 +1500,50 @@ class ApiClient
throw new \InvalidArgumentException('name must be set'); throw new \InvalidArgumentException('name must be set');
} }
if (isset($makeCallUrl)) {
$parameters['makeCallUrl'] = $makeCallUrl;
}
if (isset($name)) { if (isset($name)) {
$parameters['name'] = $name; $parameters['name'] = $name;
} }
if (isset($makeCallUrl)) {
$parameters['makeCallUrl'] = $makeCallUrl;
}
if (isset($image)) { if (isset($image)) {
$parameters['image'] = $image; $parameters['image'] = $image;
} }
return $this->client->makeRequest( if (isset($additionalCodes)) {
"/telephony/setting/$code", $parameters['additionalCodes'] = $additionalCodes;
Client::METHOD_POST, }
$parameters
); if (isset($externalPhones)) {
$parameters['externalPhones'] = $externalPhones;
}
if (isset($allowEdit)) {
$parameters['allowEdit'] = $allowEdit;
}
if (isset($inputEventSupported)) {
$parameters['inputEventSupported'] = $inputEventSupported;
}
if (isset($outputEventSupported)) {
$parameters['outputEventSupported'] = $outputEventSupported;
}
if (isset($hangupEventSupported)) {
$parameters['hangupEventSupported'] = $hangupEventSupported;
}
if (isset($changeUserStatusUrl)) {
$parameters['changeUserStatusUrl'] = $changeUserStatusUrl;
} }
/**
* Update CRM basic statistic
*
* @throws \InvalidArgumentException
* @throws \RetailCrm\Exception\CurlException
* @throws \RetailCrm\Exception\InvalidJsonException
*
* @return ApiResponse
*/
public function statisticUpdate()
{
return $this->client->makeRequest( return $this->client->makeRequest(
'/statistic/update', "/telephony/setting/$code/edit",
Client::METHOD_GET Client::METHOD_POST,
array('configuration' => json_encode($parameters))
); );
} }
@ -1295,40 +1552,49 @@ class ApiClient
* *
* @param string $phone phone number * @param string $phone phone number
* @param string $type call type * @param string $type call type
* @param string $code additional phone code * @param array $codes
* @param string $status call status * @param string $hangupStatus
* * @param string $externalPhone
* @throws \InvalidArgumentException * @param array $webAnalyticsData
* @throws \RetailCrm\Exception\CurlException
* @throws \RetailCrm\Exception\InvalidJsonException
* *
* @return ApiResponse * @return ApiResponse
* @internal param string $code additional phone code
* @internal param string $status call status
*
*/ */
public function telephonyCallEvent($phone, $type, $code, $status) public function telephonyCallEvent(
$phone,
$type,
$codes,
$hangupStatus,
$externalPhone = null,
$webAnalyticsData = array()
)
{ {
if (!isset($phone)) { if (!isset($phone)) {
throw new \InvalidArgumentException('Phone number must be set'); throw new \InvalidArgumentException('Phone number must be set');
} }
$parameters['phone'] = $phone;
if (!isset($type)) { if (!isset($type)) {
throw new \InvalidArgumentException('Type must be set (in|out|hangup)'); throw new \InvalidArgumentException('Type must be set (in|out|hangup)');
} }
$parameters['type'] = $type; if (empty($codes)) {
throw new \InvalidArgumentException('Codes array must be set');
if (!isset($code)) {
throw new \InvalidArgumentException('Code must be set');
} }
$parameters['code'] = $code; $parameters['phone'] = $phone;
$parameters['hangupStatus'] = $status; $parameters['type'] = $type;
$parameters['codes'] = $codes;
$parameters['hangupStatus'] = $hangupStatus;
$parameters['callExternalId'] = $externalPhone;
$parameters['webAnalyticsData'] = $webAnalyticsData;
return $this->client->makeRequest( return $this->client->makeRequest(
'/telephony/call/event', '/telephony/call/event',
Client::METHOD_POST, Client::METHOD_POST,
$parameters array('event' => json_encode($parameters))
); );
} }
@ -1386,6 +1652,23 @@ class ApiClient
); );
} }
/**
* Update CRM basic statistic
*
* @throws \InvalidArgumentException
* @throws \RetailCrm\Exception\CurlException
* @throws \RetailCrm\Exception\InvalidJsonException
*
* @return ApiResponse
*/
public function statisticUpdate()
{
return $this->client->makeRequest(
'/statistic/update',
Client::METHOD_GET
);
}
/** /**
* Return current site * Return current site
* *

View File

@ -9,7 +9,7 @@
* @package RetailCrm * @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
namespace RetailCrm\Exception; namespace RetailCrm\Exception;
@ -23,7 +23,7 @@ namespace RetailCrm\Exception;
* @package RetailCrm * @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
class CurlException extends \RuntimeException class CurlException extends \RuntimeException
{ {

View File

@ -9,7 +9,7 @@
* @package RetailCrm * @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
namespace RetailCrm\Exception; namespace RetailCrm\Exception;
@ -23,7 +23,7 @@ namespace RetailCrm\Exception;
* @package RetailCrm * @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
class InvalidJsonException extends \DomainException class InvalidJsonException extends \DomainException
{ {

View File

@ -9,7 +9,7 @@
* @package RetailCrm * @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
namespace RetailCrm\Http; namespace RetailCrm\Http;
@ -27,7 +27,7 @@ use RetailCrm\Response\ApiResponse;
* @package RetailCrm * @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
class Client class Client
{ {

View File

@ -9,7 +9,7 @@
* @package RetailCrm * @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
namespace RetailCrm\Response; namespace RetailCrm\Response;
@ -25,7 +25,7 @@ use RetailCrm\Exception\InvalidJsonException;
* @package RetailCrm * @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
class ApiResponse implements \ArrayAccess class ApiResponse implements \ArrayAccess
{ {

View File

@ -6,16 +6,13 @@
colors="true" colors="true"
verbose="true" verbose="true"
processIsolation="false" processIsolation="false"
stopOnFailure="true"> stopOnFailure="false">
<!-- Dummy values used to provide credentials. No need to change these. --> <!-- Dummy values used to provide credentials. No need to change these. -->
<php> <php>
<server name="CRM_URL" value="foo" /> <server name="CRM_URL" value="https://demo.retailcrm.ru" />
<server name="CRM_API_KEY" value="bar" /> <server name="CRM_API_KEY" value="nSBFWecViONG5c96wUQQgZzHkilTnaa6" />
<server name="CRM_SITE" value="zoo" /> <server name="CRM_USER_ID" value="1" />
<server name="CRM_STORE" value="moo" />
<server name="CRM_PACK_ITEM" value="boo" />
<server name="CRM_PACK_QUANTITY" value="goo" />
</php> </php>
<testsuites> <testsuites>

View File

@ -1,15 +1,36 @@
<?php <?php
/**
* PHP version 5.3
*
* API client customers test class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
namespace RetailCrm\Tests; namespace RetailCrm\Tests;
use RetailCrm\Test\TestCase; use RetailCrm\Test\TestCase;
/**
* Class ApiClientCustomersTest
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
class ApiClientCustomersTest extends TestCase class ApiClientCustomersTest extends TestCase
{ {
const FIRST_NAME = 'Иннокентий'; const FIRST_NAME = 'Иннокентий';
/** /**
* @group integration * @group customers
*/ */
public function testCustomersCreate() public function testCustomersCreate()
{ {
@ -32,7 +53,7 @@ class ApiClientCustomersTest extends TestCase
} }
/** /**
* @group unit * @group customers
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testCustomersCreateExceptionEmpty() public function testCustomersCreateExceptionEmpty()
@ -43,7 +64,7 @@ class ApiClientCustomersTest extends TestCase
} }
/** /**
* @group integration * @group customers
* @depends testCustomersCreate * @depends testCustomersCreate
*/ */
public function testCustomersGet(array $ids) public function testCustomersGet(array $ids)
@ -53,13 +74,13 @@ class ApiClientCustomersTest extends TestCase
$response = $client->customersGet(678678678); $response = $client->customersGet(678678678);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(404, $response->getStatusCode()); $this->assertEquals(404, $response->getStatusCode());
$this->assertFalse($response->success); $this->assertFalse($response->isSuccessful());
$response = $client->customersGet($ids['id'], 'id'); $response = $client->customersGet($ids['id'], 'id');
$customerById = $response->customer; $customerById = $response->customer;
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
$this->assertEquals(self::FIRST_NAME, $response->customer['firstName']); $this->assertEquals(self::FIRST_NAME, $response->customer['firstName']);
$response = $client->customersGet($ids['externalId'], 'externalId'); $response = $client->customersGet($ids['externalId'], 'externalId');
@ -69,7 +90,7 @@ class ApiClientCustomersTest extends TestCase
} }
/** /**
* @group unit * @group customers
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testCustomersGetException() public function testCustomersGetException()
@ -80,7 +101,7 @@ class ApiClientCustomersTest extends TestCase
} }
/** /**
* @group integration * @group customers
* @depends testCustomersGet * @depends testCustomersGet
*/ */
public function testCustomersEdit(array $ids) public function testCustomersEdit(array $ids)
@ -103,19 +124,11 @@ class ApiClientCustomersTest extends TestCase
)); ));
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
$response = $client->customersEdit(array(
'externalId' => 'c-edit-' . time(),
'lastName' => '12345',
));
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(201, $response->getStatusCode());
$this->assertTrue($response->success);
} }
/** /**
* @group unit * @group customers
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testCustomersEditExceptionEmpty() public function testCustomersEditExceptionEmpty()
@ -126,7 +139,7 @@ class ApiClientCustomersTest extends TestCase
} }
/** /**
* @group unit * @group customers
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testCustomersEditException() public function testCustomersEditException()
@ -137,7 +150,7 @@ class ApiClientCustomersTest extends TestCase
} }
/** /**
* @group integration * @group customers
*/ */
public function testCustomersList() public function testCustomersList()
{ {
@ -164,7 +177,7 @@ class ApiClientCustomersTest extends TestCase
} }
/** /**
* @group unit * @group customers
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testCustomersFixExternalIdsException() public function testCustomersFixExternalIdsException()
@ -175,7 +188,7 @@ class ApiClientCustomersTest extends TestCase
} }
/** /**
* @group integration * @group customers
*/ */
public function testCustomersFixExternalIds() public function testCustomersFixExternalIds()
{ {
@ -225,7 +238,7 @@ class ApiClientCustomersTest extends TestCase
} }
/** /**
* @group unit * @group customers
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testCustomersUploadExceptionEmpty() public function testCustomersUploadExceptionEmpty()
@ -236,7 +249,7 @@ class ApiClientCustomersTest extends TestCase
} }
/** /**
* @group integration * @group customers
*/ */
public function testCustomersUpload() public function testCustomersUpload()
{ {

View File

@ -1,15 +1,36 @@
<?php <?php
/**
* PHP version 5.3
*
* API client orders test class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
namespace RetailCrm\Tests; namespace RetailCrm\Tests;
use RetailCrm\Test\TestCase; use RetailCrm\Test\TestCase;
/**
* Class ApiClientOrdersTest
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
class ApiClientOrdersTest extends TestCase class ApiClientOrdersTest extends TestCase
{ {
const FIRST_NAME = 'Иннокентий'; const FIRST_NAME = 'Иннокентий';
/** /**
* @group integration * @group orders
*/ */
public function testOrdersCreate() public function testOrdersCreate()
{ {
@ -32,7 +53,7 @@ class ApiClientOrdersTest extends TestCase
} }
/** /**
* @group unit * @group orders
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testOrdersCreateExceptionEmpty() public function testOrdersCreateExceptionEmpty()
@ -43,7 +64,7 @@ class ApiClientOrdersTest extends TestCase
} }
/** /**
* @group integration * @group orders
* @depends testOrdersCreate * @depends testOrdersCreate
*/ */
public function testOrdersStatuses(array $ids) public function testOrdersStatuses(array $ids)
@ -53,19 +74,19 @@ class ApiClientOrdersTest extends TestCase
$response = $client->ordersStatuses(); $response = $client->ordersStatuses();
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(400, $response->getStatusCode()); $this->assertEquals(400, $response->getStatusCode());
$this->assertFalse($response->success); $this->assertFalse($response->isSuccessful());
$response = $client->ordersStatuses(array(), array('asdf')); $response = $client->ordersStatuses(array(), array('asdf'));
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
$orders = $response->orders; $orders = $response->orders;
$this->assertEquals(0, sizeof($orders)); $this->assertEquals(0, sizeof($orders));
$response = $client->ordersStatuses(array(), array($ids['externalId'])); $response = $client->ordersStatuses(array(), array($ids['externalId']));
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
$orders = $response->orders; $orders = $response->orders;
$this->assertEquals(1, sizeof($orders)); $this->assertEquals(1, sizeof($orders));
$this->assertEquals('new', $orders[0]['status']); $this->assertEquals('new', $orders[0]['status']);
@ -73,20 +94,20 @@ class ApiClientOrdersTest extends TestCase
$response = $client->ordersStatuses(array($ids['id']), array($ids['externalId'])); $response = $client->ordersStatuses(array($ids['id']), array($ids['externalId']));
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
$orders = $response->orders; $orders = $response->orders;
$this->assertEquals(1, sizeof($orders)); $this->assertEquals(1, sizeof($orders));
$response = $client->ordersStatuses(array($ids['id'])); $response = $client->ordersStatuses(array($ids['id']));
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
$orders = $response->orders; $orders = $response->orders;
$this->assertEquals(1, sizeof($orders)); $this->assertEquals(1, sizeof($orders));
} }
/** /**
* @group integration * @group orders
* @depends testOrdersCreate * @depends testOrdersCreate
*/ */
public function testOrdersGet(array $ids) public function testOrdersGet(array $ids)
@ -96,13 +117,13 @@ class ApiClientOrdersTest extends TestCase
$response = $client->ordersGet(678678678); $response = $client->ordersGet(678678678);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(404, $response->getStatusCode()); $this->assertEquals(404, $response->getStatusCode());
$this->assertFalse($response->success); $this->assertFalse($response->isSuccessful());
$response = $client->ordersGet($ids['id'], 'id'); $response = $client->ordersGet($ids['id'], 'id');
$orderById = $response->order; $orderById = $response->order;
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
$this->assertEquals(self::FIRST_NAME, $response->order['firstName']); $this->assertEquals(self::FIRST_NAME, $response->order['firstName']);
$response = $client->ordersGet($ids['externalId'], 'externalId'); $response = $client->ordersGet($ids['externalId'], 'externalId');
@ -112,7 +133,7 @@ class ApiClientOrdersTest extends TestCase
} }
/** /**
* @group unit * @group orders
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testOrdersGetException() public function testOrdersGetException()
@ -123,7 +144,7 @@ class ApiClientOrdersTest extends TestCase
} }
/** /**
* @group integration * @group orders
* @depends testOrdersGet * @depends testOrdersGet
*/ */
public function testOrdersEdit(array $ids) public function testOrdersEdit(array $ids)
@ -146,19 +167,11 @@ class ApiClientOrdersTest extends TestCase
)); ));
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
$response = $client->ordersEdit(array(
'externalId' => time(),
'lastName' => '12345',
));
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(201, $response->getStatusCode());
$this->assertTrue($response->success);
} }
/** /**
* @group unit * @group orders
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testOrdersEditExceptionEmpty() public function testOrdersEditExceptionEmpty()
@ -169,7 +182,7 @@ class ApiClientOrdersTest extends TestCase
} }
/** /**
* @group unit * @group orders
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testOrdersEditException() public function testOrdersEditException()
@ -180,7 +193,7 @@ class ApiClientOrdersTest extends TestCase
} }
/** /**
* @group integration * @group orders
*/ */
public function testOrdersHistory() public function testOrdersHistory()
{ {
@ -189,19 +202,11 @@ class ApiClientOrdersTest extends TestCase
$response = $client->ordersHistory(); $response = $client->ordersHistory();
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
$this->assertTrue(
isset($response['orders']),
'API returns orders history'
);
$this->assertTrue(
isset($response['generatedAt']),
'API returns generatedAt in orders history'
);
} }
/** /**
* @group integration * @group orders
*/ */
public function testOrdersList() public function testOrdersList()
{ {
@ -221,14 +226,10 @@ class ApiClientOrdersTest extends TestCase
$response = $client->ordersList(array('paymentStatus' => 'paid'), 1); $response = $client->ordersList(array('paymentStatus' => 'paid'), 1);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertTrue(
$response->isSuccessful(),
'API returns orders list'
);
} }
/** /**
* @group unit * @group orders
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testOrdersFixExternalIdsException() public function testOrdersFixExternalIdsException()
@ -239,7 +240,7 @@ class ApiClientOrdersTest extends TestCase
} }
/** /**
* @group integration * @group orders
] */ ] */
public function testOrdersFixExternalIds() public function testOrdersFixExternalIds()
{ {
@ -283,7 +284,7 @@ class ApiClientOrdersTest extends TestCase
} }
/** /**
* @group unit * @group orders
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testOrdersUploadExceptionEmpty() public function testOrdersUploadExceptionEmpty()
@ -294,7 +295,7 @@ class ApiClientOrdersTest extends TestCase
} }
/** /**
* @group integration * @group orders
*/ */
public function testOrdersUpload() public function testOrdersUpload()
{ {

View File

@ -1,13 +1,37 @@
<?php <?php
/**
* PHP version 5.3
*
* API client packs test class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
namespace RetailCrm\Tests; namespace RetailCrm\Tests;
use RetailCrm\Test\TestCase; use RetailCrm\Test\TestCase;
/**
* Class ApiClientPacksTest
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
class ApiClientPacksTest extends TestCase class ApiClientPacksTest extends TestCase
{ {
/** /**
* @group integration * Test packs history
*
* @group packs
* @return void
*/ */
public function testOrdersPacksHistory() public function testOrdersPacksHistory()
{ {
@ -28,32 +52,17 @@ class ApiClientPacksTest extends TestCase
} }
/** /**
* @group integration * Test packs failed create
*/ *
public function testOrdersPacksCreate() * @group packs
{ * @return void
$client = static::getApiClient();
$pack = array(
'itemId' => $_SERVER['CRM_PACK_ITEM'],
'quantity' => $_SERVER['CRM_PACK_QUANTITY'],
'store' => $_SERVER['CRM_STORE']
);
$response = $client->ordersPacksCreate($pack);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(201, $response->getStatusCode());
$this->assertTrue($response->success);
}
/**
* @group integration
*/ */
public function testOrdersPacksCreateFailed() public function testOrdersPacksCreateFailed()
{ {
$client = static::getApiClient(); $client = static::getApiClient();
$pack = array( $pack = array(
'itemId' => 12, 'itemId' => 12,
'store' => $_SERVER['CRM_STORE'], 'store' => 'test',
'quantity' => 2 'quantity' => 2
); );
@ -62,30 +71,4 @@ class ApiClientPacksTest extends TestCase
$this->assertEquals(400, $response->getStatusCode()); $this->assertEquals(400, $response->getStatusCode());
$this->assertFalse($response->success); $this->assertFalse($response->success);
} }
/**
* @group integration
*/
public function testOrdersPacksGet()
{
$client = static::getApiClient();
$response = $client->ordersPacksGet(1);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success);
}
/**
* @group integration
*/
public function testOrdersPacksDelete()
{
$client = static::getApiClient();
$response = $client->ordersPacksDelete(1);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success);
}
} }

View File

@ -1,13 +1,34 @@
<?php <?php
/**
* PHP version 5.3
*
* API client references test class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
namespace RetailCrm\Tests; namespace RetailCrm\Tests;
use RetailCrm\Test\TestCase; use RetailCrm\Test\TestCase;
/**
* Class ApiClientReferenceTest
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
class ApiClientReferenceTest extends TestCase class ApiClientReferenceTest extends TestCase
{ {
/** /**
* @group integration * @group reference
* @dataProvider getListDictionaries * @dataProvider getListDictionaries
* @param $name * @param $name
*/ */
@ -25,7 +46,7 @@ class ApiClientReferenceTest extends TestCase
} }
/** /**
* @group integration * @group reference
* @dataProvider getEditDictionaries * @dataProvider getEditDictionaries
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
@ -38,7 +59,7 @@ class ApiClientReferenceTest extends TestCase
} }
/** /**
* @group integration * @group reference
* @dataProvider getEditDictionaries * @dataProvider getEditDictionaries
*/ */
public function testEditing($name) public function testEditing($name)
@ -69,7 +90,7 @@ class ApiClientReferenceTest extends TestCase
} }
/** /**
* @group integration * @group reference
* @group site * @group site
*/ */
public function testSiteEditing() public function testSiteEditing()

View File

@ -1,17 +1,50 @@
<?php <?php
/**
* PHP version 5.3
*
* API client store test class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
namespace RetailCrm\Tests; namespace RetailCrm\Tests;
use RetailCrm\Test\TestCase; use RetailCrm\Test\TestCase;
/** /**
* Class ApiClientStoreTest * Class ApiClientStoreTest
* @package RetailCrm\Tests *
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
class ApiClientStoreTest extends TestCase class ApiClientStoreTest extends TestCase
{ {
const SNAME = 'Test Store';
const SCODE = 'test-store';
/** /**
* @group integration * @group store
*/
public function testStoreCreate()
{
$client = static::getApiClient();
$response = $client->storesEdit(array('name' => self::SNAME, 'code' => self::SCODE));
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertTrue(in_array($response->getStatusCode(), array(200, 201)));
$this->assertTrue($response->isSuccessful());
}
/**
* @group store
*/ */
public function testStoreInventories() public function testStoreInventories()
{ {
@ -20,7 +53,7 @@ class ApiClientStoreTest extends TestCase
$response = $client->storeInventories(); $response = $client->storeInventories();
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
$this->assertTrue( $this->assertTrue(
isset($response['offers']), isset($response['offers']),
'API returns orders assembly history' 'API returns orders assembly history'
@ -28,7 +61,7 @@ class ApiClientStoreTest extends TestCase
} }
/** /**
* @group unit * @group store
* @expectedException \InvalidArgumentException * @expectedException \InvalidArgumentException
*/ */
public function testStoreInventoriesUploadExceptionEmpty() public function testStoreInventoriesUploadExceptionEmpty()
@ -38,7 +71,7 @@ class ApiClientStoreTest extends TestCase
} }
/** /**
* @group integration * @group store
*/ */
public function testStoreInventoriesUpload() public function testStoreInventoriesUpload()
{ {
@ -52,7 +85,7 @@ class ApiClientStoreTest extends TestCase
'externalId' => $externalIdA, 'externalId' => $externalIdA,
'stores' => array( 'stores' => array(
array( array(
'code' => $_SERVER['CRM_STORE'], 'code' => self::SCODE,
'available' => 10, 'available' => 10,
'purchasePrice' => 1700 'purchasePrice' => 1700
) )
@ -62,13 +95,14 @@ class ApiClientStoreTest extends TestCase
'externalId' => $externalIdB, 'externalId' => $externalIdB,
'stores' => array( 'stores' => array(
array( array(
'code' => $_SERVER['CRM_STORE'], 'code' => self::SCODE,
'available' => 20, 'available' => 20,
'purchasePrice' => 1500 'purchasePrice' => 1500
) )
) )
), ),
)); ));
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertTrue($response->isSuccessful()); $this->assertTrue($response->isSuccessful());
} }

View File

@ -1,5 +1,17 @@
<?php <?php
/**
* PHP version 5.3
*
* API client telephony test class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
namespace RetailCrm\Tests; namespace RetailCrm\Tests;
use RetailCrm\Test\TestCase; use RetailCrm\Test\TestCase;
@ -10,33 +22,138 @@ use RetailCrm\Test\TestCase;
* @package RetailCrm\Tests * @package RetailCrm\Tests
* @author RetailCrm <integration@retailcrm.ru> * @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License * @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion3 * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/ */
class ApiClientTelephonyTest extends TestCase class ApiClientTelephonyTest extends TestCase
{ {
const TEL_CODE = 'telephony-code';
const TEL_CLIENT = '123';
const TEL_IMAGE = 'http://www.mec.ph/horizon/wp-content/uploads/2011/11/telephony.svg';
/** /**
* Settings test * Settings Edit test
* *
* @group integration * @group telephony
* *
* @return void * @return void
*/ */
public function testTelephonySettings() public function testTelephonySettingsEdit()
{ {
$client = static::getApiClient(); $client = static::getApiClient();
$code = 'telphin'; $response = $client->telephonySettingsEdit(
$clientId = '1'; self::TEL_CODE,
$active = true; self::TEL_CLIENT,
true,
'TestTelephony',
false,
self::TEL_IMAGE,
array(array('userId' => $_SERVER['CRM_USER_ID'], 'code' => '101')),
array(array('siteCode' => 'api-client-php', 'externalPhone' => '+74950000000'))
);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertTrue(in_array($response->getStatusCode(), array(200, 201)));
$this->assertTrue($response->isSuccessful());
}
/**
* Settings Get test
*
* @group telephony
*
* @return void
*/
public function testTelephonySettingsGet()
{
$client = static::getApiClient();
$response = $client->telephonySettingsGet(self::TEL_CODE);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->isSuccessful());
}
/**
* Event test
*
* @group telephony
*
* @return void
*/
public function testTelephonyEvent()
{
$client = static::getApiClient();
$response = $client->telephonyCallEvent(
'+79999999999',
'in',
array('101'),
'failed',
'+74950000000'
$response = $client->telephonySettings(
$code,
$clientId,
$active
); );
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->success); $this->assertTrue($response->isSuccessful());
}
/**
* Upload test
*
* @group telephony
*
* @return void
*/
public function testTelephonyUpload()
{
$client = static::getApiClient();
$response = $client->telephonyCallsUpload(
array(
array(
'date' => '2016-07-22 00:18:00',
'type' => 'in',
'phone' => '+79999999999',
'code' => '101',
'result' => 'answered',
'externalId' => rand(10,100),
'recordUrl' => 'https://dl.dropboxusercontent.com/u/15492750/dontry2bfunny.mp3'
),
array(
'date' => '2016-07-22 00:24:00',
'type' => 'in',
'phone' => '+79999999999',
'code' => '101',
'result' => 'answered',
'externalId' => rand(10,100),
'recordUrl' => 'https://dl.dropboxusercontent.com/u/15492750/donttytobefunny.mp3'
)
)
);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->isSuccessful());
}
/**
* Manager test
*
* @group telephony
*
* @return void
*/
public function testTelephonyManager()
{
$client = static::getApiClient();
$response = $client->telephonyCallManager('+79999999999', 1);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertEquals(200, $response->getStatusCode());
$this->assertTrue($response->isSuccessful());
} }
} }

View File

@ -1,9 +1,30 @@
<?php <?php
/**
* PHP version 5.3
*
* API client test class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
namespace RetailCrm\Tests; namespace RetailCrm\Tests;
use RetailCrm\Test\TestCase; use RetailCrm\Test\TestCase;
/**
* Class ApiClientTest
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
class ApiClientTest extends TestCase class ApiClientTest extends TestCase
{ {
/** /**
@ -15,15 +36,4 @@ class ApiClientTest extends TestCase
$this->assertInstanceOf('RetailCrm\ApiClient', $client); $this->assertInstanceOf('RetailCrm\ApiClient', $client);
} }
/**
* @group integration
*/
public function testStatisticUpdate()
{
$client = static::getApiClient();
$response = $client->statisticUpdate();
$this->assertTrue($response->isSuccessful());
}
} }

View File

@ -0,0 +1,55 @@
<?php
/**
* PHP version 5.3
*
* API client users test class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
namespace RetailCrm\Tests;
use RetailCrm\Test\TestCase;
/**
* Class ApiClientUsersTest
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
class ApiClientUsersTest extends TestCase
{
/**
* @group users
*/
public function testUsersList()
{
$client = static::getApiClient();
$response = $client->usersList();
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertTrue(in_array($response->getStatusCode(), array(200, 201)));
$this->assertTrue($response->isSuccessful());
}
/**
* @group users
*/
public function testUsersGet()
{
$client = static::getApiClient();
$response = $client->usersGet($_SERVER["CRM_USER_ID"]);
$this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
$this->assertTrue(in_array($response->getStatusCode(), array(200, 201)));
$this->assertTrue($response->isSuccessful());
}
}

View File

@ -1,11 +1,32 @@
<?php <?php
/**
* PHP version 5.3
*
* API client test class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
namespace RetailCrm\Tests\Http; namespace RetailCrm\Tests\Http;
use RetailCrm\Test\TestCase; use RetailCrm\Test\TestCase;
use RetailCrm\ApiClient; use RetailCrm\ApiClient;
use RetailCrm\Http\Client; use RetailCrm\Http\Client;
/**
* Class ClientTest
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
class ClientTest extends TestCase class ClientTest extends TestCase
{ {
/** /**
@ -25,6 +46,7 @@ class ClientTest extends TestCase
public function testHttpRequiring() public function testHttpRequiring()
{ {
$client = new Client('http://demo.retailcrm.ru/api/' . ApiClient::VERSION, array('apiKey' => '123')); $client = new Client('http://demo.retailcrm.ru/api/' . ApiClient::VERSION, array('apiKey' => '123'));
return $client;
} }
/** /**
@ -44,7 +66,7 @@ class ClientTest extends TestCase
public function testMakeRequestWrongUrl() public function testMakeRequestWrongUrl()
{ {
$client = new Client('https://asdf.df', array()); $client = new Client('https://asdf.df', array());
$client->makeRequest('/a', Client::METHOD_GET, array(), 1); $client->makeRequest('/a', Client::METHOD_GET, array());
} }
/** /**

View File

@ -1,10 +1,31 @@
<?php <?php
/**
* PHP version 5.3
*
* API client response test class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
namespace RetailCrm\Tests\Response; namespace RetailCrm\Tests\Response;
use RetailCrm\Test\TestCase; use RetailCrm\Test\TestCase;
use RetailCrm\Response\ApiResponse; use RetailCrm\Response\ApiResponse;
/**
* Class ApiResponseTest
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
*/
class ApiResponseTest extends TestCase class ApiResponseTest extends TestCase
{ {
/** /**