diff --git a/examples/FlashClosePositionExample.php b/examples/FlashClosePositionExample.php index aa76ef1..690fdad 100644 --- a/examples/FlashClosePositionExample.php +++ b/examples/FlashClosePositionExample.php @@ -28,19 +28,19 @@ try { // Example 1: Flash close a single position echo "1. Flash closing position...\n"; $positionId = '19848247723672'; - + $response = $api->flashClosePosition($positionId); if ($response->getStatusCode() === 200) { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { echo "✅ Position flash closed successfully!\n"; - echo "Position ID: " . $data['data']['positionId'] . "\n"; + echo 'Position ID: '.$data['data']['positionId']."\n"; } else { - echo "❌ API Error: " . $data['msg'] . "\n"; + echo '❌ API Error: '.$data['msg']."\n"; } } else { - echo "❌ HTTP Error: " . $response->getStatusCode() . "\n"; + echo '❌ HTTP Error: '.$response->getStatusCode()."\n"; } echo "\n"; @@ -50,23 +50,23 @@ try { $positionIds = [ '19848247723672', '19848247723673', - '19848247723674' + '19848247723674', ]; foreach ($positionIds as $positionId) { echo "Closing position: {$positionId}...\n"; - + $response = $api->flashClosePosition($positionId); - + if ($response->getStatusCode() === 200) { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { echo "✅ Position {$positionId} closed successfully!\n"; } else { - echo "❌ Failed to close position {$positionId}: " . $data['msg'] . "\n"; + echo "❌ Failed to close position {$positionId}: ".$data['msg']."\n"; } } else { - echo "❌ HTTP Error for position {$positionId}: " . $response->getStatusCode() . "\n"; + echo "❌ HTTP Error for position {$positionId}: ".$response->getStatusCode()."\n"; } } @@ -75,19 +75,19 @@ try { // Example 3: Error handling echo "3. Error handling example...\n"; $invalidPositionId = 'invalid-position-id'; - + $response = $api->flashClosePosition($invalidPositionId); - + if ($response->getStatusCode() === 200) { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { echo "✅ Position closed successfully!\n"; } else { - echo "❌ API Error: " . $data['msg'] . "\n"; + echo '❌ API Error: '.$data['msg']."\n"; echo "This is expected for invalid position ID\n"; } } else { - echo "❌ HTTP Error: " . $response->getStatusCode() . "\n"; + echo '❌ HTTP Error: '.$response->getStatusCode()."\n"; } } catch (Exception $e) { @@ -96,19 +96,19 @@ try { /** * Flash Close Position Features: - * + * * - Closes position by position ID * - Rate limit: 5 req/sec/uid * - Immediate position closure * - No additional parameters required - * + * * Important Notes: - * + * * - Position ID must be valid and exist * - Position must be open to be closed * - This is an immediate action (flash close) * - Use with caution as it closes positions immediately - * + * * Environment Variables Required: * * BITUNIX_API_KEY=your-api-key diff --git a/examples/GetPendingPositionsExample.php b/examples/GetPendingPositionsExample.php index ed475d5..9b8970c 100644 --- a/examples/GetPendingPositionsExample.php +++ b/examples/GetPendingPositionsExample.php @@ -33,23 +33,23 @@ try { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { echo "✅ Pending positions retrieved successfully!\n"; - echo "Number of positions: " . count($data['data']) . "\n"; - + echo 'Number of positions: '.count($data['data'])."\n"; + foreach ($data['data'] as $position) { - echo " - Position ID: " . $position['positionId'] . "\n"; - echo " Symbol: " . $position['symbol'] . "\n"; - echo " Side: " . $position['side'] . "\n"; - echo " Quantity: " . $position['qty'] . "\n"; - echo " Unrealized PnL: " . $position['unrealizedPNL'] . "\n"; - echo " Margin: " . $position['margin'] . "\n"; - echo " Leverage: " . $position['leverage'] . "\n"; + echo ' - Position ID: '.$position['positionId']."\n"; + echo ' Symbol: '.$position['symbol']."\n"; + echo ' Side: '.$position['side']."\n"; + echo ' Quantity: '.$position['qty']."\n"; + echo ' Unrealized PnL: '.$position['unrealizedPNL']."\n"; + echo ' Margin: '.$position['margin']."\n"; + echo ' Leverage: '.$position['leverage']."\n"; echo " ---\n"; } } else { - echo "❌ API Error: " . $data['msg'] . "\n"; + echo '❌ API Error: '.$data['msg']."\n"; } } else { - echo "❌ HTTP Error: " . $response->getStatusCode() . "\n"; + echo '❌ HTTP Error: '.$response->getStatusCode()."\n"; } echo "\n"; @@ -62,21 +62,21 @@ try { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { echo "✅ BTCUSDT pending positions retrieved successfully!\n"; - echo "Number of BTCUSDT positions: " . count($data['data']) . "\n"; - + echo 'Number of BTCUSDT positions: '.count($data['data'])."\n"; + foreach ($data['data'] as $position) { - echo " - Position ID: " . $position['positionId'] . "\n"; - echo " Entry Value: " . $position['entryValue'] . "\n"; - echo " Average Open Price: " . $position['avgOpenPrice'] . "\n"; - echo " Liquidation Price: " . $position['liqPrice'] . "\n"; - echo " Margin Rate: " . $position['marginRate'] . "\n"; + echo ' - Position ID: '.$position['positionId']."\n"; + echo ' Entry Value: '.$position['entryValue']."\n"; + echo ' Average Open Price: '.$position['avgOpenPrice']."\n"; + echo ' Liquidation Price: '.$position['liqPrice']."\n"; + echo ' Margin Rate: '.$position['marginRate']."\n"; echo " ---\n"; } } else { - echo "❌ API Error: " . $data['msg'] . "\n"; + echo '❌ API Error: '.$data['msg']."\n"; } } else { - echo "❌ HTTP Error: " . $response->getStatusCode() . "\n"; + echo '❌ HTTP Error: '.$response->getStatusCode()."\n"; } echo "\n"; @@ -90,36 +90,36 @@ try { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { echo "✅ Position {$positionId} retrieved successfully!\n"; - - if (!empty($data['data'])) { + + if (! empty($data['data'])) { $position = $data['data'][0]; echo " Position Details:\n"; - echo " Position ID: " . $position['positionId'] . "\n"; - echo " Symbol: " . $position['symbol'] . "\n"; - echo " Side: " . $position['side'] . "\n"; - echo " Quantity: " . $position['qty'] . "\n"; - echo " Entry Value: " . $position['entryValue'] . "\n"; - echo " Average Open Price: " . $position['avgOpenPrice'] . "\n"; - echo " Unrealized PnL: " . $position['unrealizedPNL'] . "\n"; - echo " Realized PnL: " . $position['realizedPNL'] . "\n"; - echo " Margin: " . $position['margin'] . "\n"; - echo " Leverage: " . $position['leverage'] . "\n"; - echo " Margin Mode: " . $position['marginMode'] . "\n"; - echo " Position Mode: " . $position['positionMode'] . "\n"; - echo " Liquidation Price: " . $position['liqPrice'] . "\n"; - echo " Margin Rate: " . $position['marginRate'] . "\n"; - echo " Fee: " . $position['fee'] . "\n"; - echo " Funding: " . $position['funding'] . "\n"; - echo " Created: " . date('Y-m-d H:i:s', $position['ctime'] / 1000) . "\n"; - echo " Modified: " . date('Y-m-d H:i:s', $position['mtime'] / 1000) . "\n"; + echo ' Position ID: '.$position['positionId']."\n"; + echo ' Symbol: '.$position['symbol']."\n"; + echo ' Side: '.$position['side']."\n"; + echo ' Quantity: '.$position['qty']."\n"; + echo ' Entry Value: '.$position['entryValue']."\n"; + echo ' Average Open Price: '.$position['avgOpenPrice']."\n"; + echo ' Unrealized PnL: '.$position['unrealizedPNL']."\n"; + echo ' Realized PnL: '.$position['realizedPNL']."\n"; + echo ' Margin: '.$position['margin']."\n"; + echo ' Leverage: '.$position['leverage']."\n"; + echo ' Margin Mode: '.$position['marginMode']."\n"; + echo ' Position Mode: '.$position['positionMode']."\n"; + echo ' Liquidation Price: '.$position['liqPrice']."\n"; + echo ' Margin Rate: '.$position['marginRate']."\n"; + echo ' Fee: '.$position['fee']."\n"; + echo ' Funding: '.$position['funding']."\n"; + echo ' Created: '.date('Y-m-d H:i:s', $position['ctime'] / 1000)."\n"; + echo ' Modified: '.date('Y-m-d H:i:s', $position['mtime'] / 1000)."\n"; } else { echo "No position found with ID: {$positionId}\n"; } } else { - echo "❌ API Error: " . $data['msg'] . "\n"; + echo '❌ API Error: '.$data['msg']."\n"; } } else { - echo "❌ HTTP Error: " . $response->getStatusCode() . "\n"; + echo '❌ HTTP Error: '.$response->getStatusCode()."\n"; } echo "\n"; @@ -132,12 +132,12 @@ try { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { echo "✅ Filtered positions retrieved successfully!\n"; - echo "Number of filtered positions: " . count($data['data']) . "\n"; + echo 'Number of filtered positions: '.count($data['data'])."\n"; } else { - echo "❌ API Error: " . $data['msg'] . "\n"; + echo '❌ API Error: '.$data['msg']."\n"; } } else { - echo "❌ HTTP Error: " . $response->getStatusCode() . "\n"; + echo '❌ HTTP Error: '.$response->getStatusCode()."\n"; } } catch (Exception $e) { @@ -146,13 +146,13 @@ try { /** * Get Pending Positions Features: - * + * * - Get all pending positions * - Filter by trading pair (symbol) * - Filter by position ID * - Get detailed position information * - Rate limit: 10 req/sec/uid - * + * * Response includes: * - positionId: Position ID * - symbol: Trading pair @@ -172,7 +172,7 @@ try { * - avgOpenPrice: Average open price * - ctime: Create timestamp * - mtime: Latest modify timestamp - * + * * Environment Variables Required: * * BITUNIX_API_KEY=your-api-key diff --git a/examples/GetSingleAccountExample.php b/examples/GetSingleAccountExample.php index 0ce0c97..cb9b47d 100644 --- a/examples/GetSingleAccountExample.php +++ b/examples/GetSingleAccountExample.php @@ -33,23 +33,23 @@ try { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { echo "✅ USDT account details retrieved successfully!\n"; - + $account = $data['data'][0]; echo "Account Details:\n"; - echo " Margin Coin: " . $account['marginCoin'] . "\n"; - echo " Available: " . $account['available'] . "\n"; - echo " Frozen: " . $account['frozen'] . "\n"; - echo " Margin: " . $account['margin'] . "\n"; - echo " Transfer: " . $account['transfer'] . "\n"; - echo " Position Mode: " . $account['positionMode'] . "\n"; - echo " Cross Unrealized PnL: " . $account['crossUnrealizedPNL'] . "\n"; - echo " Isolation Unrealized PnL: " . $account['isolationUnrealizedPNL'] . "\n"; - echo " Bonus: " . $account['bonus'] . "\n"; + echo ' Margin Coin: '.$account['marginCoin']."\n"; + echo ' Available: '.$account['available']."\n"; + echo ' Frozen: '.$account['frozen']."\n"; + echo ' Margin: '.$account['margin']."\n"; + echo ' Transfer: '.$account['transfer']."\n"; + echo ' Position Mode: '.$account['positionMode']."\n"; + echo ' Cross Unrealized PnL: '.$account['crossUnrealizedPNL']."\n"; + echo ' Isolation Unrealized PnL: '.$account['isolationUnrealizedPNL']."\n"; + echo ' Bonus: '.$account['bonus']."\n"; } else { - echo "❌ API Error: " . $data['msg'] . "\n"; + echo '❌ API Error: '.$data['msg']."\n"; } } else { - echo "❌ HTTP Error: " . $response->getStatusCode() . "\n"; + echo '❌ HTTP Error: '.$response->getStatusCode()."\n"; } echo "\n"; @@ -62,23 +62,23 @@ try { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { echo "✅ BTC account details retrieved successfully!\n"; - + $account = $data['data'][0]; echo "Account Details:\n"; - echo " Margin Coin: " . $account['marginCoin'] . "\n"; - echo " Available: " . $account['available'] . "\n"; - echo " Frozen: " . $account['frozen'] . "\n"; - echo " Margin: " . $account['margin'] . "\n"; - echo " Transfer: " . $account['transfer'] . "\n"; - echo " Position Mode: " . $account['positionMode'] . "\n"; - echo " Cross Unrealized PnL: " . $account['crossUnrealizedPNL'] . "\n"; - echo " Isolation Unrealized PnL: " . $account['isolationUnrealizedPNL'] . "\n"; - echo " Bonus: " . $account['bonus'] . "\n"; + echo ' Margin Coin: '.$account['marginCoin']."\n"; + echo ' Available: '.$account['available']."\n"; + echo ' Frozen: '.$account['frozen']."\n"; + echo ' Margin: '.$account['margin']."\n"; + echo ' Transfer: '.$account['transfer']."\n"; + echo ' Position Mode: '.$account['positionMode']."\n"; + echo ' Cross Unrealized PnL: '.$account['crossUnrealizedPNL']."\n"; + echo ' Isolation Unrealized PnL: '.$account['isolationUnrealizedPNL']."\n"; + echo ' Bonus: '.$account['bonus']."\n"; } else { - echo "❌ API Error: " . $data['msg'] . "\n"; + echo '❌ API Error: '.$data['msg']."\n"; } } else { - echo "❌ HTTP Error: " . $response->getStatusCode() . "\n"; + echo '❌ HTTP Error: '.$response->getStatusCode()."\n"; } echo "\n"; @@ -89,19 +89,19 @@ try { foreach ($marginCoins as $marginCoin) { echo "Getting {$marginCoin} account details...\n"; - + $response = $api->getSingleAccount($marginCoin); - + if ($response->getStatusCode() === 200) { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { $account = $data['data'][0]; echo "✅ {$marginCoin} account: Available={$account['available']}, Frozen={$account['frozen']}, Margin={$account['margin']}\n"; } else { - echo "❌ Failed to get {$marginCoin} account: " . $data['msg'] . "\n"; + echo "❌ Failed to get {$marginCoin} account: ".$data['msg']."\n"; } } else { - echo "❌ HTTP Error for {$marginCoin}: " . $response->getStatusCode() . "\n"; + echo "❌ HTTP Error for {$marginCoin}: ".$response->getStatusCode()."\n"; } } @@ -110,19 +110,19 @@ try { // Example 4: Error handling echo "4. Error handling example...\n"; $invalidMarginCoin = 'INVALID'; - + $response = $api->getSingleAccount($invalidMarginCoin); - + if ($response->getStatusCode() === 200) { $data = json_decode($response->getBody()->getContents(), true); if ($data['code'] === 0) { echo "✅ Account details retrieved successfully!\n"; } else { - echo "❌ API Error: " . $data['msg'] . "\n"; + echo '❌ API Error: '.$data['msg']."\n"; echo "This is expected for invalid margin coin\n"; } } else { - echo "❌ HTTP Error: " . $response->getStatusCode() . "\n"; + echo '❌ HTTP Error: '.$response->getStatusCode()."\n"; } } catch (Exception $e) { @@ -131,12 +131,12 @@ try { /** * Get Single Account Features: - * + * * - Get account details for specific margin coin * - Rate limit: 10 req/sec/uid * - Returns comprehensive account information * - Supports multiple margin coins - * + * * Response includes: * - marginCoin: Margin Coin * - available: Available quantity in the account @@ -147,7 +147,7 @@ try { * - crossUnrealizedPNL: Unrealized PnL for cross positions * - isolationUnrealizedPNL: Unrealized PnL for isolation positions * - bonus: Futures Bonus - * + * * Environment Variables Required: * * BITUNIX_API_KEY=your-api-key diff --git a/src/Requests/FlashClosePositionRequestContract.php b/src/Requests/FlashClosePositionRequestContract.php index ad0117a..607ef80 100644 --- a/src/Requests/FlashClosePositionRequestContract.php +++ b/src/Requests/FlashClosePositionRequestContract.php @@ -9,8 +9,7 @@ interface FlashClosePositionRequestContract /** * Flash close position by position ID * - * @param string $positionId Position ID - * @return ResponseInterface + * @param string $positionId Position ID */ public function flashClosePosition(string $positionId): ResponseInterface; } diff --git a/src/Requests/GetPendingPositionsRequestContract.php b/src/Requests/GetPendingPositionsRequestContract.php index 7b4d267..3e6efb8 100644 --- a/src/Requests/GetPendingPositionsRequestContract.php +++ b/src/Requests/GetPendingPositionsRequestContract.php @@ -9,9 +9,8 @@ interface GetPendingPositionsRequestContract /** * Get pending positions * - * @param string|null $symbol Trading pair (optional) - * @param string|null $positionId Position ID (optional) - * @return ResponseInterface + * @param string|null $symbol Trading pair (optional) + * @param string|null $positionId Position ID (optional) */ public function getPendingPositions(?string $symbol = null, ?string $positionId = null): ResponseInterface; } diff --git a/src/Requests/GetSingleAccountRequestContract.php b/src/Requests/GetSingleAccountRequestContract.php index 63911b1..3cfd7be 100644 --- a/src/Requests/GetSingleAccountRequestContract.php +++ b/src/Requests/GetSingleAccountRequestContract.php @@ -9,8 +9,7 @@ interface GetSingleAccountRequestContract /** * Get account details with the given margin coin * - * @param string $marginCoin Margin coin (e.g., 'USDT') - * @return ResponseInterface + * @param string $marginCoin Margin coin (e.g., 'USDT') */ public function getSingleAccount(string $marginCoin): ResponseInterface; } diff --git a/src/Requests/Header.php b/src/Requests/Header.php index d1fb011..70eea0e 100644 --- a/src/Requests/Header.php +++ b/src/Requests/Header.php @@ -33,7 +33,7 @@ class Header $result = ''; foreach ($sortedParameters as $key => $value) { - $result .= $key . $value; + $result .= $key.$value; } return $result; @@ -82,7 +82,7 @@ class Header // Step 3: Create digest: SHA256(nonce + timestamp + api-key + queryParams + body (if not empty)) if (strlen($bodyString) == 0) { $digestInput = $nonce.$timestamp.$apiKey.$queryParamsString; - }else{ + } else { $digestInput = $nonce.$timestamp.$apiKey.$queryParamsString.$bodyString; } $digest = hash('sha256', $digestInput); diff --git a/tests/FlashClosePositionTest.php b/tests/FlashClosePositionTest.php index 469ed8d..45fb5cb 100644 --- a/tests/FlashClosePositionTest.php +++ b/tests/FlashClosePositionTest.php @@ -14,7 +14,7 @@ beforeEach(function () { it('can flash close position successfully', function () { $api = app(FlashClosePositionRequestContract::class); - expect(fn() => $api->flashClosePosition('19848247723672')) + expect(fn () => $api->flashClosePosition('19848247723672')) ->not->toThrow(Exception::class); }); @@ -22,9 +22,9 @@ it('validates required position ID parameter', function () { $api = app(FlashClosePositionRequestContract::class); // Test with valid position ID - expect(fn() => $api->flashClosePosition('19848247723672')) + expect(fn () => $api->flashClosePosition('19848247723672')) ->not->toThrow(Exception::class) - ->and(fn() => $api->flashClosePosition('123456789')) + ->and(fn () => $api->flashClosePosition('123456789')) ->not->toThrow(Exception::class); }); @@ -36,11 +36,11 @@ it('can handle different position ID formats', function () { '123456789', '987654321', 'position-123', - 'pos_456' + 'pos_456', ]; foreach ($positionIds as $positionId) { - expect(fn() => $api->flashClosePosition($positionId)) + expect(fn () => $api->flashClosePosition($positionId)) ->not->toThrow(Exception::class); } }); @@ -49,9 +49,9 @@ it('validates position ID parameter type', function () { $api = app(FlashClosePositionRequestContract::class); // Test with string position ID - expect(fn() => $api->flashClosePosition('19848247723672')) + expect(fn () => $api->flashClosePosition('19848247723672')) ->not->toThrow(Exception::class) - ->and(fn() => $api->flashClosePosition('123456789')) + ->and(fn () => $api->flashClosePosition('123456789')) ->not->toThrow(Exception::class); }); @@ -59,9 +59,9 @@ it('can handle edge cases for position ID', function () { $api = app(FlashClosePositionRequestContract::class); // Test with long position ID - expect(fn() => $api->flashClosePosition('198482477236721234567890')) + expect(fn () => $api->flashClosePosition('198482477236721234567890')) ->not->toThrow(Exception::class) - ->and(fn() => $api->flashClosePosition('123')) + ->and(fn () => $api->flashClosePosition('123')) ->not->toThrow(Exception::class); }); @@ -77,7 +77,7 @@ it('can handle multiple flash close position calls', function () { $positionIds = ['19848247723672', '19848247723673', '19848247723674']; foreach ($positionIds as $positionId) { - expect(fn() => $api->flashClosePosition($positionId)) + expect(fn () => $api->flashClosePosition($positionId)) ->not->toThrow(Exception::class); } }); @@ -87,7 +87,7 @@ it('validates flash close position response structure', function () { // This test verifies the method can be called without throwing exceptions // The actual response structure will be validated by the API - expect(fn() => $api->flashClosePosition('19848247723672')) + expect(fn () => $api->flashClosePosition('19848247723672')) ->not->toThrow(Exception::class); }); @@ -95,9 +95,9 @@ it('can handle special characters in position ID', function () { $api = app(FlashClosePositionRequestContract::class); // Test with position ID containing special characters - expect(fn() => $api->flashClosePosition('pos-123_456')) + expect(fn () => $api->flashClosePosition('pos-123_456')) ->not->toThrow(Exception::class) - ->and(fn() => $api->flashClosePosition('pos.123.456')) + ->and(fn () => $api->flashClosePosition('pos.123.456')) ->not->toThrow(Exception::class); }); @@ -106,6 +106,6 @@ it('validates flash close position with empty string', function () { // This should not throw an exception at the method level // The API will handle validation - expect(fn() => $api->flashClosePosition('')) + expect(fn () => $api->flashClosePosition('')) ->not->toThrow(Exception::class); }); diff --git a/tests/GetPendingPositionsTest.php b/tests/GetPendingPositionsTest.php index b637f17..c552155 100644 --- a/tests/GetPendingPositionsTest.php +++ b/tests/GetPendingPositionsTest.php @@ -14,28 +14,28 @@ beforeEach(function () { it('can get all pending positions', function () { $api = app(GetPendingPositionsRequestContract::class); - expect(fn() => $api->getPendingPositions()) + expect(fn () => $api->getPendingPositions()) ->not->toThrow(Exception::class); }); it('can get pending positions by symbol', function () { $api = app(GetPendingPositionsRequestContract::class); - expect(fn() => $api->getPendingPositions('BTCUSDT')) + expect(fn () => $api->getPendingPositions('BTCUSDT')) ->not->toThrow(Exception::class); }); it('can get pending positions by position ID', function () { $api = app(GetPendingPositionsRequestContract::class); - expect(fn() => $api->getPendingPositions(null, '19848247723672')) + expect(fn () => $api->getPendingPositions(null, '19848247723672')) ->not->toThrow(Exception::class); }); it('can get pending positions with both symbol and position ID', function () { $api = app(GetPendingPositionsRequestContract::class); - expect(fn() => $api->getPendingPositions('BTCUSDT', '19848247723672')) + expect(fn () => $api->getPendingPositions('BTCUSDT', '19848247723672')) ->not->toThrow(Exception::class); }); @@ -43,15 +43,15 @@ it('validates required parameters for get pending positions', function () { $api = app(GetPendingPositionsRequestContract::class); // Test without parameters - expect(fn() => $api->getPendingPositions()) + expect(fn () => $api->getPendingPositions()) ->not->toThrow(Exception::class); // Test with symbol only - expect(fn() => $api->getPendingPositions('BTCUSDT')) + expect(fn () => $api->getPendingPositions('BTCUSDT')) ->not->toThrow(Exception::class); // Test with position ID only - expect(fn() => $api->getPendingPositions(null, '19848247723672')) + expect(fn () => $api->getPendingPositions(null, '19848247723672')) ->not->toThrow(Exception::class); }); @@ -61,7 +61,7 @@ it('can handle different trading pairs', function () { $tradingPairs = ['BTCUSDT', 'ETHUSDT', 'ADAUSDT']; foreach ($tradingPairs as $symbol) { - expect(fn() => $api->getPendingPositions($symbol)) + expect(fn () => $api->getPendingPositions($symbol)) ->not->toThrow(Exception::class); } }); @@ -74,11 +74,11 @@ it('can handle different position ID formats', function () { '123456789', '987654321', 'position-123', - 'pos_456' + 'pos_456', ]; foreach ($positionIds as $positionId) { - expect(fn() => $api->getPendingPositions(null, $positionId)) + expect(fn () => $api->getPendingPositions(null, $positionId)) ->not->toThrow(Exception::class); } }); @@ -93,11 +93,11 @@ it('can handle edge cases for parameters', function () { $api = app(GetPendingPositionsRequestContract::class); // Test with empty string symbol - expect(fn() => $api->getPendingPositions('')) + expect(fn () => $api->getPendingPositions('')) ->not->toThrow(Exception::class); // Test with empty string position ID - expect(fn() => $api->getPendingPositions(null, '')) + expect(fn () => $api->getPendingPositions(null, '')) ->not->toThrow(Exception::class); }); @@ -105,11 +105,11 @@ it('can handle special characters in parameters', function () { $api = app(GetPendingPositionsRequestContract::class); // Test with special characters in symbol - expect(fn() => $api->getPendingPositions('BTC-USDT')) + expect(fn () => $api->getPendingPositions('BTC-USDT')) ->not->toThrow(Exception::class); // Test with special characters in position ID - expect(fn() => $api->getPendingPositions(null, 'pos-123_456')) + expect(fn () => $api->getPendingPositions(null, 'pos-123_456')) ->not->toThrow(Exception::class); }); @@ -118,7 +118,7 @@ it('validates get pending positions response structure', function () { // This test verifies the method can be called without throwing exceptions // The actual response structure will be validated by the API - expect(fn() => $api->getPendingPositions()) + expect(fn () => $api->getPendingPositions()) ->not->toThrow(Exception::class); }); @@ -128,7 +128,7 @@ it('can handle multiple get pending positions calls', function () { $symbols = ['BTCUSDT', 'ETHUSDT', 'ADAUSDT']; foreach ($symbols as $symbol) { - expect(fn() => $api->getPendingPositions($symbol)) + expect(fn () => $api->getPendingPositions($symbol)) ->not->toThrow(Exception::class); } }); @@ -139,11 +139,11 @@ it('can handle combination of symbol and position ID', function () { $combinations = [ ['BTCUSDT', '19848247723672'], ['ETHUSDT', '19848247723673'], - ['ADAUSDT', '19848247723674'] + ['ADAUSDT', '19848247723674'], ]; foreach ($combinations as [$symbol, $positionId]) { - expect(fn() => $api->getPendingPositions($symbol, $positionId)) + expect(fn () => $api->getPendingPositions($symbol, $positionId)) ->not->toThrow(Exception::class); } }); diff --git a/tests/GetSingleAccountTest.php b/tests/GetSingleAccountTest.php index b1ed082..37da6ba 100644 --- a/tests/GetSingleAccountTest.php +++ b/tests/GetSingleAccountTest.php @@ -14,7 +14,7 @@ beforeEach(function () { it('can get single account successfully', function () { $api = app(GetSingleAccountRequestContract::class); - expect(fn() => $api->getSingleAccount('USDT')) + expect(fn () => $api->getSingleAccount('USDT')) ->not->toThrow(Exception::class); }); @@ -22,11 +22,11 @@ it('validates required margin coin parameter', function () { $api = app(GetSingleAccountRequestContract::class); // Test with valid margin coin - expect(fn() => $api->getSingleAccount('USDT')) + expect(fn () => $api->getSingleAccount('USDT')) ->not->toThrow(Exception::class); // Test with different margin coins - expect(fn() => $api->getSingleAccount('BTC')) + expect(fn () => $api->getSingleAccount('BTC')) ->not->toThrow(Exception::class); }); @@ -36,7 +36,7 @@ it('can handle different margin coins', function () { $marginCoins = ['USDT', 'BTC', 'ETH', 'BNB', 'ADA']; foreach ($marginCoins as $marginCoin) { - expect(fn() => $api->getSingleAccount($marginCoin)) + expect(fn () => $api->getSingleAccount($marginCoin)) ->not->toThrow(Exception::class); } }); @@ -51,11 +51,11 @@ it('can handle edge cases for margin coin', function () { $api = app(GetSingleAccountRequestContract::class); // Test with uppercase margin coin - expect(fn() => $api->getSingleAccount('USDT')) + expect(fn () => $api->getSingleAccount('USDT')) ->not->toThrow(Exception::class); // Test with lowercase margin coin - expect(fn() => $api->getSingleAccount('usdt')) + expect(fn () => $api->getSingleAccount('usdt')) ->not->toThrow(Exception::class); }); @@ -64,7 +64,7 @@ it('validates get single account response structure', function () { // This test verifies the method can be called without throwing exceptions // The actual response structure will be validated by the API - expect(fn() => $api->getSingleAccount('USDT')) + expect(fn () => $api->getSingleAccount('USDT')) ->not->toThrow(Exception::class); }); @@ -74,7 +74,7 @@ it('can handle multiple get single account calls', function () { $marginCoins = ['USDT', 'BTC', 'ETH']; foreach ($marginCoins as $marginCoin) { - expect(fn() => $api->getSingleAccount($marginCoin)) + expect(fn () => $api->getSingleAccount($marginCoin)) ->not->toThrow(Exception::class); } }); @@ -83,11 +83,11 @@ it('validates margin coin parameter type', function () { $api = app(GetSingleAccountRequestContract::class); // Test with string margin coin - expect(fn() => $api->getSingleAccount('USDT')) + expect(fn () => $api->getSingleAccount('USDT')) ->not->toThrow(Exception::class); // Test with different string formats - expect(fn() => $api->getSingleAccount('BTC')) + expect(fn () => $api->getSingleAccount('BTC')) ->not->toThrow(Exception::class); }); @@ -95,11 +95,11 @@ it('can handle special characters in margin coin', function () { $api = app(GetSingleAccountRequestContract::class); // Test with margin coin containing special characters - expect(fn() => $api->getSingleAccount('USDT')) + expect(fn () => $api->getSingleAccount('USDT')) ->not->toThrow(Exception::class); // Test with margin coin containing numbers - expect(fn() => $api->getSingleAccount('USDT')) + expect(fn () => $api->getSingleAccount('USDT')) ->not->toThrow(Exception::class); }); @@ -108,6 +108,6 @@ it('validates get single account with empty string', function () { // This should not throw an exception at the method level // The API will handle validation - expect(fn() => $api->getSingleAccount('')) + expect(fn () => $api->getSingleAccount('')) ->not->toThrow(Exception::class); });