Passed
Pull Request — master (#10)
by Vladislav
03:04
created

KlineTest::testKlineTestResponseHandlerBuilder()   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\Derivatives\MarketData\Kline\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\Account\WalletBalance\Overrides\TestWalletBalance;
12
use Carpenstar\ByBitAPI\Derivatives\Contract\Account\WalletBalance\Response\WalletBalanceResponse;
13
use Carpenstar\ByBitAPI\Derivatives\MarketData\Kline\Overrides\TestKline;
14
use Carpenstar\ByBitAPI\Derivatives\MarketData\Kline\Request\KlineRequest;
15
use Carpenstar\ByBitAPI\Derivatives\MarketData\Kline\Response\KlineResponse;
16
use PHPUnit\Framework\TestCase;
17
18
class KlineTest extends TestCase
19
{
20
    static private string $klineResponse = '{"retCode":0,"retMsg":"OK","result":{"symbol":"BTCPERP","category": "linear","list": [["1670371200000","17077","17084","17077","17084","0.017","290.412"],["1670371140000","17074","17077.5","17074","17077","0.006","102.457"]]},"retExtInfo":{},"time":1671968612436}';
21
22
    public function testKlineTestDTOBuilder()
23
    {
24
        foreach (json_decode(self::$klineResponse, true)['result']["list"] as $feeRate) {
25
            $dto = ResponseDtoBuilder::make(KlineResponse::class, $feeRate);
26
            $this->assertInstanceOf(KlineResponse::class, $dto);
27
        }
28
    }
29
30
    public function testKlineTestResponseHandlerBuilder()
31
    {
32
        $handler = ResponseHandlerBuilder::make(self::$klineResponse, CurlResponseHandler::class, KlineResponse::class);
33
        $this->assertInstanceOf(EntityCollection::class, $handler->getBody());
34
        $this->assertGreaterThan(0, $handler->getBody()->count());
35
    }
36
37
    public function testKlineTestEndpoint()
38
    {
39
        $endpoint = RestBuilder::make(TestKline::class, (new KlineRequest())->setSymbol('BTCPERP'));
40
41
        $entityResponse = $endpoint->execute(EnumOutputMode::MODE_ENTITY, self::$klineResponse);
42
43
        $this->assertInstanceOf(CurlResponseDto::class, $entityResponse);
44
        $body = $entityResponse->getBody();
45
        $this->assertInstanceOf(EntityCollection::class, $body);
46
47
        foreach ($body->fetch() as $wallet) {
48
            $dto = ResponseDtoBuilder::make(KlineResponse::class, $wallet);
49
            $this->assertInstanceOf(KlineResponse::class, $dto);
50
        }
51
    }
52
}