Skip to content

Commit 72ddef7

Browse files
committed
Test multiconv with symbols
1 parent 292def9 commit 72ddef7

3 files changed

Lines changed: 44 additions & 0 deletions

File tree

tests/CurrentConversionTest.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44

55
namespace Peso\Services\Tests;
66

7+
use Peso\Core\Exceptions\ConversionNotPerformedException;
78
use Peso\Core\Requests\CurrentConversionRequest;
89
use Peso\Core\Responses\ConversionResponse;
10+
use Peso\Core\Responses\ErrorResponse;
911
use Peso\Core\Types\Decimal;
1012
use Peso\Services\CurrencyApiService;
1113
use Peso\Services\CurrencyApiService\Subscription;
@@ -101,4 +103,42 @@ public function testCurrentMulticonv(): void
101103

102104
self::assertCount(3, $http->getRequests());
103105
}
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+
}
104144
}

tests/Helpers/MockClient.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ static function (RequestInterface $request) {
106106
case 'apikey=xxxpaidxxx&base_currency=USD&value=1234.56':
107107
return new Response(body: fopen(__DIR__ . '/../data/conv/latest-USD.json', 'r'));
108108

109+
case 'apikey=xxxpaidxxx&base_currency=EUR&value=1234.56&currencies=USD%2CJPY%2CPHP%2CBYN':
110+
return new Response(body: fopen(__DIR__ . '/../data/conv/latest-EUR-USD,JPY,PHP,BYN.json', 'r'));
111+
109112
default:
110113
throw new \LogicException('Non-mocked query: ' . $query);
111114
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"meta":{"last_updated_at":"2025-08-06T14:59:59Z"},"data":{"BYN":{"code":"BYN","value":4735.2058465878},"JPY":{"code":"JPY","value":211542.0067148109},"PHP":{"code":"PHP","value":82298.0596297993},"USD":{"code":"USD","value":1434.7839204863}}}

0 commit comments

Comments
 (0)