structure change for models & add another request and response models & matcher for tests & more tests
This commit is contained in:
parent
c378ad5385
commit
18f8675005
@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category PostproductRedefiningCategoryForecastResponse
|
||||||
|
* @package RetailCrm\Model\Request\AliExpress
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Request\AliExpress;
|
||||||
|
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
use RetailCrm\Model\Request\BaseRequest;
|
||||||
|
use RetailCrm\Model\Response\AliExpress\PostproductRedefiningCategoryForecastResponse;
|
||||||
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class PostproductRedefiningCategoryForecastResponse
|
||||||
|
*
|
||||||
|
* @category PostproductRedefiningCategoryForecastResponse
|
||||||
|
* @package RetailCrm\Model\Request\AliExpress
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class PostproductRedefiningCategoryForecast extends BaseRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string $subject
|
||||||
|
*
|
||||||
|
* @JMS\Type("string")
|
||||||
|
* @JMS\SerializedName("subject")
|
||||||
|
* @Assert\LessThanOrEqual(512)
|
||||||
|
*/
|
||||||
|
public $subject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string $locale
|
||||||
|
*
|
||||||
|
* @JMS\Type("string")
|
||||||
|
* @JMS\SerializedName("locale")
|
||||||
|
*
|
||||||
|
* phpcs:disable Generic.Files.LineLength
|
||||||
|
* @Assert\Choice({"en", "ru", "pt", "id", "es", "fr", "it", "de", "nl", "tr", "he", "ja", "ar", "th", "vi", "ko", "pl"})
|
||||||
|
*/
|
||||||
|
public $locale;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function getMethod(): string
|
||||||
|
{
|
||||||
|
return 'aliexpress.postproduct.redefining.categoryforecast';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function getExpectedResponse(): string
|
||||||
|
{
|
||||||
|
return PostproductRedefiningCategoryForecastResponse::class;
|
||||||
|
}
|
||||||
|
}
|
@ -2,32 +2,32 @@
|
|||||||
/**
|
/**
|
||||||
* PHP version 7.4
|
* PHP version 7.4
|
||||||
*
|
*
|
||||||
* @category SellerCategoryTreeQuery
|
* @category SolutionSellerCategoryTreeQuery
|
||||||
* @package RetailCrm\Model\Request\AliExpressSolution
|
* @package RetailCrm\Model\Request\AliExpress
|
||||||
* @author RetailCRM <integration@retailcrm.ru>
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
* @license http://retailcrm.ru Proprietary
|
* @license http://retailcrm.ru Proprietary
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see http://help.retailcrm.ru
|
* @see http://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace RetailCrm\Model\Request\AliExpressSolution;
|
namespace RetailCrm\Model\Request\AliExpress;
|
||||||
|
|
||||||
use RetailCrm\Model\Request\BaseRequest;
|
use RetailCrm\Model\Request\BaseRequest;
|
||||||
use JMS\Serializer\Annotation as JMS;
|
use JMS\Serializer\Annotation as JMS;
|
||||||
use RetailCrm\Model\Response\AliExpressSolution\SellerCategoryTreeQueryResponse;
|
use RetailCrm\Model\Response\AliExpress\SolutionSellerCategoryTreeQueryResponse;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SellerCategoryTreeQuery
|
* Class SolutionSellerCategoryTreeQuery
|
||||||
*
|
*
|
||||||
* @category SellerCategoryTreeQuery
|
* @category SolutionSellerCategoryTreeQuery
|
||||||
* @package RetailCrm\Model\Request\AliExpressSolution
|
* @package RetailCrm\Model\Request\AliExpress
|
||||||
* @author RetailDriver LLC <integration@retailcrm.ru>
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
* @license https://retailcrm.ru Proprietary
|
* @license https://retailcrm.ru Proprietary
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see https://help.retailcrm.ru
|
* @see https://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
class SellerCategoryTreeQuery extends BaseRequest
|
class SolutionSellerCategoryTreeQuery extends BaseRequest
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var int $categoryId
|
* @var int $categoryId
|
||||||
@ -61,6 +61,6 @@ class SellerCategoryTreeQuery extends BaseRequest
|
|||||||
*/
|
*/
|
||||||
public function getExpectedResponse(): string
|
public function getExpectedResponse(): string
|
||||||
{
|
{
|
||||||
return SellerCategoryTreeQueryResponse::class;
|
return SolutionSellerCategoryTreeQueryResponse::class;
|
||||||
}
|
}
|
||||||
}
|
}
|
36
src/Model/Response/AbstractResponseData.php
Normal file
36
src/Model/Response/AbstractResponseData.php
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category AbstractResponseData
|
||||||
|
* @package RetailCrm\Model\Response
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Response;
|
||||||
|
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AbstractResponseData
|
||||||
|
*
|
||||||
|
* @category AbstractResponseData
|
||||||
|
* @package RetailCrm\Model\Response
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
abstract class AbstractResponseData
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string $requestId
|
||||||
|
*
|
||||||
|
* @JMS\Type("string")
|
||||||
|
* @JMS\SerializedName("request_id")
|
||||||
|
*/
|
||||||
|
public $requestId;
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category PostproductRedefiningCategoryForecastResponseData
|
||||||
|
* @package RetailCrm\Model\Response\AliExpress\Data
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Response\AliExpress\Data;
|
||||||
|
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
use RetailCrm\Model\Response\AbstractResponseData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class PostproductRedefiningCategoryForecastResponseData
|
||||||
|
*
|
||||||
|
* @category PostproductRedefiningCategoryForecastResponseData
|
||||||
|
* @package RetailCrm\Model\Response\AliExpress\Data
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class PostproductRedefiningCategoryForecastResponseData extends AbstractResponseData
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var \RetailCrm\Model\Response\AliExpress\Result\AeopCategoryForecastResultDto $result
|
||||||
|
*
|
||||||
|
* @JMS\Type("RetailCrm\Model\Response\AliExpress\Result\AeopCategoryForecastResultDto")
|
||||||
|
* @JMS\SerializedName("result")
|
||||||
|
*/
|
||||||
|
public $result;
|
||||||
|
}
|
@ -2,34 +2,35 @@
|
|||||||
/**
|
/**
|
||||||
* PHP version 7.4
|
* PHP version 7.4
|
||||||
*
|
*
|
||||||
* @category SellerCategoryTreeQueryResponseData
|
* @category SolutionSellerCategoryTreeQueryResponseData
|
||||||
* @package RetailCrm\Model\Response\AliExpressSolution\Data
|
* @package RetailCrm\Model\Response\AliExpress\Data
|
||||||
* @author RetailCRM <integration@retailcrm.ru>
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
* @license http://retailcrm.ru Proprietary
|
* @license http://retailcrm.ru Proprietary
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see http://help.retailcrm.ru
|
* @see http://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace RetailCrm\Model\Response\AliExpressSolution\Data;
|
namespace RetailCrm\Model\Response\AliExpress\Data;
|
||||||
|
|
||||||
use JMS\Serializer\Annotation as JMS;
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
use RetailCrm\Model\Response\AbstractResponseData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SellerCategoryTreeQueryResponseData
|
* Class SolutionSellerCategoryTreeQueryResponseData
|
||||||
*
|
*
|
||||||
* @category SellerCategoryTreeQueryResponseData
|
* @category SolutionSellerCategoryTreeQueryResponseData
|
||||||
* @package RetailCrm\Model\Response\AliExpressSolution\Data
|
* @package RetailCrm\Model\Response\AliExpressSolution\Data
|
||||||
* @author RetailDriver LLC <integration@retailcrm.ru>
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
* @license https://retailcrm.ru Proprietary
|
* @license https://retailcrm.ru Proprietary
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see https://help.retailcrm.ru
|
* @see https://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
class SellerCategoryTreeQueryResponseData
|
class SolutionSellerCategoryTreeQueryResponseData extends AbstractResponseData
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var SellerCategoryTreeQueryResponseDataChildrenCategoryList
|
* @var SolutionSellerCategoryTreeQueryResponseDataChildrenCategoryList
|
||||||
*
|
*
|
||||||
* @JMS\Type("RetailCrm\Model\Response\AliExpressSolution\Data\SellerCategoryTreeQueryResponseDataChildrenCategoryList")
|
* @JMS\Type("RetailCrm\Model\Response\AliExpress\Data\SolutionSellerCategoryTreeQueryResponseDataChildrenCategoryList")
|
||||||
* @JMS\SerializedName("children_category_list")
|
* @JMS\SerializedName("children_category_list")
|
||||||
*/
|
*/
|
||||||
public $childrenCategoryList;
|
public $childrenCategoryList;
|
@ -2,30 +2,30 @@
|
|||||||
/**
|
/**
|
||||||
* PHP version 7.4
|
* PHP version 7.4
|
||||||
*
|
*
|
||||||
* @category SellerCategoryTreeQueryResponseDataChildrenCategoryList
|
* @category SolutionSellerCategoryTreeQueryResponseDataChildrenCategoryList
|
||||||
* @package RetailCrm\Model\Response\AliExpressSolution\Data
|
* @package RetailCrm\Model\Response\AliExpress\Data
|
||||||
* @author RetailCRM <integration@retailcrm.ru>
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
* @license http://retailcrm.ru Proprietary
|
* @license http://retailcrm.ru Proprietary
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see http://help.retailcrm.ru
|
* @see http://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace RetailCrm\Model\Response\AliExpressSolution\Data;
|
namespace RetailCrm\Model\Response\AliExpress\Data;
|
||||||
|
|
||||||
use RetailCrm\Model\Entity\CategoryInfo;
|
use RetailCrm\Model\Entity\CategoryInfo;
|
||||||
use JMS\Serializer\Annotation as JMS;
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SellerCategoryTreeQueryResponseDataChildrenCategoryList
|
* Class SolutionSellerCategoryTreeQueryResponseDataChildrenCategoryList
|
||||||
*
|
*
|
||||||
* @category SellerCategoryTreeQueryResponseDataChildrenCategoryList
|
* @category SolutionSellerCategoryTreeQueryResponseDataChildrenCategoryList
|
||||||
* @package RetailCrm\Model\Response\AliExpressSolution\Data
|
* @package RetailCrm\Model\Response\AliExpress\Data
|
||||||
* @author RetailDriver LLC <integration@retailcrm.ru>
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
* @license https://retailcrm.ru Proprietary
|
* @license https://retailcrm.ru Proprietary
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see https://help.retailcrm.ru
|
* @see https://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
class SellerCategoryTreeQueryResponseDataChildrenCategoryList
|
class SolutionSellerCategoryTreeQueryResponseDataChildrenCategoryList
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var CategoryInfo[] $categoryInfo
|
* @var CategoryInfo[] $categoryInfo
|
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category PostproductRedefiningCategoryForecastResponse
|
||||||
|
* @package RetailCrm\Model\Response\AliExpress
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Response\AliExpress;
|
||||||
|
|
||||||
|
use RetailCrm\Model\Response\AliExpress\Data\PostproductRedefiningCategoryForecastResponseData;
|
||||||
|
use RetailCrm\Model\Response\BaseResponse;
|
||||||
|
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class PostproductRedefiningCategoryForecastResponse
|
||||||
|
*
|
||||||
|
* @category PostproductRedefiningCategoryForecastResponse
|
||||||
|
* @package RetailCrm\Model\Response\AliExpress
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class PostproductRedefiningCategoryForecastResponse extends BaseResponse
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var PostproductRedefiningCategoryForecastResponseData $responseData
|
||||||
|
*
|
||||||
|
* @JMS\Type("RetailCrm\Model\Response\AliExpress\Data\PostproductRedefiningCategoryForecastResponseData")
|
||||||
|
* @JMS\SerializedName("aliexpress_postproduct_redefining_categoryforecast_response")
|
||||||
|
*/
|
||||||
|
public $responseData;
|
||||||
|
}
|
@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category AeopCategoryForecastResultDto
|
||||||
|
* @package RetailCrm\Model\Response\AliExpress\Result
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Response\AliExpress\Result;
|
||||||
|
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AeopCategoryForecastResultDto
|
||||||
|
*
|
||||||
|
* @category AeopCategoryForecastResultDto
|
||||||
|
* @package RetailCrm\Model\Response\AliExpress\Result
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class AeopCategoryForecastResultDto
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string $errorMessage
|
||||||
|
*
|
||||||
|
* @JMS\Type("string")
|
||||||
|
* @JMS\SerializedName("error_message")
|
||||||
|
*/
|
||||||
|
public $errorMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var \RetailCrm\Model\Response\AliExpress\Result\Entity\CategorySuitabilityList $categorySuitabilityList
|
||||||
|
*
|
||||||
|
* @JMS\Type("RetailCrm\Model\Response\AliExpress\Result\Entity\CategorySuitabilityList")
|
||||||
|
* @JMS\SerializedName("category_suitability_list")
|
||||||
|
*/
|
||||||
|
public $categorySuitabilityList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string $timeStamp
|
||||||
|
*
|
||||||
|
* @JMS\Type("string")
|
||||||
|
* @JMS\SerializedName("time_stamp")
|
||||||
|
*/
|
||||||
|
public $timeStamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string $errorCode
|
||||||
|
*
|
||||||
|
* @JMS\Type("string")
|
||||||
|
* @JMS\SerializedName("error_code")
|
||||||
|
*/
|
||||||
|
public $errorCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool $success
|
||||||
|
*
|
||||||
|
* @JMS\Type("bool")
|
||||||
|
* @JMS\SerializedName("success")
|
||||||
|
*/
|
||||||
|
public $success;
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category CategorySuitabilityList
|
||||||
|
* @package RetailCrm\Model\Response\AliExpress\Result\Entity
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Response\AliExpress\Result\Entity;
|
||||||
|
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class CategorySuitabilityList
|
||||||
|
*
|
||||||
|
* @category CategorySuitabilityList
|
||||||
|
* @package RetailCrm\Model\Response\AliExpress\Result\Entity
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class CategorySuitabilityList
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string[] $json
|
||||||
|
*
|
||||||
|
* @JMS\Type("array<string>")
|
||||||
|
* @JMS\SerializedName("json")
|
||||||
|
*/
|
||||||
|
public $json;
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
/**
|
/**
|
||||||
* PHP version 7.4
|
* PHP version 7.4
|
||||||
*
|
*
|
||||||
* @category SellerCategoryTreeQueryResponse
|
* @category SolutionSellerCategoryTreeQueryResponse
|
||||||
* @package RetailCrm\Model\Response\AliExpressSolution
|
* @package RetailCrm\Model\Response\AliExpressSolution
|
||||||
* @author RetailCRM <integration@retailcrm.ru>
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
* @license http://retailcrm.ru Proprietary
|
* @license http://retailcrm.ru Proprietary
|
||||||
@ -10,28 +10,28 @@
|
|||||||
* @see http://help.retailcrm.ru
|
* @see http://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace RetailCrm\Model\Response\AliExpressSolution;
|
namespace RetailCrm\Model\Response\AliExpress;
|
||||||
|
|
||||||
use RetailCrm\Model\Response\BaseResponse;
|
use RetailCrm\Model\Response\BaseResponse;
|
||||||
|
|
||||||
use JMS\Serializer\Annotation as JMS;
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SellerCategoryTreeQueryResponse
|
* Class SolutionSellerCategoryTreeQueryResponse
|
||||||
*
|
*
|
||||||
* @category SellerCategoryTreeQueryResponse
|
* @category SolutionSellerCategoryTreeQueryResponse
|
||||||
* @package RetailCrm\Model\Response\AliExpressSolution
|
* @package RetailCrm\Model\Response\AliExpressSolution
|
||||||
* @author RetailDriver LLC <integration@retailcrm.ru>
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
* @license https://retailcrm.ru Proprietary
|
* @license https://retailcrm.ru Proprietary
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see https://help.retailcrm.ru
|
* @see https://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
class SellerCategoryTreeQueryResponse extends BaseResponse
|
class SolutionSellerCategoryTreeQueryResponse extends BaseResponse
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var \RetailCrm\Model\Response\AliExpressSolution\Data\SellerCategoryTreeQueryResponseData $responseData
|
* @var \RetailCrm\Model\Response\AliExpress\Data\SolutionSellerCategoryTreeQueryResponseData $responseData
|
||||||
*
|
*
|
||||||
* @JMS\Type("RetailCrm\Model\Response\AliExpressSolution\Data\SellerCategoryTreeQueryResponseData")
|
* @JMS\Type("RetailCrm\Model\Response\AliExpress\Data\SolutionSellerCategoryTreeQueryResponseData")
|
||||||
* @JMS\SerializedName("aliexpress_solution_seller_category_tree_query_response")
|
* @JMS\SerializedName("aliexpress_solution_seller_category_tree_query_response")
|
||||||
*/
|
*/
|
||||||
public $responseData;
|
public $responseData;
|
@ -24,7 +24,7 @@ use JMS\Serializer\Annotation as JMS;
|
|||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see https://help.retailcrm.ru
|
* @see https://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
class BaseResponse implements TopResponseInterface
|
abstract class BaseResponse implements TopResponseInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var \RetailCrm\Model\Response\ErrorResponseBody
|
* @var \RetailCrm\Model\Response\ErrorResponseBody
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
namespace RetailCrm\Model\Response\Taobao\Data;
|
namespace RetailCrm\Model\Response\Taobao\Data;
|
||||||
|
|
||||||
use JMS\Serializer\Annotation as JMS;
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
use RetailCrm\Model\Response\AbstractResponseData;
|
||||||
use RetailCrm\Model\Response\Taobao\Result\HttpDnsGetResponseResult;
|
use RetailCrm\Model\Response\Taobao\Result\HttpDnsGetResponseResult;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,7 +26,7 @@ use RetailCrm\Model\Response\Taobao\Result\HttpDnsGetResponseResult;
|
|||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see https://help.retailcrm.ru
|
* @see https://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
class HttpDnsGetResponseData
|
class HttpDnsGetResponseData extends AbstractResponseData
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var HttpDnsGetResponseResult $result
|
* @var HttpDnsGetResponseResult $result
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PHP version 7.3
|
|
||||||
*
|
|
||||||
* @category RequestMatcher
|
|
||||||
* @package RetailCrm\Test
|
|
||||||
* @author RetailCRM <integration@retailcrm.ru>
|
|
||||||
* @license MIT
|
|
||||||
* @link http://retailcrm.ru
|
|
||||||
* @see http://help.retailcrm.ru
|
|
||||||
*/
|
|
||||||
namespace RetailCrm\Test;
|
|
||||||
|
|
||||||
use Http\Message\RequestMatcher;
|
|
||||||
use InvalidArgumentException;
|
|
||||||
use Psr\Http\Message\RequestInterface;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class ClosureRequestMatcher
|
|
||||||
*
|
|
||||||
* @category ClosureRequestMatcher
|
|
||||||
* @package RetailCrm\Test
|
|
||||||
* @author RetailDriver LLC <integration@retailcrm.ru>
|
|
||||||
* @license MIT
|
|
||||||
* @link http://retailcrm.ru
|
|
||||||
* @see https://help.retailcrm.ru
|
|
||||||
*/
|
|
||||||
class ClosureRequestMatcher implements RequestMatcher
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var callable $matcher
|
|
||||||
*/
|
|
||||||
private $matcher;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* RequestMatcher constructor.
|
|
||||||
*
|
|
||||||
* @param callable $matcher
|
|
||||||
*/
|
|
||||||
public function __construct(callable $matcher)
|
|
||||||
{
|
|
||||||
if (!is_callable($matcher)) {
|
|
||||||
throw new InvalidArgumentException('Matcher should be callable');
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->matcher = $matcher;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public function matches(RequestInterface $request): bool
|
|
||||||
{
|
|
||||||
$matcher = $this->matcher;
|
|
||||||
return $matcher($request);
|
|
||||||
}
|
|
||||||
}
|
|
239
tests/RetailCrm/Test/RequestMatcher.php
Normal file
239
tests/RetailCrm/Test/RequestMatcher.php
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category RequestMatcher
|
||||||
|
* @package RetailCrm\Test
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Test;
|
||||||
|
|
||||||
|
use Http\Message\RequestMatcher as RequestMatcherInterface;
|
||||||
|
use Psr\Http\Message\RequestInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class RequestMatcher
|
||||||
|
*
|
||||||
|
* @category RequestMatcher
|
||||||
|
* @package RetailCrm\Test
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class RequestMatcher implements RequestMatcherInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $host;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $method;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $scheme;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $headers = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $optionalHeaders = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $queryParams = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $optionalQueryParams = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RequestMatcher constructor.
|
||||||
|
*
|
||||||
|
* @param string $host
|
||||||
|
*/
|
||||||
|
private function __construct(string $host)
|
||||||
|
{
|
||||||
|
$this->host = $host;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $host
|
||||||
|
*
|
||||||
|
* @return \RetailCrm\Test\RequestMatcher
|
||||||
|
*/
|
||||||
|
public static function createMatcher(string $host): RequestMatcher
|
||||||
|
{
|
||||||
|
return new self($host);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $path
|
||||||
|
*
|
||||||
|
* @return RequestMatcher
|
||||||
|
*/
|
||||||
|
public function setPath(string $path): RequestMatcher
|
||||||
|
{
|
||||||
|
$this->path = $path;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $method
|
||||||
|
*
|
||||||
|
* @return RequestMatcher
|
||||||
|
*/
|
||||||
|
public function setMethod(string $method): RequestMatcher
|
||||||
|
{
|
||||||
|
$this->method = $method;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $scheme
|
||||||
|
*
|
||||||
|
* @return RequestMatcher
|
||||||
|
*/
|
||||||
|
public function setScheme(string $scheme): RequestMatcher
|
||||||
|
{
|
||||||
|
$this->scheme = $scheme;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $headers
|
||||||
|
*
|
||||||
|
* @return RequestMatcher
|
||||||
|
*/
|
||||||
|
public function setHeaders(array $headers): RequestMatcher
|
||||||
|
{
|
||||||
|
$this->headers = $headers;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $optionalHeaders
|
||||||
|
*
|
||||||
|
* @return RequestMatcher
|
||||||
|
*/
|
||||||
|
public function setOptionalHeaders(array $optionalHeaders): RequestMatcher
|
||||||
|
{
|
||||||
|
$this->optionalHeaders = $optionalHeaders;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $queryParams
|
||||||
|
*
|
||||||
|
* @return RequestMatcher
|
||||||
|
*/
|
||||||
|
public function setQueryParams(array $queryParams): RequestMatcher
|
||||||
|
{
|
||||||
|
$this->queryParams = $queryParams;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $optionalQueryParams
|
||||||
|
*
|
||||||
|
* @return RequestMatcher
|
||||||
|
*/
|
||||||
|
public function setOptionalQueryParams(array $optionalQueryParams): RequestMatcher
|
||||||
|
{
|
||||||
|
$this->optionalQueryParams = $optionalQueryParams;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function matches(RequestInterface $request)
|
||||||
|
{
|
||||||
|
if ($this->scheme && strtoupper($request->getUri()->getScheme()) !== strtoupper($this->scheme)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->method && strtoupper($request->getMethod()) !== strtoupper($this->method)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $this->path && !preg_match('{'.$this->path.'}', rawurldecode($request->getUri()->getPath()))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $this->host && $this->host !== $request->getUri()->getHost()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($this->headers) && count(array_diff_assoc($this->headers, $request->getHeaders())) > 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($this->queryParams)
|
||||||
|
&& count(array_diff_assoc($this->queryParams, $this->getQueryData($request->getUri()->getQuery()))) > 0
|
||||||
|
) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($this->optionalHeaders)
|
||||||
|
&& !$this->firstArrayPresentInSecond($this->optionalHeaders, $request->getHeaders())
|
||||||
|
) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($this->optionalQueryParams)
|
||||||
|
&& !$this->firstArrayPresentInSecond(
|
||||||
|
$this->optionalQueryParams,
|
||||||
|
$this->getQueryData($request->getUri()->getQuery())
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $first
|
||||||
|
* @param array $second
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private function firstArrayPresentInSecond(array $first, array $second): bool
|
||||||
|
{
|
||||||
|
return count(array_diff_assoc($first, array_intersect_assoc($first, $second))) === 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $query
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private function getQueryData(string $query): array
|
||||||
|
{
|
||||||
|
$list = [];
|
||||||
|
parse_str($query, $list);
|
||||||
|
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
}
|
@ -6,6 +6,7 @@ use DateTime;
|
|||||||
use Http\Client\Curl\Client as CurlClient;
|
use Http\Client\Curl\Client as CurlClient;
|
||||||
use Http\Discovery\Psr17FactoryDiscovery;
|
use Http\Discovery\Psr17FactoryDiscovery;
|
||||||
use Http\Mock\Client as MockClient;
|
use Http\Mock\Client as MockClient;
|
||||||
|
use InvalidArgumentException;
|
||||||
use Nyholm\Psr7\Factory\Psr17Factory;
|
use Nyholm\Psr7\Factory\Psr17Factory;
|
||||||
use Psr\Container\ContainerInterface;
|
use Psr\Container\ContainerInterface;
|
||||||
use Psr\Http\Client\ClientInterface;
|
use Psr\Http\Client\ClientInterface;
|
||||||
@ -122,9 +123,10 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $code
|
* @param int $code
|
||||||
* @param \RetailCrm\Model\Response\BaseResponse $response
|
* @param object|array|string $response
|
||||||
*
|
*
|
||||||
* @return \Psr\Http\Message\ResponseInterface
|
* @return \Psr\Http\Message\ResponseInterface
|
||||||
|
* @throws InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
protected function responseJson(int $code, $response): ResponseInterface
|
protected function responseJson(int $code, $response): ResponseInterface
|
||||||
{
|
{
|
||||||
@ -132,10 +134,26 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase
|
|||||||
$serializer = $this->getContainer()->get(Constants::SERIALIZER);
|
$serializer = $this->getContainer()->get(Constants::SERIALIZER);
|
||||||
$responseFactory = Psr17FactoryDiscovery::findResponseFactory();
|
$responseFactory = Psr17FactoryDiscovery::findResponseFactory();
|
||||||
$streamFactory = Psr17FactoryDiscovery::findStreamFactory();
|
$streamFactory = Psr17FactoryDiscovery::findStreamFactory();
|
||||||
|
$data = null;
|
||||||
|
|
||||||
|
switch (gettype($response)) {
|
||||||
|
case 'string':
|
||||||
|
$data = $streamFactory->createStream($response);
|
||||||
|
break;
|
||||||
|
case 'array':
|
||||||
|
case 'object':
|
||||||
|
$data = $streamFactory->createStream($serializer->serialize($response, 'json'));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new InvalidArgumentException(sprintf(
|
||||||
|
'Expected string, object, or array, got "%s"',
|
||||||
|
gettype($response)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
return $responseFactory->createResponse($code)
|
return $responseFactory->createResponse($code)
|
||||||
->withHeader('Content-Type', 'application/json')
|
->withHeader('Content-Type', 'application/json')
|
||||||
->withBody($streamFactory->createStream($serializer->serialize($response, 'json')));
|
->withBody($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -14,9 +14,9 @@ namespace RetailCrm\Tests\Component\JMS\Visitor\Deserialization;
|
|||||||
|
|
||||||
use RetailCrm\Component\Constants;
|
use RetailCrm\Component\Constants;
|
||||||
use RetailCrm\Model\Entity\CategoryInfo;
|
use RetailCrm\Model\Entity\CategoryInfo;
|
||||||
use RetailCrm\Model\Response\AliExpressSolution\Data\SellerCategoryTreeQueryResponseData;
|
use RetailCrm\Model\Response\AliExpress\Data\SolutionSellerCategoryTreeQueryResponseData;
|
||||||
use RetailCrm\Model\Response\AliExpressSolution\Data\SellerCategoryTreeQueryResponseDataChildrenCategoryList;
|
use RetailCrm\Model\Response\AliExpress\Data\SolutionSellerCategoryTreeQueryResponseDataChildrenCategoryList;
|
||||||
use RetailCrm\Model\Response\AliExpressSolution\SellerCategoryTreeQueryResponse;
|
use RetailCrm\Model\Response\AliExpress\SolutionSellerCategoryTreeQueryResponse;
|
||||||
use RetailCrm\Test\TestCase;
|
use RetailCrm\Test\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -65,12 +65,12 @@ EOF;
|
|||||||
|
|
||||||
/** @var \JMS\Serializer\SerializerInterface $serializer */
|
/** @var \JMS\Serializer\SerializerInterface $serializer */
|
||||||
$serializer = $this->getContainer()->get(Constants::SERIALIZER);
|
$serializer = $this->getContainer()->get(Constants::SERIALIZER);
|
||||||
/** @var SellerCategoryTreeQueryResponse $result */
|
/** @var SolutionSellerCategoryTreeQueryResponse $result */
|
||||||
$result = $serializer->deserialize($json, SellerCategoryTreeQueryResponse::class, 'json');
|
$result = $serializer->deserialize($json, SolutionSellerCategoryTreeQueryResponse::class, 'json');
|
||||||
|
|
||||||
self::assertInstanceOf(SellerCategoryTreeQueryResponseData::class, $result->responseData);
|
self::assertInstanceOf(SolutionSellerCategoryTreeQueryResponseData::class, $result->responseData);
|
||||||
self::assertInstanceOf(
|
self::assertInstanceOf(
|
||||||
SellerCategoryTreeQueryResponseDataChildrenCategoryList::class,
|
SolutionSellerCategoryTreeQueryResponseDataChildrenCategoryList::class,
|
||||||
$result->responseData->childrenCategoryList
|
$result->responseData->childrenCategoryList
|
||||||
);
|
);
|
||||||
self::assertIsArray($result->responseData->childrenCategoryList->categoryInfo);
|
self::assertIsArray($result->responseData->childrenCategoryList->categoryInfo);
|
||||||
|
@ -12,14 +12,23 @@
|
|||||||
*/
|
*/
|
||||||
namespace RetailCrm\Tests\TopClient;
|
namespace RetailCrm\Tests\TopClient;
|
||||||
|
|
||||||
|
use Http\Message\RequestMatcher\CallbackRequestMatcher;
|
||||||
use Psr\Http\Message\RequestInterface;
|
use Psr\Http\Message\RequestInterface;
|
||||||
use RetailCrm\Builder\ClientBuilder;
|
use RetailCrm\Builder\ClientBuilder;
|
||||||
use RetailCrm\Component\AppData;
|
use RetailCrm\Component\AppData;
|
||||||
|
use RetailCrm\Component\Constants;
|
||||||
|
use RetailCrm\Model\Entity\CategoryInfo;
|
||||||
|
use RetailCrm\Model\Request\AliExpress\PostproductRedefiningCategoryForecast;
|
||||||
|
use RetailCrm\Model\Request\AliExpress\SolutionSellerCategoryTreeQuery;
|
||||||
use RetailCrm\Model\Request\Taobao\HttpDnsGetRequest;
|
use RetailCrm\Model\Request\Taobao\HttpDnsGetRequest;
|
||||||
use RetailCrm\Model\Response\BaseResponse;
|
use RetailCrm\Model\Response\AliExpress\Data\SolutionSellerCategoryTreeQueryResponseData;
|
||||||
|
use RetailCrm\Model\Response\AliExpress\Data\SolutionSellerCategoryTreeQueryResponseDataChildrenCategoryList;
|
||||||
|
use RetailCrm\Model\Response\AliExpress\PostproductRedefiningCategoryForecastResponse;
|
||||||
|
use RetailCrm\Model\Response\AliExpress\SolutionSellerCategoryTreeQueryResponse;
|
||||||
use RetailCrm\Model\Response\ErrorResponseBody;
|
use RetailCrm\Model\Response\ErrorResponseBody;
|
||||||
use RetailCrm\Test\ClosureRequestMatcher;
|
use RetailCrm\Model\Response\Taobao\HttpDnsGetResponse;
|
||||||
use RetailCrm\Test\TestCase;
|
use RetailCrm\Test\TestCase;
|
||||||
|
use RetailCrm\Test\RequestMatcher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ClientTest
|
* Class ClientTest
|
||||||
@ -40,11 +49,11 @@ class ClientTest extends TestCase
|
|||||||
$errorBody->msg = 'Mocked error';
|
$errorBody->msg = 'Mocked error';
|
||||||
$errorBody->subCode = 'subcode';
|
$errorBody->subCode = 'subcode';
|
||||||
$errorBody->requestId = '1';
|
$errorBody->requestId = '1';
|
||||||
$errorResponse = new BaseResponse();
|
$errorResponse = new HttpDnsGetResponse();
|
||||||
$errorResponse->errorResponse = $errorBody;
|
$errorResponse->errorResponse = $errorBody;
|
||||||
|
|
||||||
$mockClient = self::getMockClient();
|
$mockClient = self::getMockClient();
|
||||||
$mockClient->on(new ClosureRequestMatcher(function (RequestInterface $request) {
|
$mockClient->on(new CallbackRequestMatcher(function (RequestInterface $request) {
|
||||||
return true;
|
return true;
|
||||||
}), $this->responseJson(400, $errorResponse));
|
}), $this->responseJson(400, $errorResponse));
|
||||||
|
|
||||||
@ -71,4 +80,138 @@ class ClientTest extends TestCase
|
|||||||
$this->expectExceptionMessage('Client only supports JSON mode, got `xml` mode');
|
$this->expectExceptionMessage('Client only supports JSON mode, got `xml` mode');
|
||||||
$client->sendRequest($request);
|
$client->sendRequest($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testClientAliexpressSolutionSellerCategoryTreeQueryResponse()
|
||||||
|
{
|
||||||
|
$json = <<<'EOF'
|
||||||
|
{
|
||||||
|
"aliexpress_solution_seller_category_tree_query_response":{
|
||||||
|
"children_category_list":{
|
||||||
|
"category_info":[
|
||||||
|
{
|
||||||
|
"children_category_id":5090301,
|
||||||
|
"is_leaf_category":true,
|
||||||
|
"level":2,
|
||||||
|
"multi_language_names":"{ \"de\": \"Mobiltelefon\", \"ru\": \"Мобильные телефоны\", \"pt\": \"Telefonia\", \"in\": \"Ponsel\", \"en\": \"Mobile Phones\", \"it\": \"Telefoni cellulari\", \"fr\": \"Smartphones\", \"es\": \"Smartphones\", \"tr\": \"Cep Telefonu\", \"nl\": \"Mobiele telefoons\" }"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"is_success":true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF;
|
||||||
|
$expectedLangs = [
|
||||||
|
'de' => 'Mobiltelefon',
|
||||||
|
'ru' => 'Мобильные телефоны',
|
||||||
|
'pt' => 'Telefonia',
|
||||||
|
'in' => 'Ponsel',
|
||||||
|
'en' => 'Mobile Phones',
|
||||||
|
'it' => 'Telefoni cellulari',
|
||||||
|
'fr' => 'Smartphones',
|
||||||
|
'es' => 'Smartphones',
|
||||||
|
'tr' => 'Cep Telefonu',
|
||||||
|
'nl' => 'Mobiele telefoons'
|
||||||
|
];
|
||||||
|
|
||||||
|
$mock = self::getMockClient();
|
||||||
|
$mock->on(
|
||||||
|
RequestMatcher::createMatcher('api.taobao.com')
|
||||||
|
->setPath('/router/rest')
|
||||||
|
->setOptionalQueryParams([
|
||||||
|
'app_key' => 'appKey',
|
||||||
|
'method' => 'aliexpress.solution.seller.category.tree.query',
|
||||||
|
'category_id' => '5090300',
|
||||||
|
'filter_no_permission' => 1
|
||||||
|
]),
|
||||||
|
$this->responseJson(200, $json)
|
||||||
|
);
|
||||||
|
$client = ClientBuilder::create()
|
||||||
|
->setContainer($this->getContainer($mock))
|
||||||
|
->setAppData(new AppData(AppData::OVERSEAS_ENDPOINT, 'appKey', 'appSecret'))
|
||||||
|
->build();
|
||||||
|
$request = new SolutionSellerCategoryTreeQuery();
|
||||||
|
|
||||||
|
$request->categoryId = 5090300;
|
||||||
|
$request->filterNoPermission = true;
|
||||||
|
|
||||||
|
/** @var SolutionSellerCategoryTreeQueryResponse $response */
|
||||||
|
$result = $client->sendRequest($request);
|
||||||
|
|
||||||
|
self::assertInstanceOf(SolutionSellerCategoryTreeQueryResponseData::class, $result->responseData);
|
||||||
|
self::assertInstanceOf(
|
||||||
|
SolutionSellerCategoryTreeQueryResponseDataChildrenCategoryList::class,
|
||||||
|
$result->responseData->childrenCategoryList
|
||||||
|
);
|
||||||
|
self::assertIsArray($result->responseData->childrenCategoryList->categoryInfo);
|
||||||
|
self::assertCount(1, $result->responseData->childrenCategoryList->categoryInfo);
|
||||||
|
|
||||||
|
$info = $result->responseData->childrenCategoryList->categoryInfo[0];
|
||||||
|
|
||||||
|
self::assertInstanceOf(CategoryInfo::class, $info);
|
||||||
|
self::assertEquals(5090301, $info->childrenCategoryId);
|
||||||
|
self::assertTrue($info->isLeafCategory);
|
||||||
|
self::assertEquals(2, $info->level);
|
||||||
|
self::assertIsArray($info->multiLanguageNames);
|
||||||
|
|
||||||
|
foreach ($expectedLangs as $lang => $value) {
|
||||||
|
self::assertArrayHasKey($lang, $info->multiLanguageNames);
|
||||||
|
self::assertEquals($value, $info->multiLanguageNames[$lang]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testClientAliexpressPostproductRedefiningCategoryForecast()
|
||||||
|
{
|
||||||
|
$json = <<<'EOF'
|
||||||
|
{
|
||||||
|
"aliexpress_postproduct_redefining_categoryforecast_response":{
|
||||||
|
"result":{
|
||||||
|
"error_message":"The result of dii is empty. It should have a correct JSON format data return.",
|
||||||
|
"category_suitability_list":{
|
||||||
|
"json":[
|
||||||
|
"N\/A"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"time_stamp":"20181101111211",
|
||||||
|
"error_code":24000011,
|
||||||
|
"success":true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF;
|
||||||
|
|
||||||
|
$mock = self::getMockClient();
|
||||||
|
$mock->on(
|
||||||
|
RequestMatcher::createMatcher('api.taobao.com')
|
||||||
|
->setPath('/router/rest')
|
||||||
|
->setOptionalQueryParams([
|
||||||
|
'app_key' => 'appKey',
|
||||||
|
'method' => 'aliexpress.postproduct.redefining.categoryforecast'
|
||||||
|
]),
|
||||||
|
$this->responseJson(200, $json)
|
||||||
|
);
|
||||||
|
$client = ClientBuilder::create()
|
||||||
|
->setContainer($this->getContainer($mock))
|
||||||
|
->setAppData(new AppData(AppData::OVERSEAS_ENDPOINT, 'appKey', 'appSecret'))
|
||||||
|
->build();
|
||||||
|
|
||||||
|
$request = new PostproductRedefiningCategoryForecast();
|
||||||
|
$request->subject = 'man t-shirt';
|
||||||
|
$request->locale = 'en';
|
||||||
|
|
||||||
|
/** @var PostproductRedefiningCategoryForecastResponse $response */
|
||||||
|
$response = $client->sendRequest($request);
|
||||||
|
|
||||||
|
self::assertInstanceOf(PostproductRedefiningCategoryForecastResponse::class, $response);
|
||||||
|
self::assertEquals(
|
||||||
|
"The result of dii is empty. It should have a correct JSON format data return.",
|
||||||
|
$response->responseData->result->errorMessage
|
||||||
|
);
|
||||||
|
self::assertEquals(
|
||||||
|
['N/A'],
|
||||||
|
$response->responseData->result->categorySuitabilityList->json
|
||||||
|
);
|
||||||
|
self::assertEquals('20181101111211', $response->responseData->result->timeStamp);
|
||||||
|
self::assertEquals('24000011', $response->responseData->result->errorCode);
|
||||||
|
self::assertTrue($response->responseData->result->success);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user