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

testGetTradingFeeRateResponseHandlerBuilder()   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\Contract\Account\GetTradingFeeRate\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\GetTradingFeeRate\Overrides\TestGetTradingFeeRate;
12
use Carpenstar\ByBitAPI\Derivatives\Contract\Account\GetTradingFeeRate\Request\GetTradingFeeRateRequest;
13
use Carpenstar\ByBitAPI\Derivatives\Contract\Account\GetTradingFeeRate\Response\GetTradingFeeRateResponse;
14
use PHPUnit\Framework\TestCase;
15
16
class GetTradingFeeRateTest extends TestCase
17
{
18
    static private string $tradingFeeRateResponse = '{"retCode":0,"retMsg":"OK","result":{"list":[{"symbol":"SOLUSDT","takerFeeRate": "0.0006","makerFeeRate": "0.0001"},{"symbol":"BTCUSDT","takerFeeRate": "0.0006","makerFeeRate": "0.0001"}]},"retExtInfo": {},"time": 1670924050413}';
19
20
    public function testGetTradingFeeRateDTOBuilder()
21
    {
22
        foreach (json_decode(self::$tradingFeeRateResponse, true)['result']["list"] as $feeRate) {
23
            $dto = ResponseDtoBuilder::make(GetTradingFeeRateResponse::class, $feeRate);
24
            $this->assertInstanceOf(GetTradingFeeRateResponse::class, $dto);
25
            $this->assertNotNull($dto->getSymbol());
26
            $this->assertNotNull($dto->getMakerFeeRate());
27
            $this->assertNotNull($dto->getTakerFeeRate());
28
        }
29
    }
30
31
    public function testGetTradingFeeRateResponseHandlerBuilder()
32
    {
33
        $handler = ResponseHandlerBuilder::make(self::$tradingFeeRateResponse, CurlResponseHandler::class, GetTradingFeeRateResponse::class);
34
        $this->assertInstanceOf(EntityCollection::class, $handler->getBody());
35
        $this->assertGreaterThan(0, $handler->getBody()->count());
36
    }
37
38
    public function testGetTradingFeeRateEndpoint()
39
    {
40
        $endpoint = RestBuilder::make(TestGetTradingFeeRate::class, (new GetTradingFeeRateRequest()));
41
42
        $entityResponse = $endpoint->execute(EnumOutputMode::MODE_ENTITY, self::$tradingFeeRateResponse);
43
44
        $this->assertInstanceOf(CurlResponseDto::class, $entityResponse);
45
        $body = $entityResponse->getBody();
46
        $this->assertInstanceOf(EntityCollection::class, $body);
47
48
        foreach ($body->fetch() as $wallet) {
49
            $dto = ResponseDtoBuilder::make(GetTradingFeeRateResponse::class, $wallet);
50
            $this->assertInstanceOf(GetTradingFeeRateResponse::class, $dto);
51
            $this->assertNotNull($dto->getSymbol());
52
            $this->assertNotNull($dto->getMakerFeeRate());
53
            $this->assertNotNull($dto->getTakerFeeRate());
54
        }
55
    }
56
}