diff --git a/.travis.yml b/.travis.yml index 4d6ff60..6f23a80 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,9 +9,11 @@ php: - '5.4' - '5.5' - '5.6' + - '7.0' before_script: - flags="--prefer-dist --no-dev" - composer install $flags + - wget -c https://db.tt/uMin8U9t script: phpunit diff --git a/composer.json b/composer.json index a12d81c..6732211 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,8 @@ ], "require": { "php": ">=5.3.0", - "ext-curl": "*" + "ext-curl": "*", + "phpunit/phpunit": "~5.4.7" }, "support": { "email": "support@retailcrm.pro" diff --git a/lib/RetailCrm/ApiClient.php b/lib/RetailCrm/ApiClient.php index f1c3f8b..03b7590 100644 --- a/lib/RetailCrm/ApiClient.php +++ b/lib/RetailCrm/ApiClient.php @@ -1437,27 +1437,46 @@ class ApiClient } return $this->client->makeRequest( - "/telephony/settings/$code", + "/telephony/setting/$code", Client::METHOD_GET ); } + /** * Edit telephony settings * * @param string $code symbolic code * @param string $clientId client id * @param boolean $active telephony activity - * @param mixed $makeCallUrl service init url * @param mixed $name service name + * @param mixed $makeCallUrl service init url * @param mixed $image service logo url(svg file) * - * @throws \InvalidArgumentException - * @throws \RetailCrm\Exception\CurlException - * @throws \RetailCrm\Exception\InvalidJsonException + * @param array $additionalCodes + * @param array $externalPhones + * @param bool $allowEdit + * @param bool $inputEventSupported + * @param bool $outputEventSupported + * @param bool $hangupEventSupported + * @param bool $changeUserStatusUrl * * @return ApiResponse */ - public function telephonySettingsEdit($code, $clientId, $active = false, $makeCallUrl = false, $name = false, $image = false) + public function telephonySettingsEdit( + $code, + $clientId, + $active = false, + $name = false, + $makeCallUrl = false, + $image = false, + $additionalCodes = array(), + $externalPhones = array(), + $allowEdit = false, + $inputEventSupported = false, + $outputEventSupported = false, + $hangupEventSupported = false, + $changeUserStatusUrl = false + ) { if (!isset($code)) { throw new \InvalidArgumentException('Code must be set'); @@ -1481,64 +1500,101 @@ class ApiClient throw new \InvalidArgumentException('name must be set'); } - if (isset($makeCallUrl)) { - $parameters['makeCallUrl'] = $makeCallUrl; - } - if (isset($name)) { $parameters['name'] = $name; } + if (isset($makeCallUrl)) { + $parameters['makeCallUrl'] = $makeCallUrl; + } + if (isset($image)) { $parameters['image'] = $image; } + if (isset($additionalCodes)) { + $parameters['additionalCodes'] = $additionalCodes; + } + + 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; + } + return $this->client->makeRequest( "/telephony/setting/$code/edit", Client::METHOD_POST, - $parameters + array('configuration' => json_encode($parameters)) ); } /** * Call event * - * @param string $phone phone number - * @param string $type call type - * @param string $code additional phone code - * @param string $status call status - * - * @throws \InvalidArgumentException - * @throws \RetailCrm\Exception\CurlException - * @throws \RetailCrm\Exception\InvalidJsonException + * @param string $phone phone number + * @param string $type call type + * @param array $codes + * @param string $hangupStatus + * @param string $externalPhone + * @param array $webAnalyticsData * * @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)) { throw new \InvalidArgumentException('Phone number must be set'); } - $parameters['phone'] = $phone; - if (!isset($type)) { throw new \InvalidArgumentException('Type must be set (in|out|hangup)'); } - $parameters['type'] = $type; - - if (!isset($code)) { - throw new \InvalidArgumentException('Code must be set'); + if (empty($codes)) { + throw new \InvalidArgumentException('Codes array must be set'); } - $parameters['code'] = $code; - $parameters['hangupStatus'] = $status; + $parameters['phone'] = $phone; + $parameters['type'] = $type; + $parameters['codes'] = $codes; + $parameters['hangupStatus'] = $hangupStatus; + $parameters['callExternalId'] = $externalPhone; + $parameters['webAnalyticsData'] = $webAnalyticsData; + return $this->client->makeRequest( '/telephony/call/event', Client::METHOD_POST, - $parameters + array('event' => json_encode($parameters)) ); } diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 15a7435..d735181 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -12,6 +12,7 @@ + diff --git a/tests/RetailCrm/Tests/ApiClientCustomersTest.php b/tests/RetailCrm/Tests/ApiClientCustomersTest.php index cde18d6..c8c822e 100644 --- a/tests/RetailCrm/Tests/ApiClientCustomersTest.php +++ b/tests/RetailCrm/Tests/ApiClientCustomersTest.php @@ -1,15 +1,36 @@ + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ + namespace RetailCrm\Tests; use RetailCrm\Test\TestCase; +/** + * Class ApiClientCustomersTest + * + * @category RetailCrm + * @package RetailCrm + * @author RetailCrm + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ class ApiClientCustomersTest extends TestCase { const FIRST_NAME = 'Иннокентий'; /** - * @group integration + * @group customers */ public function testCustomersCreate() { @@ -32,7 +53,7 @@ class ApiClientCustomersTest extends TestCase } /** - * @group unit + * @group customers * @expectedException \InvalidArgumentException */ public function testCustomersCreateExceptionEmpty() @@ -43,7 +64,7 @@ class ApiClientCustomersTest extends TestCase } /** - * @group integration + * @group customers * @depends testCustomersCreate */ public function testCustomersGet(array $ids) @@ -53,13 +74,13 @@ class ApiClientCustomersTest extends TestCase $response = $client->customersGet(678678678); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(404, $response->getStatusCode()); - $this->assertFalse($response->success); + $this->assertFalse($response->isSuccessful()); $response = $client->customersGet($ids['id'], 'id'); $customerById = $response->customer; $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); + $this->assertTrue($response->isSuccessful()); $this->assertEquals(self::FIRST_NAME, $response->customer['firstName']); $response = $client->customersGet($ids['externalId'], 'externalId'); @@ -69,7 +90,7 @@ class ApiClientCustomersTest extends TestCase } /** - * @group unit + * @group customers * @expectedException \InvalidArgumentException */ public function testCustomersGetException() @@ -80,7 +101,7 @@ class ApiClientCustomersTest extends TestCase } /** - * @group integration + * @group customers * @depends testCustomersGet */ public function testCustomersEdit(array $ids) @@ -103,19 +124,11 @@ class ApiClientCustomersTest extends TestCase )); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); - - $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); + $this->assertTrue($response->isSuccessful()); } /** - * @group unit + * @group customers * @expectedException \InvalidArgumentException */ public function testCustomersEditExceptionEmpty() @@ -126,7 +139,7 @@ class ApiClientCustomersTest extends TestCase } /** - * @group unit + * @group customers * @expectedException \InvalidArgumentException */ public function testCustomersEditException() @@ -137,7 +150,7 @@ class ApiClientCustomersTest extends TestCase } /** - * @group integration + * @group customers */ public function testCustomersList() { @@ -164,7 +177,7 @@ class ApiClientCustomersTest extends TestCase } /** - * @group unit + * @group customers * @expectedException \InvalidArgumentException */ public function testCustomersFixExternalIdsException() @@ -175,7 +188,7 @@ class ApiClientCustomersTest extends TestCase } /** - * @group integration + * @group customers */ public function testCustomersFixExternalIds() { @@ -225,7 +238,7 @@ class ApiClientCustomersTest extends TestCase } /** - * @group unit + * @group customers * @expectedException \InvalidArgumentException */ public function testCustomersUploadExceptionEmpty() @@ -236,7 +249,7 @@ class ApiClientCustomersTest extends TestCase } /** - * @group integration + * @group customers */ public function testCustomersUpload() { diff --git a/tests/RetailCrm/Tests/ApiClientOrdersTest.php b/tests/RetailCrm/Tests/ApiClientOrdersTest.php index 8d1254d..e844bf6 100644 --- a/tests/RetailCrm/Tests/ApiClientOrdersTest.php +++ b/tests/RetailCrm/Tests/ApiClientOrdersTest.php @@ -1,15 +1,36 @@ + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ + namespace RetailCrm\Tests; use RetailCrm\Test\TestCase; +/** + * Class ApiClientOrdersTest + * + * @category RetailCrm + * @package RetailCrm + * @author RetailCrm + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ class ApiClientOrdersTest extends TestCase { const FIRST_NAME = 'Иннокентий'; /** - * @group integration + * @group orders */ public function testOrdersCreate() { @@ -32,7 +53,7 @@ class ApiClientOrdersTest extends TestCase } /** - * @group unit + * @group orders * @expectedException \InvalidArgumentException */ public function testOrdersCreateExceptionEmpty() @@ -43,7 +64,7 @@ class ApiClientOrdersTest extends TestCase } /** - * @group integration + * @group orders * @depends testOrdersCreate */ public function testOrdersStatuses(array $ids) @@ -53,19 +74,19 @@ class ApiClientOrdersTest extends TestCase $response = $client->ordersStatuses(); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(400, $response->getStatusCode()); - $this->assertFalse($response->success); + $this->assertFalse($response->isSuccessful()); $response = $client->ordersStatuses(array(), array('asdf')); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); + $this->assertTrue($response->isSuccessful()); $orders = $response->orders; $this->assertEquals(0, sizeof($orders)); $response = $client->ordersStatuses(array(), array($ids['externalId'])); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); + $this->assertTrue($response->isSuccessful()); $orders = $response->orders; $this->assertEquals(1, sizeof($orders)); $this->assertEquals('new', $orders[0]['status']); @@ -73,20 +94,20 @@ class ApiClientOrdersTest extends TestCase $response = $client->ordersStatuses(array($ids['id']), array($ids['externalId'])); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); + $this->assertTrue($response->isSuccessful()); $orders = $response->orders; $this->assertEquals(1, sizeof($orders)); $response = $client->ordersStatuses(array($ids['id'])); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); + $this->assertTrue($response->isSuccessful()); $orders = $response->orders; $this->assertEquals(1, sizeof($orders)); } /** - * @group integration + * @group orders * @depends testOrdersCreate */ public function testOrdersGet(array $ids) @@ -96,13 +117,13 @@ class ApiClientOrdersTest extends TestCase $response = $client->ordersGet(678678678); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(404, $response->getStatusCode()); - $this->assertFalse($response->success); + $this->assertFalse($response->isSuccessful()); $response = $client->ordersGet($ids['id'], 'id'); $orderById = $response->order; $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); + $this->assertTrue($response->isSuccessful()); $this->assertEquals(self::FIRST_NAME, $response->order['firstName']); $response = $client->ordersGet($ids['externalId'], 'externalId'); @@ -112,7 +133,7 @@ class ApiClientOrdersTest extends TestCase } /** - * @group unit + * @group orders * @expectedException \InvalidArgumentException */ public function testOrdersGetException() @@ -123,7 +144,7 @@ class ApiClientOrdersTest extends TestCase } /** - * @group integration + * @group orders * @depends testOrdersGet */ public function testOrdersEdit(array $ids) @@ -146,19 +167,11 @@ class ApiClientOrdersTest extends TestCase )); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); - - $response = $client->ordersEdit(array( - 'externalId' => time(), - 'lastName' => '12345', - )); - $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); - $this->assertEquals(201, $response->getStatusCode()); - $this->assertTrue($response->success); + $this->assertTrue($response->isSuccessful()); } /** - * @group unit + * @group orders * @expectedException \InvalidArgumentException */ public function testOrdersEditExceptionEmpty() @@ -169,7 +182,7 @@ class ApiClientOrdersTest extends TestCase } /** - * @group unit + * @group orders * @expectedException \InvalidArgumentException */ public function testOrdersEditException() @@ -180,7 +193,7 @@ class ApiClientOrdersTest extends TestCase } /** - * @group integration + * @group orders */ public function testOrdersHistory() { @@ -189,19 +202,11 @@ class ApiClientOrdersTest extends TestCase $response = $client->ordersHistory(); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); - $this->assertTrue( - isset($response['orders']), - 'API returns orders history' - ); - $this->assertTrue( - isset($response['generatedAt']), - 'API returns generatedAt in orders history' - ); + $this->assertTrue($response->isSuccessful()); } /** - * @group integration + * @group orders */ public function testOrdersList() { @@ -221,14 +226,10 @@ class ApiClientOrdersTest extends TestCase $response = $client->ordersList(array('paymentStatus' => 'paid'), 1); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); - $this->assertTrue( - $response->isSuccessful(), - 'API returns orders list' - ); } /** - * @group unit + * @group orders * @expectedException \InvalidArgumentException */ public function testOrdersFixExternalIdsException() @@ -239,7 +240,7 @@ class ApiClientOrdersTest extends TestCase } /** - * @group integration + * @group orders ] */ public function testOrdersFixExternalIds() { @@ -283,7 +284,7 @@ class ApiClientOrdersTest extends TestCase } /** - * @group unit + * @group orders * @expectedException \InvalidArgumentException */ public function testOrdersUploadExceptionEmpty() @@ -294,7 +295,7 @@ class ApiClientOrdersTest extends TestCase } /** - * @group integration + * @group orders */ public function testOrdersUpload() { diff --git a/tests/RetailCrm/Tests/ApiClientPacksTest.php b/tests/RetailCrm/Tests/ApiClientPacksTest.php index 3cf0965..87d83a8 100644 --- a/tests/RetailCrm/Tests/ApiClientPacksTest.php +++ b/tests/RetailCrm/Tests/ApiClientPacksTest.php @@ -9,7 +9,7 @@ * @package RetailCrm * @author RetailCrm * @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\Tests; @@ -23,29 +23,14 @@ use RetailCrm\Test\TestCase; * @package RetailCrm * @author RetailCrm * @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 ApiClientPacksTest extends TestCase { - private $_packId; - - /** - * ApiClientPacksTest constructor. - * - * @param null|string $name name - * @param array $data data - * @param string $dataName dataName - */ - public function __construct($name = null, array $data = array(), $dataName = '') - { - parent::__construct($name, $data, $dataName); - $this->_packId = __DIR__ . '/../../../pack.tmp'; - } - /** * Test packs history * - * @group integration + * @group packs * @return void */ public function testOrdersPacksHistory() @@ -66,33 +51,10 @@ class ApiClientPacksTest extends TestCase ); } - /** - * Test packs create - * - * @group integration - * @return void - */ - public function testOrdersPacksCreate() - { - $client = static::getApiClient(); - - $pack = array( - 'itemId' => $_SERVER['CRM_PACK_ITEM'], - 'quantity' => $_SERVER['CRM_PACK_QUANTITY'], - 'store' => $_SERVER['CRM_STORE'] - ); - - $response = $client->ordersPacksCreate($pack); - file_put_contents($this->_packId, $response["id"]); - $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); - $this->assertEquals(201, $response->getStatusCode()); - $this->assertTrue($response->success); - } - /** * Test packs failed create * - * @group integration + * @group packs * @return void */ public function testOrdersPacksCreateFailed() @@ -100,7 +62,7 @@ class ApiClientPacksTest extends TestCase $client = static::getApiClient(); $pack = array( 'itemId' => 12, - 'store' => $_SERVER['CRM_STORE'], + 'store' => 'test', 'quantity' => 2 ); @@ -109,39 +71,4 @@ class ApiClientPacksTest extends TestCase $this->assertEquals(400, $response->getStatusCode()); $this->assertFalse($response->success); } - - /** - * Test packs get - * - * @group integration - * @return void - */ - public function testOrdersPacksGet() - { - $client = static::getApiClient(); - - $packId = file_get_contents($this->_packId); - $response = $client->ordersPacksGet($packId); - $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); - $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); - } - - /** - * Test packs delete - * - * @group integration - * @return void - */ - public function testOrdersPacksDelete() - { - $client = static::getApiClient(); - - $packId = file_get_contents($this->_packId); - $response = $client->ordersPacksDelete($packId); - $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); - $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); - unlink($this->_packId); - } } diff --git a/tests/RetailCrm/Tests/ApiClientReferenceTest.php b/tests/RetailCrm/Tests/ApiClientReferenceTest.php index b31415e..3ccf2d2 100644 --- a/tests/RetailCrm/Tests/ApiClientReferenceTest.php +++ b/tests/RetailCrm/Tests/ApiClientReferenceTest.php @@ -1,13 +1,34 @@ + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ + namespace RetailCrm\Tests; use RetailCrm\Test\TestCase; +/** + * Class ApiClientReferenceTest + * + * @category RetailCrm + * @package RetailCrm + * @author RetailCrm + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ class ApiClientReferenceTest extends TestCase { /** - * @group integration + * @group reference * @dataProvider getListDictionaries * @param $name */ @@ -25,7 +46,7 @@ class ApiClientReferenceTest extends TestCase } /** - * @group integration + * @group reference * @dataProvider getEditDictionaries * @expectedException \InvalidArgumentException */ @@ -38,7 +59,7 @@ class ApiClientReferenceTest extends TestCase } /** - * @group integration + * @group reference * @dataProvider getEditDictionaries */ public function testEditing($name) @@ -69,7 +90,7 @@ class ApiClientReferenceTest extends TestCase } /** - * @group integration + * @group reference * @group site */ public function testSiteEditing() diff --git a/tests/RetailCrm/Tests/ApiClientStoreTest.php b/tests/RetailCrm/Tests/ApiClientStoreTest.php index 1401bf6..cf31b7a 100644 --- a/tests/RetailCrm/Tests/ApiClientStoreTest.php +++ b/tests/RetailCrm/Tests/ApiClientStoreTest.php @@ -1,12 +1,29 @@ + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ + namespace RetailCrm\Tests; use RetailCrm\Test\TestCase; /** * Class ApiClientStoreTest - * @package RetailCrm\Tests + * + * @category RetailCrm + * @package RetailCrm + * @author RetailCrm + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 */ class ApiClientStoreTest extends TestCase { @@ -14,7 +31,7 @@ class ApiClientStoreTest extends TestCase const SCODE = 'test-store'; /** - * @group integration + * @group store */ public function testStoreCreate() { @@ -23,11 +40,11 @@ class ApiClientStoreTest extends TestCase $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->success); + $this->assertTrue($response->isSuccessful()); } /** - * @group integration + * @group store */ public function testStoreInventories() { @@ -36,7 +53,7 @@ class ApiClientStoreTest extends TestCase $response = $client->storeInventories(); $this->assertInstanceOf('RetailCrm\Response\ApiResponse', $response); $this->assertEquals(200, $response->getStatusCode()); - $this->assertTrue($response->success); + $this->assertTrue($response->isSuccessful()); $this->assertTrue( isset($response['offers']), 'API returns orders assembly history' @@ -44,7 +61,7 @@ class ApiClientStoreTest extends TestCase } /** - * @group unit + * @group store * @expectedException \InvalidArgumentException */ public function testStoreInventoriesUploadExceptionEmpty() @@ -54,7 +71,7 @@ class ApiClientStoreTest extends TestCase } /** - * @group integration + * @group store */ public function testStoreInventoriesUpload() { diff --git a/tests/RetailCrm/Tests/ApiClientTelephonyTest.php b/tests/RetailCrm/Tests/ApiClientTelephonyTest.php index 2fc875b..9177df7 100644 --- a/tests/RetailCrm/Tests/ApiClientTelephonyTest.php +++ b/tests/RetailCrm/Tests/ApiClientTelephonyTest.php @@ -1,5 +1,17 @@ + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ + namespace RetailCrm\Tests; use RetailCrm\Test\TestCase; @@ -10,33 +22,138 @@ use RetailCrm\Test\TestCase; * @package RetailCrm\Tests * @author RetailCrm * @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 { + + 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 */ - public function testTelephonySettings() + public function testTelephonySettingsEdit() { $client = static::getApiClient(); - $code = 'telphin'; - $clientId = '1'; - $active = true; + $response = $client->telephonySettingsEdit( + self::TEL_CODE, + 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->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()); } } diff --git a/tests/RetailCrm/Tests/ApiClientTest.php b/tests/RetailCrm/Tests/ApiClientTest.php index fe78cc1..a57a445 100644 --- a/tests/RetailCrm/Tests/ApiClientTest.php +++ b/tests/RetailCrm/Tests/ApiClientTest.php @@ -1,9 +1,30 @@ + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ + namespace RetailCrm\Tests; use RetailCrm\Test\TestCase; +/** + * Class ApiClientTest + * + * @category RetailCrm + * @package RetailCrm + * @author RetailCrm + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ class ApiClientTest extends TestCase { /** diff --git a/tests/RetailCrm/Tests/ApiClientUsersTest.php b/tests/RetailCrm/Tests/ApiClientUsersTest.php new file mode 100644 index 0000000..0508b7b --- /dev/null +++ b/tests/RetailCrm/Tests/ApiClientUsersTest.php @@ -0,0 +1,55 @@ + + * @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 + * @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()); + } +} diff --git a/tests/RetailCrm/Tests/Http/ClientTest.php b/tests/RetailCrm/Tests/Http/ClientTest.php index bbecdf8..98dbd8c 100644 --- a/tests/RetailCrm/Tests/Http/ClientTest.php +++ b/tests/RetailCrm/Tests/Http/ClientTest.php @@ -1,11 +1,32 @@ + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ + namespace RetailCrm\Tests\Http; use RetailCrm\Test\TestCase; use RetailCrm\ApiClient; use RetailCrm\Http\Client; +/** + * Class ClientTest + * + * @category RetailCrm + * @package RetailCrm + * @author RetailCrm + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ class ClientTest extends TestCase { /** @@ -25,6 +46,7 @@ class ClientTest extends TestCase public function testHttpRequiring() { $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() { $client = new Client('https://asdf.df', array()); - $client->makeRequest('/a', Client::METHOD_GET, array(), 1); + $client->makeRequest('/a', Client::METHOD_GET, array()); } /** diff --git a/tests/RetailCrm/Tests/Response/ApiResponseTest.php b/tests/RetailCrm/Tests/Response/ApiResponseTest.php index 74e0fab..470fd17 100644 --- a/tests/RetailCrm/Tests/Response/ApiResponseTest.php +++ b/tests/RetailCrm/Tests/Response/ApiResponseTest.php @@ -1,10 +1,31 @@ + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ + namespace RetailCrm\Tests\Response; use RetailCrm\Test\TestCase; use RetailCrm\Response\ApiResponse; +/** + * Class ApiResponseTest + * + * @category RetailCrm + * @package RetailCrm + * @author RetailCrm + * @license https://opensource.org/licenses/MIT MIT License + * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4 + */ class ApiResponseTest extends TestCase { /**