Teren-app/tests/Unit/SmsServiceFormatEuTest.php
2025-10-26 12:57:09 +01:00

39 lines
1.1 KiB
PHP

<?php
use App\Models\SmsProfile;
use App\Services\Sms\SmsClient;
use App\Services\Sms\SmsMessage;
use App\Services\Sms\SmsResult;
use App\Services\Sms\SmsService;
it('formats amounts to EU style', function () {
$client = new class implements SmsClient
{
public function send(SmsProfile $profile, SmsMessage $message): SmsResult
{
throw new RuntimeException('not used');
}
public function getCreditBalance(SmsProfile $profile): int
{
return 0;
}
public function getPriceQuotes(SmsProfile $profile): array
{
return [];
}
};
$sms = new SmsService($client);
expect($sms->formatAmountEu(0))->toBe('0,00');
expect($sms->formatAmountEu('1'))->toBe('1,00');
expect($sms->formatAmountEu('12.3'))->toBe('12,30');
expect($sms->formatAmountEu('1234.56'))->toBe('1.234,56');
expect($sms->formatAmountEu('9876543.21'))->toBe('9.876.543,21');
expect($sms->formatAmountEu('-42.5'))->toBe('-42,50');
// Accept EU input too
expect($sms->formatAmountEu('1.234,56'))->toBe('1.234,56');
});