1
0
Fork 0
mirror of https://github.com/archtechx/money.git synced 2025-12-12 11:24:03 +00:00

Fixes #11 - Remove trailing zeros from formatted price (#18)

* Remove trailing zeros from formatted price

* Add setting for how to handle trailing decimal zeros

* Write tests

* Fix code style

* Rewrite function description

* Change test name

* Add empty line at end of file

* rename deleteTrailingDecimalZeros to trimTrailingDecimalZeros

* Fix grammar

* Remove unnecessary parameter declarations

* fix test name

* fix comment grammar

* fix docblock grammar

Co-authored-by: Samuel Štancl <samuel@archte.ch>
This commit is contained in:
David Andersson 2022-05-16 13:12:13 +02:00 committed by GitHub
parent 545610efb0
commit 269274586a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 52 additions and 1 deletions

17
tests/Currencies/SEK.php Normal file
View file

@ -0,0 +1,17 @@
<?php
namespace ArchTech\Money\Tests\Currencies;
use ArchTech\Money\Currency;
class SEK extends Currency
{
protected string $code = 'SEK';
protected string $name = 'Swedish crown';
protected float $rate = 9.94;
protected int $mathDecimals = 4;
protected int $displayDecimals = 2;
protected int $rounding = 0;
protected string $suffix = ' kr';
protected bool $trimTrailingDecimalZeros = true;
}

View file

@ -28,6 +28,7 @@ test('currencies can be serialized to JSON', function () {
'rounding' => 2,
'decimalSeparator' => ',',
'thousandsSeparator' => '.',
'trimTrailingDecimalZeros' => false,
]);
});

View file

@ -5,8 +5,9 @@ use ArchTech\Money\Currency;
use ArchTech\Money\Money;
use ArchTech\Money\Tests\Currencies\CZK;
use ArchTech\Money\Tests\Currencies\EUR;
use ArchTech\Money\Tests\Currencies\SEK;
beforeEach(fn () => currencies()->add([CZK::class, EUR::class]));
beforeEach(fn () => currencies()->add([CZK::class, EUR::class, SEK::class]));
test('prefixes are applied', function () {
expect(Money::fromDecimal(10.00, USD::class)->formatted())->toBe('$10.00');
@ -45,3 +46,15 @@ test('the format method accepts overrides', function () {
expect(Money::fromDecimal(10.45)->formatted(['decimalSeparator' => ',', 'prefix' => '$$$']))->toBe('$$$10,45');
expect(Money::fromDecimal(10.45)->formatted(decimalSeparator: ',', suffix: ' USD'))->toBe('$10,45 USD');
});
test('decimal zeros can be trimmed', function () {
// SEK uses decimal zero trimming
expect(Money::fromDecimal(10.00, SEK::class)->formatted())->toBe('10 kr');
expect(Money::fromDecimal(10.10, SEK::class)->formatted())->toBe('10.1 kr');
expect(Money::fromDecimal(10.12, SEK::class)->formatted())->toBe('10.12 kr');
// EUR does not use decimal zero trimming
expect(Money::fromDecimal(10.00, EUR::class)->formatted())->toBe('10.00 €');
expect(Money::fromDecimal(10.10, EUR::class)->formatted())->toBe('10.10 €');
expect(Money::fromDecimal(10.12, EUR::class)->formatted())->toBe('10.12 €');
});