Use Symfony formatter for currency symbol placement (#542)

This commit is contained in:
Sanjit Patel
2019-02-08 10:56:47 -05:00
committed by Kevin Papst
parent b2587c71b8
commit 616d514d5a
12 changed files with 58 additions and 33 deletions

View File

@@ -31,7 +31,7 @@ class CsvRendererTest extends AbstractRendererTest
public function getTestModel()
{
return [
['01:50 h', '2,437.12 €', '1,947.99 €', 7, 5, 1, 2, 2]
['01:50 h', '€2,437.12', '€1,947.99', 7, 5, 1, 2, 2]
];
}

View File

@@ -55,7 +55,7 @@ class HtmlRendererTest extends AbstractRendererTest
$this->assertContains('<td>Customer Name</td>', $content);
$this->assertContains('<td>project name</td>', $content);
$this->assertContains('<td class="duration">01:50 h</td>', $content);
$this->assertContains('<td class="cost">2,437.12 €</td>', $content);
$this->assertContains('<td class="cost">€2,437.12</td>', $content);
$this->assertEquals(5, substr_count($content, '<td>activity description</td>'));
}

View File

@@ -60,7 +60,7 @@ abstract class AbstractRendererTest extends KernelTestCase
$languages = [
'en' => [
'date' => 'Y.m.d',
'duration' => '%%h:%%m h'
'duration' => '%h:%m h'
]
];
@@ -83,6 +83,7 @@ abstract class AbstractRendererTest extends KernelTestCase
protected function getInvoiceModel()
{
$customer = new Customer();
$customer->setCurrency('EUR');
$template = new InvoiceTemplate();
$template->setTitle('a test invoice template title');
$template->setVat(19);
@@ -194,6 +195,7 @@ abstract class AbstractRendererTest extends KernelTestCase
protected function getInvoiceModelOneEntry()
{
$customer = new Customer();
$customer->setCurrency('USD');
$template = new InvoiceTemplate();
$template->setTitle('a test invoice template title');
$template->setVat(19);

View File

@@ -36,8 +36,8 @@ class CsvRendererTest extends AbstractRendererTest
public function getTestModel()
{
yield [$this->getInvoiceModel(), '1,947.99', 6, 5, 1, 2, 2];
yield [$this->getInvoiceModelOneEntry(), '293.27', 2, 1, 0, 1, 0];
yield [$this->getInvoiceModel(), '€1,947.99', 6, 5, 1, 2, 2];
yield [$this->getInvoiceModelOneEntry(), '$293.27', 2, 1, 0, 1, 0];
}
/**

View File

@@ -100,6 +100,7 @@ class DebugRendererTest extends AbstractRendererTest
'entry.amount',
'entry.rate',
'entry.total',
'entry.currency',
'entry.duration',
'entry.duration_minutes',
'entry.begin',

View File

@@ -15,6 +15,7 @@ use App\Utils\LocaleSettings;
use PHPUnit\Framework\TestCase;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Intl\Util\IntlTestHelper;
use Twig\TwigFilter;
/**
@@ -112,10 +113,6 @@ class ExtensionsTest extends TestCase
}
/**
* @param string $result
* @param int $amount
* @param string $currency
* @param string $locale
* @dataProvider getMoneyData
*/
public function testMoney($result, $amount, $currency, $locale)
@@ -127,19 +124,36 @@ class ExtensionsTest extends TestCase
public function getMoneyData()
{
return [
['0 €', null, 'EUR', 'de'],
['2.345 €', 2345, 'EUR', 'de'],
['2,345 €', 2345, 'EUR', 'en'],
['2,345.01 €', 2345.009, 'EUR', 'en'],
['2.345,01 €', 2345.009, 'EUR', 'de'],
['13.75 $', 13.75, 'USD', 'en'],
['13,75 $', 13.75, 'USD', 'de'],
['13,75 RUB', 13.75, 'RUB', 'de'],
['13,5 RUB', 13.50, 'RUB', 'de'],
['13,75 ₽', 13.75, 'RUB', 'ru'],
['14 ¥', 13.75, 'JPY', 'de'],
['13 933 ¥', 13933.49, 'JPY', 'ru'],
['1.234.567,89 $', 1234567.891234567890000, 'USD', 'de'],
['0,00 €', null, 'EUR', 'de'],
['2.345,00 €', 2345, 'EUR', 'de'],
['€2,345.00', 2345, 'EUR', 'en'],
['€2,345.01', 2345.009, 'EUR', 'en'],
['2.345,01 €', 2345.009, 'EUR', 'de'],
['$13.75', 13.75, 'USD', 'en'],
['13,75 $', 13.75, 'USD', 'de'],
['13,75 RUB', 13.75, 'RUB', 'de'],
['14 ¥', 13.75, 'JPY', 'de'],
['13 933 ¥', 13933.49, 'JPY', 'ru'],
['1.234.567,89 $', 1234567.891234567890000, 'USD', 'de'],
];
}
/**
* @dataProvider getMoneyData62_1
*/
public function testMoney62_1($result, $amount, $currency, $locale)
{
IntlTestHelper::requireFullIntl($this, '62.1');
$sut = $this->getSut($this->localeEn, $locale);
$this->assertEquals($result, $sut->money($amount, $currency));
}
public function getMoneyData62_1()
{
return [
['RUB 13.50', 13.50, 'RUB', 'en'],
['13,75 ₽', 13.75, 'RUB', 'ru'],
];
}