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

testBestBidAskPriceResponseHandlerBuilder()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 5
rs 10
1
<?php
2
namespace Carpenstar\ByBitAPI\Spot\MarketData\BestBidAskPrice\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\MarketData\BestBidAskPrice\Overrides\TestBestBidAskPrice;
12
use Carpenstar\ByBitAPI\Spot\MarketData\BestBidAskPrice\Request\BestBidAskPriceRequest;
13
use Carpenstar\ByBitAPI\Spot\MarketData\BestBidAskPrice\Response\BestBidAskPriceResponse;
14
use PHPUnit\Framework\TestCase;
15
16
class BestBidAskPriceTest extends TestCase
17
{
18
    private static string $bestBidAskApiResponse = '{"retCode":0,"retMsg":"OK","result":{"symbol":"BTCUSDT","bidPrice":"26298.69","bidQty":"0.106418","askPrice":"26298.7","askQty":"0.008773","time":1683979447464},"retExtInfo":{},"time":1683979447820}';
19
20
    public function testBestBidAskPriceDTOBuilder()
21
    {
22
        $dto = ResponseDtoBuilder::make(BestBidAskPriceResponse::class, json_decode(self::$bestBidAskApiResponse, true)['result']);
23
24
        $this->assertInstanceOf(BestBidAskPriceResponse::class, $dto);
25
        $this->assertIsString($dto->getSymbol());
26
        $this->assertIsFloat($dto->getAskPrice());
27
        $this->assertIsFloat($dto->getBidPrice());
28
        $this->assertIsFloat($dto->getAskQty());
29
        $this->assertIsFloat($dto->getBidQty());
30
        $this->assertInstanceOf(\DateTime::class, $dto->getTime());
31
    }
32
33
    public function testBestBidAskPriceResponseHandlerBuilder()
34
    {
35
        $handler = ResponseHandlerBuilder::make(self::$bestBidAskApiResponse, CurlResponseHandler::class, BestBidAskPriceResponse::class);
36
        $this->assertInstanceOf(EntityCollection::class, $handler->getBody());
37
        $this->assertGreaterThan(0, $handler->getBody()->count());
38
    }
39
40
    public function testBestBidAskPriceEndpoint()
41
    {
42
        $endpoint = RestBuilder::make(TestBestBidAskPrice::class, (new BestBidAskPriceRequest())->setSymbol("BTCUSDT"));
43
44
        $entityResponse = $endpoint->execute(EnumOutputMode::MODE_ENTITY, self::$bestBidAskApiResponse);
45
        $this->assertInstanceOf(CurlResponseDto::class, $entityResponse);
46
        $body = $entityResponse->getBody();
47
        $this->assertInstanceOf(EntityCollection::class, $body);
48
        $body = $body->fetch();
49
50
        $this->assertIsString($body->getSymbol());
51
        $this->assertIsFloat($body->getAskPrice());
52
        $this->assertIsFloat($body->getBidPrice());
53
        $this->assertIsFloat($body->getAskQty());
54
        $this->assertIsFloat($body->getBidQty());
55
        $this->assertInstanceOf(\DateTime::class, $body->getTime());
56
    }
57
}