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

testWalletBalanceResponseHandlerBuilder()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 5
rs 10
1
<?php
2
namespace Carpenstar\ByBitAPI\Spot\Account\WalletBalance\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\Account\WalletBalance\Overrides\TestWalletBalance;
12
use Carpenstar\ByBitAPI\Spot\Account\WalletBalance\Response\WalletBalanceResponse;
13
use PHPUnit\Framework\TestCase;
14
15
class WalletBalanceTest extends TestCase
16
{
17
    static private string $walletResponse = '{"retCode":0,"retMsg":"OK","result":{"balances":[{"coin":"EOS","coinId":"EOS","total":"2000","free":"2000","locked":"0"},{"coin":"ETH","coinId":"ETH","total":"1","free":"1","locked":"0"},{"coin":"USDC","coinId":"USDC","total":"50000","free":"50000","locked":"0"},{"coin":"USDT","coinId":"USDT","total":"50000","free":"50000","locked":"0"},{"coin":"XRP","coinId":"XRP","total":"10000","free":"10000","locked":"0"}]},"retExtInfo":{},"time":1683973704401}';
18
19
    public function testWalletBalanceDTOBuilder()
20
    {
21
        foreach (json_decode(self::$walletResponse, true)['result']["balances"] as $wallet) {
22
            $dto = ResponseDtoBuilder::make(WalletBalanceResponse::class, $wallet);
23
            $this->assertInstanceOf(WalletBalanceResponse::class, $dto);
24
            $this->assertIsString($dto->getCoin());
25
            $this->assertIsFloat($dto->getFree());
26
            $this->assertIsFloat($dto->getTotal());
27
            $this->assertIsBool($dto->getLocked());
28
        }
29
    }
30
31
    public function testWalletBalanceResponseHandlerBuilder()
32
    {
33
        $handler = ResponseHandlerBuilder::make(self::$walletResponse, CurlResponseHandler::class, WalletBalanceResponse::class);
34
        $this->assertInstanceOf(EntityCollection::class, $handler->getBody());
35
        $this->assertGreaterThan(0, $handler->getBody()->count());
36
    }
37
38
    public function testWalletBalanceEndpoint()
39
    {
40
        $endpoint = RestBuilder::make(TestWalletBalance::class);
41
42
        $entityResponse = $endpoint->execute(EnumOutputMode::MODE_ENTITY, self::$walletResponse);
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(WalletBalanceResponse::class, $wallet);
49
            $this->assertInstanceOf(WalletBalanceResponse::class, $dto);
50
            $this->assertIsString($dto->getCoin());
51
            $this->assertIsFloat($dto->getFree());
52
            $this->assertIsFloat($dto->getTotal());
53
            $this->assertIsBool($dto->getLocked());
54
        }
55
    }
56
}