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
|
|
|
} |