Test Failed
Pull Request — master (#9)
by Vladislav
08:00
created

TickersTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 35
c 1
b 0
f 0
dl 0
loc 50
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testTickersDTOBuilder() 0 14 1
A testTickersEndpoint() 0 23 1
A testTickersResponseHandlerBuilder() 0 5 1
1
<?php
2
namespace Carpenstar\ByBitAPI\Spot\MarketData\Tickers\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\Tickers\Overrides\TestTickers;
12
use Carpenstar\ByBitAPI\Spot\MarketData\Tickers\Request\TickersRequest;
13
use Carpenstar\ByBitAPI\Spot\MarketData\Tickers\Response\TickersResponse;
14
use PHPUnit\Framework\TestCase;
15
16
class TickersTest extends TestCase
17
{
18
    private static string $tickersApiResponse = '{"retCode":0,"retMsg":"OK","result":{"t":1683986136017,"s":"BTCUSDT","bp":"26799.99","ap":"26810.3","lp":"26810.3","o":"26875.03","h":"28073.41","l":"25992.06","v":"2389.959483","qv":"65100545.90244497"},"retExtInfo":{},"time":1683986136450}';
19
20
    public function testTickersDTOBuilder()
21
    {
22
        $dto = ResponseDtoBuilder::make(TickersResponse::class, json_decode(self::$tickersApiResponse, true)['result']);
23
        $this->assertInstanceOf(TickersResponse::class, $dto);
24
        $this->assertInstanceOf(\DateTime::class, $dto->getTime());
25
        $this->assertIsFloat($dto->getHighPrice());
26
        $this->assertIsFloat($dto->getTradingVolume());
27
        $this->assertIsFloat($dto->getOpenPrice());
28
        $this->assertIsFloat($dto->getLowPrice());
29
        $this->assertIsFloat($dto->getBestAskPrice());
30
        $this->assertIsFloat($dto->getBestBidPrice());
31
        $this->assertIsFloat($dto->getLastTradedPrice());
32
        $this->assertIsFloat($dto->getTradingQuoteVolume());
33
        $this->assertIsString($dto->getSymbol());
34
    }
35
36
    public function testTickersResponseHandlerBuilder()
37
    {
38
        $handler = ResponseHandlerBuilder::make(self::$tickersApiResponse, CurlResponseHandler::class, TickersResponse::class);
39
        $this->assertInstanceOf(EntityCollection::class, $handler->getBody());
40
        $this->assertGreaterThan(0, $handler->getBody()->count());
41
    }
42
43
    public function testTickersEndpoint()
44
    {
45
        $endpoint = RestBuilder::make(TestTickers::class, (new TickersRequest())
46
            ->setSymbol("BTCUSDT"));
47
48
        $entityResponse = $endpoint->execute(EnumOutputMode::MODE_ENTITY, self::$tickersApiResponse);
49
        $this->assertInstanceOf(CurlResponseDto::class, $entityResponse);
50
        $body = $entityResponse->getBody();
51
        $this->assertInstanceOf(EntityCollection::class, $body);
52
53
        $body = $body->fetch();
54
55
        $this->assertInstanceOf(TickersResponse::class, $body);
56
        $this->assertInstanceOf(\DateTime::class, $body->getTime());
57
        $this->assertIsFloat($body->getHighPrice());
58
        $this->assertIsFloat($body->getTradingVolume());
59
        $this->assertIsFloat($body->getOpenPrice());
60
        $this->assertIsFloat($body->getLowPrice());
61
        $this->assertIsFloat($body->getBestAskPrice());
62
        $this->assertIsFloat($body->getBestBidPrice());
63
        $this->assertIsFloat($body->getLastTradedPrice());
64
        $this->assertIsFloat($body->getTradingQuoteVolume());
65
        $this->assertIsString($body->getSymbol());
66
    }
67
}