diff --git a/src/MoneyFormatter.php b/src/MoneyFormatter.php index f76d3c1..f83e646 100644 --- a/src/MoneyFormatter.php +++ b/src/MoneyFormatter.php @@ -39,7 +39,7 @@ public static function parseDecimal($moneyString, Currency $currency, string $lo $numberFormatter = self::getNumberFormatter($locale, NumberFormatter::DECIMAL); $moneyParser = new IntlLocalizedDecimalParser($numberFormatter, $currencies); - // Needed to fix some parsing issues with small numbers such as "2,00" with "," as thousands separator + // Needed to fix some parsing issues with small numbers such as "2,00" with "," left as thousands separator in the wrong place // See: https://github.com/pelmered/filament-money-field/issues/20 $formattingRules = self::getFormattingRules($locale); $moneyString = str_replace($formattingRules->groupingSeparator, '', $moneyString); diff --git a/tests/MoneyFormatterTest.php b/tests/MoneyFormatterTest.php index 5e01124..2dded83 100644 --- a/tests/MoneyFormatterTest.php +++ b/tests/MoneyFormatterTest.php @@ -164,7 +164,7 @@ public static function provideDecimalDataUSD(): array ], ]; } - + #[DataProvider('provideMoneyDataUSD')] public function testMoneyFormatterUSD(mixed $input, string $expectedOutput) { @@ -202,7 +202,7 @@ public function testMoneyDecimalFormatterSEK(mixed $input, string $expectedOutpu MoneyFormatter::formatAsDecimal($input, new Currency('SEK'), 'sv_SE') ); } - + #[DataProvider('provideDecimalDataSEK')] //#[CoversClass(MoneyFormatter::class)] public function testMoneyParserDecimalSEK(mixed $input, string $expectedOutput) @@ -221,4 +221,14 @@ public function testMoneyParserDecimalUSD(mixed $input, string $expectedOutput) MoneyFormatter::parseDecimal($input, new Currency('USD'), 'en_US') ); } + + public static function testMoneyParserDecimal(): void + { + // Tests for some parsing issues with small numbers such as "2,00" with "," left as thousands separator in the wrong place + // See: https://github.com/pelmered/filament-money-field/issues/20 + self::assertSame( + '20000', + MoneyFormatter::parseDecimal('2,00', new Currency('USD'), 'en_US') + ); + } }