Passed
Push — master ( f32712...07732c )
by Vladislav
04:33 queued 01:39
created

GetOpenOrdersTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 15
c 1
b 0
f 0
dl 0
loc 29
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetOpenOrdersResponseHandlerBuilder() 0 5 1
A testGetOpenOrdersEndpoint() 0 10 1
A testGetOpenOrdersDTOBuilder() 0 5 2
1
<?php
2
namespace Carpenstar\ByBitAPI\Derivatives\Contract\Order\GetOpenOrders\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\Derivatives\Contract\Order\GetOpenOrders\Overrides\TestGetOpenOrders;
12
use Carpenstar\ByBitAPI\Derivatives\Contract\Order\GetOpenOrders\Request\GetOpenOrdersRequest;
13
use Carpenstar\ByBitAPI\Derivatives\Contract\Order\GetOpenOrders\Response\GetOpenOrdersResponse;
14
use PHPUnit\Framework\TestCase;
15
16
class GetOpenOrdersTest extends TestCase
17
{
18
    static private string $getOpenOrdersResponse = '{"retCode":0,"retMsg":"OK","result":{"list":[{"symbol":"BTCUSDT","orderId":"6753a9db-3d47-4b06-8c35-599511c0fb00","side":"Buy","orderType":"Limit","stopOrderType":"UNKNOWN","price":"28000.00","qty":"0.022","timeInForce":"GoodTillCancel","orderStatus":"New","triggerPrice":"0.00","orderLinkId":"","createdTime":"1690997416487","updatedTime":"1690997416490","takeProfit":"0.00","stopLoss":"0.00","tpTriggerBy":"UNKNOWN","slTriggerBy":"UNKNOWN","triggerBy":"UNKNOWN","reduceOnly":false,"leavesQty":"0.022","leavesValue":"616","cumExecQty":"0.000","cumExecValue":"0","cumExecFee":"0","triggerDirection":0,"cancelType":"UNKNOWN","lastPriceOnCreated":"","iv":"","closeOnTrigger":false,"tpslMode":"","tpLimitPrice":"","slLimitPrice":"","smpType":"None","smpGroup":0,"smpOrderId":""}],"nextPageCursor":"ME51NFhyekVsNFlrUitoZVd0TWNGZ3FPZkVpMmswT2Z0aDdQR2g3eTMwWDFOZkNoM2tFVkNZWmYzeHVqaGpZcGgyWHQ2RGRqR3VSdElUVmdzSmJQZkE9PQ==","category":""},"retExtInfo":{},"time":1691001728355}';
19
20
    public function testGetOpenOrdersDTOBuilder()
21
    {
22
        foreach (json_decode(self::$getOpenOrdersResponse, true)['result']['list'] as $order) {
23
            $dto = ResponseDtoBuilder::make(GetOpenOrdersResponse::class, $order);
24
            $this->assertInstanceOf(GetOpenOrdersResponse::class, $dto);
25
        }
26
    }
27
28
    public function testGetOpenOrdersResponseHandlerBuilder()
29
    {
30
        $handler = ResponseHandlerBuilder::make(self::$getOpenOrdersResponse, CurlResponseHandler::class, GetOpenOrdersResponse::class);
31
        $this->assertInstanceOf(EntityCollection::class, $handler->getBody());
32
        $this->assertGreaterThan(0, $handler->getBody()->count());
33
    }
34
35
    public function testGetOpenOrdersEndpoint()
36
    {
37
        $endpoint = RestBuilder::make(TestGetOpenOrders::class, (new GetOpenOrdersRequest())->setSymbol("BTCUSDT"));
38
39
        $entityResponse = $endpoint->execute(EnumOutputMode::MODE_ENTITY, self::$getOpenOrdersResponse);
40
        $this->assertInstanceOf(CurlResponseDto::class, $entityResponse);
41
        $body = $entityResponse->getBody();
42
        $this->assertInstanceOf(EntityCollection::class, $body);
43
        $dto = $body->fetch();
44
        $this->assertInstanceOf(GetOpenOrdersResponse::class, $dto);
45
    }
46
}