|
4 | 4 |
|
5 | 5 | namespace Peso\Services\Tests; |
6 | 6 |
|
| 7 | +use Peso\Core\Exceptions\ConversionNotPerformedException; |
7 | 8 | use Peso\Core\Requests\CurrentConversionRequest; |
8 | 9 | use Peso\Core\Responses\ConversionResponse; |
| 10 | +use Peso\Core\Responses\ErrorResponse; |
9 | 11 | use Peso\Core\Types\Decimal; |
10 | 12 | use Peso\Services\CurrencyApiService; |
11 | 13 | use Peso\Services\CurrencyApiService\Subscription; |
@@ -101,4 +103,42 @@ public function testCurrentMulticonv(): void |
101 | 103 |
|
102 | 104 | self::assertCount(3, $http->getRequests()); |
103 | 105 | } |
| 106 | + |
| 107 | + public function testCurrentMulticonvSymbols(): void |
| 108 | + { |
| 109 | + $cache = new Psr16Cache(new ArrayAdapter()); |
| 110 | + $http = MockClient::get(); |
| 111 | + |
| 112 | + $service = new CurrencyApiService( |
| 113 | + 'xxxpaidxxx', |
| 114 | + Subscription::Paid, |
| 115 | + symbols: ['USD', 'JPY', 'PHP', 'BYN'], |
| 116 | + multiconversion: true, |
| 117 | + cache: $cache, |
| 118 | + httpClient: $http, |
| 119 | + ); |
| 120 | + |
| 121 | + $response = $service->send( |
| 122 | + new CurrentConversionRequest(Decimal::init('1234.56'), 'EUR', 'USD'), |
| 123 | + ); |
| 124 | + self::assertInstanceOf(ConversionResponse::class, $response); |
| 125 | + self::assertEquals('1434.7839204863', $response->amount->value); |
| 126 | + self::assertEquals('2025-08-06', $response->date->toString()); |
| 127 | + |
| 128 | + $response = $service->send( |
| 129 | + new CurrentConversionRequest(Decimal::init('1234.56'), 'EUR', 'JPY'), |
| 130 | + ); |
| 131 | + self::assertInstanceOf(ConversionResponse::class, $response); |
| 132 | + self::assertEquals('211542.00671481', $response->amount->value); |
| 133 | + self::assertEquals('2025-08-06', $response->date->toString()); |
| 134 | + |
| 135 | + $response = $service->send( |
| 136 | + new CurrentConversionRequest(Decimal::init('1234.56'), 'EUR', 'TRY'), |
| 137 | + ); |
| 138 | + self::assertInstanceOf(ErrorResponse::class, $response); |
| 139 | + self::assertInstanceOf(ConversionNotPerformedException::class, $response->exception); |
| 140 | + self::assertEquals('Unable to convert 1234.56 EUR to TRY', $response->exception->getMessage()); |
| 141 | + |
| 142 | + self::assertCount(1, $http->getRequests()); |
| 143 | + } |
104 | 144 | } |
0 commit comments