use configured language for non-twig invoice templates (#1924)
This commit is contained in:
@@ -72,7 +72,7 @@ class InvoiceControllerTest extends ControllerBaseTest
|
||||
$fixture = new InvoiceFixtures();
|
||||
$this->importFixture($fixture);
|
||||
|
||||
$this->request($client, '/invoice/?preview=');
|
||||
$this->request($client, '/invoice/?customer=1&template=1&preview=');
|
||||
$this->assertTrue($client->getResponse()->isSuccessful());
|
||||
|
||||
$this->assertHasNoEntriesWithFilter($client);
|
||||
|
||||
@@ -29,10 +29,6 @@ use App\Invoice\InvoiceModel;
|
||||
use App\Invoice\NumberGenerator\DateNumberGenerator;
|
||||
use App\Invoice\Renderer\AbstractRenderer;
|
||||
use App\Repository\Query\InvoiceQuery;
|
||||
use App\Twig\DateExtensions;
|
||||
use App\Twig\LocaleExtensions;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
|
||||
trait RendererTestTrait
|
||||
{
|
||||
@@ -72,7 +68,6 @@ trait RendererTestTrait
|
||||
|
||||
protected function getFormatter(): InvoiceFormatter
|
||||
{
|
||||
$requestStack = new RequestStack();
|
||||
$languages = [
|
||||
'en' => [
|
||||
'date' => 'Y.m.d',
|
||||
@@ -81,16 +76,9 @@ trait RendererTestTrait
|
||||
]
|
||||
];
|
||||
|
||||
$request = new Request();
|
||||
$request->setLocale('en');
|
||||
$requestStack->push($request);
|
||||
|
||||
$formattings = new LanguageFormattings($languages);
|
||||
|
||||
$dateExtension = new DateExtensions($requestStack, $formattings);
|
||||
$extensions = new LocaleExtensions($requestStack, $formattings);
|
||||
|
||||
return new DefaultInvoiceFormatter($dateExtension, $extensions);
|
||||
return new DefaultInvoiceFormatter($formattings, 'en');
|
||||
}
|
||||
|
||||
protected function getInvoiceModel(): InvoiceModel
|
||||
|
||||
@@ -9,14 +9,17 @@
|
||||
|
||||
namespace App\Tests\Invoice;
|
||||
|
||||
use App\Configuration\LanguageFormattings;
|
||||
use App\Entity\Invoice;
|
||||
use App\Entity\InvoiceDocument;
|
||||
use App\Entity\InvoiceTemplate;
|
||||
use App\Invoice\Calculator\DefaultCalculator;
|
||||
use App\Invoice\NumberGenerator\DateNumberGenerator;
|
||||
use App\Invoice\Renderer\TwigRenderer;
|
||||
use App\Invoice\ServiceInvoice;
|
||||
use App\Repository\InvoiceDocumentRepository;
|
||||
use App\Repository\InvoiceRepository;
|
||||
use App\Repository\Query\InvoiceQuery;
|
||||
use App\Tests\Mocks\Security\UserDateTimeFactoryFactory;
|
||||
use App\Utils\FileHelper;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
@@ -29,11 +32,21 @@ class ServiceInvoiceTest extends TestCase
|
||||
{
|
||||
private function getSut(array $paths): ServiceInvoice
|
||||
{
|
||||
$languages = [
|
||||
'en' => [
|
||||
'date' => 'Y.m.d',
|
||||
'duration' => '%h:%m h',
|
||||
'time' => 'H:i',
|
||||
]
|
||||
];
|
||||
|
||||
$formattings = new LanguageFormattings($languages);
|
||||
|
||||
$repo = new InvoiceDocumentRepository($paths);
|
||||
$invoiceRepo = $this->createMock(InvoiceRepository::class);
|
||||
$userDateTime = (new UserDateTimeFactoryFactory($this))->create();
|
||||
|
||||
return new ServiceInvoice($repo, new FileHelper(realpath(__DIR__ . '/../../var/data/')), $invoiceRepo, $userDateTime, new DebugFormatter());
|
||||
return new ServiceInvoice($repo, new FileHelper(realpath(__DIR__ . '/../../var/data/')), $invoiceRepo, $userDateTime, $formattings);
|
||||
}
|
||||
|
||||
public function testInvalidExceptionOnChangeState()
|
||||
@@ -96,4 +109,55 @@ class ServiceInvoiceTest extends TestCase
|
||||
|
||||
$this->assertEquals(1, \count($sut->getRenderer()));
|
||||
}
|
||||
|
||||
public function testCreateModelThrowsOnMissingTemplate()
|
||||
{
|
||||
$this->expectException(\Exception::class);
|
||||
$this->expectExceptionMessage('Cannot create invoice model without template');
|
||||
|
||||
$sut = $this->getSut([]);
|
||||
$sut->createModel(new InvoiceQuery());
|
||||
}
|
||||
|
||||
/**
|
||||
* @group legacy
|
||||
*/
|
||||
public function testCreateModelSetsFallbackLanguage()
|
||||
{
|
||||
$template = new InvoiceTemplate();
|
||||
$template->setNumberGenerator('date');
|
||||
|
||||
self::assertNull($template->getLanguage());
|
||||
|
||||
$query = new InvoiceQuery();
|
||||
$query->setTemplate($template);
|
||||
|
||||
$sut = $this->getSut([]);
|
||||
$sut->addCalculator(new DefaultCalculator());
|
||||
$sut->addNumberGenerator(new DateNumberGenerator());
|
||||
|
||||
$model = $sut->createModel($query);
|
||||
|
||||
self::assertEquals('en', $model->getTemplate()->getLanguage());
|
||||
}
|
||||
|
||||
public function testCreateModelUsesTemplateLanguage()
|
||||
{
|
||||
$template = new InvoiceTemplate();
|
||||
$template->setNumberGenerator('date');
|
||||
$template->setLanguage('de');
|
||||
|
||||
self::assertEquals('de', $template->getLanguage());
|
||||
|
||||
$query = new InvoiceQuery();
|
||||
$query->setTemplate($template);
|
||||
|
||||
$sut = $this->getSut([]);
|
||||
$sut->addCalculator(new DefaultCalculator());
|
||||
$sut->addNumberGenerator(new DateNumberGenerator());
|
||||
|
||||
$model = $sut->createModel($query);
|
||||
|
||||
self::assertEquals('de', $model->getTemplate()->getLanguage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ use Twig\TwigFunction;
|
||||
|
||||
/**
|
||||
* @covers \App\Twig\DateExtensions
|
||||
* @covers \App\Utils\LocaleFormats
|
||||
* @covers \App\Utils\LocaleFormatter
|
||||
*/
|
||||
class DateExtensionsTest extends TestCase
|
||||
{
|
||||
|
||||
@@ -21,6 +21,7 @@ use Twig\TwigFunction;
|
||||
|
||||
/**
|
||||
* @covers \App\Twig\LocaleExtensions
|
||||
* @covers \App\Utils\LocaleFormatter
|
||||
*/
|
||||
class LocaleExtensionsTest extends TestCase
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user