Passed
Push — master ( faa4ac...572ea2 )
by Vladislav
06:35 queued 04:06
created

GetOrderTest::testGetOrderDTOBuilder()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 20
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 23
rs 9.6
1
<?php
2
namespace Carpenstar\ByBitAPI\Spot\Trade\GetOrder\Tests;
3
4
use Carpenstar\ByBitAPI\Core\Builders\ResponseDtoBuilder;
5
use Carpenstar\ByBitAPI\Core\Builders\ResponseHandlerBuilder;
6
use Carpenstar\ByBitAPI\Core\Builders\RestBuilder;
7
use Carpenstar\ByBitAPI\Core\Enums\EnumOutputMode;
8
use Carpenstar\ByBitAPI\Core\Objects\Collection\EntityCollection;
9
use Carpenstar\ByBitAPI\Core\Response\CurlResponseDto;
10
use Carpenstar\ByBitAPI\Core\Response\CurlResponseHandler;
11
use Carpenstar\ByBitAPI\Spot\Trade\GetOrder\Overrides\TestGetOrder;
12
use Carpenstar\ByBitAPI\Spot\Trade\GetOrder\Request\GetOrderRequest;
13
use Carpenstar\ByBitAPI\Spot\Trade\GetOrder\Response\GetOrderResponse;
14
use PHPUnit\Framework\TestCase;
15
16
class GetOrderTest extends TestCase
17
{
18
    static private string $getOrderResponse = '{"retCode":0,"retMsg":"OK","result":{"accountId":"1111837","symbol":"BTCUSDT","orderLinkId":"64c7ef2bdf040","orderId":"1477137337600322304","orderPrice":"1000","orderQty":"0.001","execQty":"0","cummulativeQuoteQty":"0","avgPrice":"0","status":"NEW","timeInForce":"GTC","orderType":"LIMIT","side":"BUY","stopPrice":"0.0","icebergQty":"0.0","createTime":"1690824492584","updateTime":"1690824492595","isWorking":"1","locked":"1","orderCategory":0,"blockTradeId":"","smpType":"None","cancelType":"UNKNOWN","smpGroup":0,"smpOrderId":""},"retExtInfo":{},"time":1690834565801}';
19
20
    public function testGetOrderDTOBuilder()
21
    {
22
        $dto = ResponseDtoBuilder::make(GetOrderResponse::class, json_decode(self::$getOrderResponse, true)['result']);
23
        $this->assertInstanceOf(GetOrderResponse::class, $dto);
24
25
        $this->assertIsInt($dto->getAccountId());
26
        $this->assertIsString($dto->getSymbol());
27
        $this->assertIsString($dto->getOrderLinkId());
28
        $this->assertIsInt($dto->getOrderId());
29
        $this->assertIsFloat($dto->getOrderPrice());
30
        $this->assertIsFloat($dto->getOrderQty());
31
        $this->assertIsFloat($dto->getExecQty());
32
        $this->assertIsFloat($dto->getCummulativeQuoteQty());
33
        $this->assertIsFloat($dto->getAvgPrice());
34
        $this->assertIsString($dto->getStatus());
35
        $this->assertIsString($dto->getTimeInForce());
36
        $this->assertIsString($dto->getOrderType());
37
        $this->assertIsString($dto->getSide());
38
        $this->assertIsFloat($dto->getStopPrice());
39
        $this->assertInstanceOf(\DateTime::class, $dto->getCreateTime());
40
        $this->assertInstanceOf(\DateTime::class, $dto->getUpdateTime());
41
        $this->assertIsInt($dto->getIsWorking());
42
        $this->assertIsFloat($dto->getLocked());
43
    }
44
45
    public function testGetOrderResponseHandlerBuilder()
46
    {
47
        $handler = ResponseHandlerBuilder::make(self::$getOrderResponse, CurlResponseHandler::class, GetOrderResponse::class);
48
        $this->assertInstanceOf(EntityCollection::class, $handler->getBody());
49
        $this->assertGreaterThan(0, $handler->getBody()->count());
50
    }
51
52
    public function testGetOrderEndpoint()
53
    {
54
        $endpoint = RestBuilder::make(TestGetOrder::class, (new GetOrderRequest())->setOrderId('1477137337600322304'));
55
56
        $entityResponse = $endpoint->execute(EnumOutputMode::MODE_ENTITY, self::$getOrderResponse);
57
        $this->assertInstanceOf(CurlResponseDto::class, $entityResponse);
58
        $body = $entityResponse->getBody();
59
        $this->assertInstanceOf(EntityCollection::class, $body);
60
61
        $dto = $body->fetch();
62
63
        $this->assertIsInt($dto->getAccountId());
64
        $this->assertIsString($dto->getSymbol());
65
        $this->assertIsString($dto->getOrderLinkId());
66
        $this->assertIsInt($dto->getOrderId());
67
        $this->assertIsFloat($dto->getOrderPrice());
68
        $this->assertIsFloat($dto->getOrderQty());
69
        $this->assertIsFloat($dto->getExecQty());
70
        $this->assertIsFloat($dto->getCummulativeQuoteQty());
71
        $this->assertIsFloat($dto->getAvgPrice());
72
        $this->assertIsString($dto->getStatus());
73
        $this->assertIsString($dto->getTimeInForce());
74
        $this->assertIsString($dto->getOrderType());
75
        $this->assertIsString($dto->getSide());
76
        $this->assertIsFloat($dto->getStopPrice());
77
        $this->assertInstanceOf(\DateTime::class, $dto->getCreateTime());
78
        $this->assertInstanceOf(\DateTime::class, $dto->getUpdateTime());
79
        $this->assertIsInt($dto->getIsWorking());
80
        $this->assertIsFloat($dto->getLocked());
81
    }
82
}