Passed
Pull Request — master (#8)
by Vladislav
10:08 queued 02:40
created

AccountTest::testTickersEndpoint()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 16
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 12
c 1
b 0
f 0
nc 2
nop 0
dl 0
loc 16
rs 9.8666
1
<?php
2
namespace Spot;
3
4
5
use Carpenstar\ByBitAPI\Core\Builders\ResponseDtoBuilder;
6
use Carpenstar\ByBitAPI\Core\Builders\ResponseHandlerBuilder;
7
use Carpenstar\ByBitAPI\Core\Builders\RestBuilder;
8
use Carpenstar\ByBitAPI\Core\Enums\EnumOutputMode;
9
use Carpenstar\ByBitAPI\Core\Objects\Collection\EntityCollection;
10
use Carpenstar\ByBitAPI\Core\Overrides\Spot\TestWalletBalance;
11
use Carpenstar\ByBitAPI\Core\Response\CurlResponseDto;
12
use Carpenstar\ByBitAPI\Core\Response\CurlResponseHandler;
13
use Carpenstar\ByBitAPI\Spot\Account\WalletBalance\Response\WalletBalanceResponse;
14
use PHPUnit\Framework\TestCase;
15
16
class AccountTest extends TestCase
17
{
18
    /**
19
     * SPOT - Account
20
     * Wallet Data
21
     */
22
    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}';
23
24
    public function testTickersDTOBuilder()
25
    {
26
        foreach (json_decode(self::$walletResponse, true)['result']["balances"] as $wallet) {
27
            $dto = ResponseDtoBuilder::make(WalletBalanceResponse::class, $wallet);
28
            $this->assertInstanceOf(WalletBalanceResponse::class, $dto);
29
            $this->assertIsString($dto->getCoin());
30
            $this->assertIsFloat($dto->getFree());
31
            $this->assertIsFloat($dto->getTotal());
32
            $this->assertIsBool($dto->getLocked());
33
        }
34
35
36
    }
37
38
    public function testTickersResponseHandlerBuilder()
39
    {
40
        $handler = ResponseHandlerBuilder::make(self::$walletResponse, CurlResponseHandler::class, WalletBalanceResponse::class);
41
        $this->assertInstanceOf(EntityCollection::class, $handler->getBody());
42
        $this->assertGreaterThan(0, $handler->getBody()->count());
43
    }
44
45
    public function testTickersEndpoint()
46
    {
47
        $endpoint = RestBuilder::make(TestWalletBalance::class);
48
49
        $entityResponse = $endpoint->execute(EnumOutputMode::MODE_ENTITY, self::$walletResponse);
50
        $this->assertInstanceOf(CurlResponseDto::class, $entityResponse);
51
        $body = $entityResponse->getBody();
52
        $this->assertInstanceOf(EntityCollection::class, $body);
53
54
        foreach ($body->fetch() as $wallet) {
55
            $dto = ResponseDtoBuilder::make(WalletBalanceResponse::class, $wallet);
56
            $this->assertInstanceOf(WalletBalanceResponse::class, $dto);
57
            $this->assertIsString($dto->getCoin());
58
            $this->assertIsFloat($dto->getFree());
59
            $this->assertIsFloat($dto->getTotal());
60
            $this->assertIsBool($dto->getLocked());
61
        }
62
    }
63
}