canyin-project/ybcy/vendor/easyexpress/shunfeng/tests/Order/OrderTest.php
2024-11-01 16:07:54 +08:00

118 lines
3.4 KiB
PHP

<?php
namespace EasyExpress\Tests\Order;
use EasyExpress\Core\Exceptions\HttpException;
use EasyExpress\Core\Exceptions\InvalidArgumentException;
use EasyExpress\Order\Order;
use EasyExpress\Tests\TestCase;
class OrderTest extends TestCase
{
/**
* @param bool $mockHttp
*
* @return Order
*
*/
public function getOrder($mockHttp = false)
{
if ($mockHttp) {
$accessToken = \Mockery::mock('EasyExpress\Core\AccessToken');
$accessToken->shouldReceive('getToken')->andReturn('foo');
$accessToken->shouldReceive('getCustId')->andReturn('7550010174');
$accessToken->shouldReceive('getAppId')->andReturn('00033311');
$accessToken->shouldReceive('getAppKey')->andReturn('AC9DA1B7452BE5775118CA8DB1237431');
$order = new Order($accessToken);
$http = \Mockery::mock('EasyExpress\Core\Http[json]');
$http->shouldReceive('json')->andReturnUsing(function ($api, $params) {
return json_encode(compact('api', 'params'));
});
$order->setHttp($http);
return $order;
}
$accessToken = \Mockery::mock('EasyExpress\Core\AccessToken');
$accessToken->shouldReceive('getCustId')->andReturn('cust_id');
$order = \Mockery::mock('\EasyExpress\Order\Order[parseJSON]', [$accessToken]);
$order->shouldReceive('parseJSON')->andReturnUsing(function ($api, $params) {
if (isset($params[1])) {
return ['api' => $params[0], 'params' => $params[1]];
}
return ['api' => $params[0]];
});
return $order;
}
public function testCreate()
{
$order = $this->getOrder(true);
try {
$order->create();
} catch (\Exception $e) {
$this->assertInstanceOf(InvalidArgumentException::class, $e);
}
$data = ['orderId' => 'test'];
try {
$order->create($data);
} catch (\Exception $e) {
$this->assertInstanceOf(HttpException::class, $e);
}
}
public function testQuery()
{
$order = $this->getOrder();
$orderID = 'test';
$response = $order->query($orderID);
$this->assertStringStartsWith(Order::QUERY_ORDER_URL, $response['api']);
$this->assertEquals($orderID, $response['params']['body']['orderId']);
}
/**
*
*/
public function testMagicAccess()
{
$accessToken = \Mockery::mock('EasyExpress\Core\AccessToken');
$accessToken->shouldReceive('getCustId')->andReturn('cust_id_for_test');
$order = new Order($accessToken);
$order->withDeliver(new \stdClass());
$cargoInfo = [
"cargo" => '233',
"cargoAmount" => "444",
"cargoCount" => "rgsdgasd",
"cargoTotalWeight" => "gasdgasd",
"cargoUnit" => "gsadg",
"cargoWeight" => "gasdgsag",
"parcelQuantity" => 1
];
$order->withCargo($cargoInfo);
$this->assertEquals($cargoInfo['cargo'], $order->data['cargoInfo']['cargo']);
$this->assertEquals($cargoInfo, $order->data['cargoInfo']);
$orderId = 'test_oder_id';
$remark = 'remark';
$order->withRemark($remark)->withOrderId($orderId);
$this->assertEquals($orderId, $order->data['orderId']);
$this->assertEquals($remark, $order->data['remark']);
}
}