Release 2.0.29 (#4178)
- show button title if delete is used in page actions - fix invoice due date depends on invoice date, replace DateTime with DateTimeI… - lowercase all font names in PDFs, otherwise they fail loading - hide empty fieldset (work-contract page) - activate contract_other_profile by default for admin and super-admin - deactivate rule to check "maximum duration of entries" by default - allow to deactivate presets in DateRange Picker (for Devs)
This commit is contained in:
@@ -288,7 +288,7 @@ class ConfigurationTest extends TestCase
|
||||
'allow_overbooking_budget' => true,
|
||||
'lockdown_period_timezone' => null,
|
||||
'break_warning_duration' => 0,
|
||||
'long_running_duration' => 600,
|
||||
'long_running_duration' => 0,
|
||||
'require_activity' => true,
|
||||
],
|
||||
'duration_increment' => 15,
|
||||
|
||||
@@ -190,11 +190,8 @@ class InvoiceTest extends TestCase
|
||||
$query->setBegin(new \DateTime());
|
||||
$query->setEnd(new \DateTime());
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
$model->setUser($user);
|
||||
$model->setInvoiceDate($created);
|
||||
|
||||
|
||||
@@ -9,8 +9,11 @@
|
||||
|
||||
namespace App\Tests\Event;
|
||||
|
||||
use App\Entity\Customer;
|
||||
use App\Entity\Invoice;
|
||||
use App\Entity\InvoiceTemplate;
|
||||
use App\Event\InvoiceCreatedEvent;
|
||||
use App\Repository\Query\InvoiceQuery;
|
||||
use App\Tests\Invoice\DebugFormatter;
|
||||
use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
@@ -23,7 +26,7 @@ class InvoiceCreatedEventTest extends TestCase
|
||||
public function testDefaultValues()
|
||||
{
|
||||
$invoice = new Invoice();
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), new Customer('foo'), new InvoiceTemplate(), new InvoiceQuery());
|
||||
|
||||
$sut = new InvoiceCreatedEvent($invoice, $model);
|
||||
|
||||
|
||||
@@ -9,8 +9,11 @@
|
||||
|
||||
namespace App\Tests\Event;
|
||||
|
||||
use App\Entity\Customer;
|
||||
use App\Entity\InvoiceTemplate;
|
||||
use App\Event\InvoicePostRenderEvent;
|
||||
use App\Model\InvoiceDocument;
|
||||
use App\Repository\Query\InvoiceQuery;
|
||||
use App\Tests\Invoice\DebugFormatter;
|
||||
use App\Tests\Invoice\Renderer\DebugRenderer;
|
||||
use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
@@ -24,7 +27,7 @@ class InvoicePostRenderEventTest extends TestCase
|
||||
{
|
||||
public function testDefaultValues()
|
||||
{
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), new Customer('foo'), new InvoiceTemplate(), new InvoiceQuery());
|
||||
$document = new InvoiceDocument(new \SplFileInfo(__FILE__));
|
||||
$renderer = new DebugRenderer();
|
||||
$response = new Response();
|
||||
|
||||
@@ -9,8 +9,11 @@
|
||||
|
||||
namespace App\Tests\Event;
|
||||
|
||||
use App\Entity\Customer;
|
||||
use App\Entity\InvoiceTemplate;
|
||||
use App\Event\InvoicePreRenderEvent;
|
||||
use App\Model\InvoiceDocument;
|
||||
use App\Repository\Query\InvoiceQuery;
|
||||
use App\Tests\Invoice\DebugFormatter;
|
||||
use App\Tests\Invoice\Renderer\DebugRenderer;
|
||||
use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
@@ -23,7 +26,7 @@ class InvoicePreRenderEventTest extends TestCase
|
||||
{
|
||||
public function testDefaultValues()
|
||||
{
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), new Customer('foo'), new InvoiceTemplate(), new InvoiceQuery());
|
||||
$document = new InvoiceDocument(new \SplFileInfo(__FILE__));
|
||||
$renderer = new DebugRenderer();
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ class PageActionsEventTest extends TestCase
|
||||
'create' => ['url' => 'foo5', 'class' => 'modal-ajax-form', 'title' => 'create', 'accesskey' => 'a'],
|
||||
'download' => ['url' => 'foo7', 'class' => 'toolbar-action', 'title' => 'export'],
|
||||
'edit' => ['url' => 'trölölö', 'class' => 'modal-ajax-form', 'translation_domain' => 'actions', 'title' => 'edit'],
|
||||
'trash' => ['url' => 'foo3', 'class' => 'modal-ajax-form text-red', 'translation_domain' => 'actions'],
|
||||
'trash' => ['url' => 'foo3', 'class' => 'modal-ajax-form text-red', 'translation_domain' => 'actions', 'title' => 'trash'],
|
||||
];
|
||||
$this->assertEquals(\count($expected), $sut->countActions());
|
||||
|
||||
|
||||
@@ -56,12 +56,7 @@ abstract class AbstractCalculatorTest extends TestCase
|
||||
$template = new InvoiceTemplate();
|
||||
$query = new InvoiceQuery();
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model->setQuery($query);
|
||||
|
||||
return $model;
|
||||
return (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
}
|
||||
|
||||
protected function assertDescription(CalculatorInterface $sut, $addProject = false, $addActivity = false): void
|
||||
@@ -100,11 +95,8 @@ abstract class AbstractCalculatorTest extends TestCase
|
||||
->setActivity($activity)
|
||||
->setProject($project);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries([$timesheet]);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut->setModel($model);
|
||||
$this->assertEquals(1, \count($sut->getEntries()));
|
||||
|
||||
@@ -135,11 +135,8 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->addActivity($activity1);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -148,11 +148,8 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->addActivity($activity1);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -108,11 +108,8 @@ class DateInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->setProjects([$project1]);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -111,11 +111,8 @@ class DateUserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->setProjects([$project1]);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -64,11 +64,8 @@ class DefaultCalculatorTest extends AbstractCalculatorTest
|
||||
|
||||
$entries = [$timesheet, $timesheet2, $timesheet3];
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, new InvoiceQuery());
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery(new InvoiceQuery());
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -112,11 +112,8 @@ class PriceInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->setProjects([$project1]);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -108,11 +108,8 @@ class ProjectInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->setProjects([$project1]);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -111,11 +111,8 @@ class ProjectUserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->setProjects([$project1]);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -92,11 +92,8 @@ class ShortInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->addActivity($activity);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
@@ -174,11 +171,8 @@ class ShortInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->addActivity($activity);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
@@ -253,11 +247,8 @@ class ShortInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->addActivity($activity);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -106,11 +106,8 @@ class UserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->addActivity($activity);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -111,11 +111,8 @@ class WeeklyInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$query = new InvoiceQuery();
|
||||
$query->setProjects([$project1]);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -13,12 +13,12 @@ use App\Invoice\InvoiceFormatter;
|
||||
|
||||
class DebugFormatter implements InvoiceFormatter
|
||||
{
|
||||
public function getFormattedDateTime(\DateTime $date): string
|
||||
public function getFormattedDateTime(\DateTimeInterface $date): string
|
||||
{
|
||||
return $date->format('d.m.Y');
|
||||
}
|
||||
|
||||
public function getFormattedTime(\DateTime $date): string
|
||||
public function getFormattedTime(\DateTimeInterface $date): string
|
||||
{
|
||||
return $date->format('H:i');
|
||||
}
|
||||
@@ -36,7 +36,7 @@ class DebugFormatter implements InvoiceFormatter
|
||||
return (string) $amount;
|
||||
}
|
||||
|
||||
public function getFormattedMonthName(\DateTime $date): string
|
||||
public function getFormattedMonthName(\DateTimeInterface $date): string
|
||||
{
|
||||
return $date->format('m');
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ class InvoiceModelCustomerHydratorTest extends TestCase
|
||||
{
|
||||
use RendererTestTrait;
|
||||
|
||||
public function testHydrate()
|
||||
public function testHydrate(): void
|
||||
{
|
||||
$model = $this->getInvoiceModel();
|
||||
|
||||
@@ -30,12 +30,36 @@ class InvoiceModelCustomerHydratorTest extends TestCase
|
||||
$result = $sut->hydrate($model);
|
||||
$this->assertModelStructure($result);
|
||||
|
||||
$model->setCustomer(null);
|
||||
$result = $sut->hydrate($model);
|
||||
self::assertEmpty($result);
|
||||
|
||||
$this->assertModelStructure($result);
|
||||
|
||||
self::assertEquals([
|
||||
'customer.id' => null,
|
||||
'customer.address' => "Foo\nStreet\n1111 City",
|
||||
'customer.name' => 'customer,with/special#name',
|
||||
'customer.contact' => '',
|
||||
'customer.company' => '',
|
||||
'customer.vat' => '',
|
||||
'customer.vat_id' => '',
|
||||
'customer.number' => '',
|
||||
'customer.country' => null,
|
||||
'customer.homepage' => '',
|
||||
'customer.comment' => '',
|
||||
'customer.email' => '',
|
||||
'customer.fax' => '',
|
||||
'customer.phone' => '',
|
||||
'customer.mobile' => '',
|
||||
'customer.invoice_text' => '',
|
||||
'customer.budget_open' => '€0.00',
|
||||
'customer.budget_open_plain' => 0.0,
|
||||
'customer.time_budget_open' => '0.00',
|
||||
'customer.time_budget_open_plain' => 0,
|
||||
'customer.meta.foo-customer' => 'bar-customer',
|
||||
], $result);
|
||||
}
|
||||
|
||||
protected function assertModelStructure(array $model)
|
||||
protected function assertModelStructure(array $model): void
|
||||
{
|
||||
$keys = [
|
||||
'customer.id',
|
||||
|
||||
@@ -20,7 +20,7 @@ class InvoiceModelDefaultHydratorTest extends TestCase
|
||||
{
|
||||
use RendererTestTrait;
|
||||
|
||||
public function testHydrate()
|
||||
public function testHydrate(): void
|
||||
{
|
||||
$model = $this->getInvoiceModel();
|
||||
|
||||
@@ -30,7 +30,7 @@ class InvoiceModelDefaultHydratorTest extends TestCase
|
||||
$this->assertModelStructure($result);
|
||||
}
|
||||
|
||||
protected function assertModelStructure(array $model, $hasProject = true)
|
||||
protected function assertModelStructure(array $model, bool $hasProject = true): void
|
||||
{
|
||||
$keys = [
|
||||
'invoice.due_date',
|
||||
|
||||
@@ -29,39 +29,35 @@ class InvoiceFilenameTest extends TestCase
|
||||
{
|
||||
$customer = new Customer('foo');
|
||||
$template = new InvoiceTemplate();
|
||||
$query = new InvoiceQuery();
|
||||
$project = new Project();
|
||||
$project->setName('Demo ProjecT1');
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$query->addProject($project);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
$model->setNumberGenerator($this->getNumberGeneratorSut());
|
||||
$model->setTemplate($template);
|
||||
$model->setCustomer($customer);
|
||||
|
||||
$datePrefix = date('ymd');
|
||||
|
||||
$sut = new InvoiceFilename($model);
|
||||
|
||||
self::assertEquals($datePrefix . '-foo', $sut->getFilename());
|
||||
self::assertEquals($datePrefix . '-foo', (string) $sut);
|
||||
self::assertEquals($datePrefix . '-foo-Demo_ProjecT1', $sut->getFilename());
|
||||
self::assertEquals($datePrefix . '-foo-Demo_ProjecT1', (string) $sut);
|
||||
|
||||
$customer->setCompany('barß / laölala # ldksjf 123 MyAwesome GmbH');
|
||||
$sut = new InvoiceFilename($model);
|
||||
|
||||
self::assertEquals($datePrefix . '-barss_laolala_ldksjf_123_MyAwesome_GmbH', $sut->getFilename());
|
||||
self::assertEquals($datePrefix . '-barss_laolala_ldksjf_123_MyAwesome_GmbH', (string) $sut);
|
||||
self::assertEquals($datePrefix . '-barss_laolala_ldksjf_123_MyAwesome_GmbH-Demo_ProjecT1', $sut->getFilename());
|
||||
self::assertEquals($datePrefix . '-barss_laolala_ldksjf_123_MyAwesome_GmbH-Demo_ProjecT1', (string) $sut);
|
||||
|
||||
$customer->setCompany('까깨꺄꺠꺼께껴꼐꼬꽈sssss');
|
||||
$sut = new InvoiceFilename($model);
|
||||
self::assertEquals($datePrefix . '-kkakkaekkyakkyaekkeokkekkyeokkyekkokkwasssss', $sut->getFilename());
|
||||
self::assertEquals($datePrefix . '-kkakkaekkyakkyaekkeokkekkyeokkyekkokkwasssss-Demo_ProjecT1', $sut->getFilename());
|
||||
|
||||
$customer->setCompany('\"#+ß.!$%&/()=?\\n=/*-+´_<>@' . "\n");
|
||||
$sut = new InvoiceFilename($model);
|
||||
self::assertEquals($datePrefix . '-ss_n_-', $sut->getFilename());
|
||||
|
||||
$project = new Project();
|
||||
$project->setName('Demo ProjecT1');
|
||||
|
||||
$query = new InvoiceQuery();
|
||||
$query->addProject($project);
|
||||
$model->setQuery($query);
|
||||
self::assertEquals($datePrefix . '-ss_n_--Demo_ProjecT1', $sut->getFilename());
|
||||
|
||||
$customer->setCompany('\"#+ß.!$%&/()=?\\n=/*-+´_<>@' . "\n");
|
||||
$sut = new InvoiceFilename($model);
|
||||
|
||||
@@ -23,21 +23,19 @@ use PHPUnit\Framework\TestCase;
|
||||
*/
|
||||
class InvoiceModelTest extends TestCase
|
||||
{
|
||||
public function testEmptyObject()
|
||||
public function testEmptyObject(): void
|
||||
{
|
||||
$formatter = new DebugFormatter();
|
||||
$sut = (new InvoiceModelFactoryFactory($this))->create()->createModel($formatter);
|
||||
$sut = (new InvoiceModelFactoryFactory($this))->create()->createModel($formatter, new Customer('foo'), new InvoiceTemplate(), new InvoiceQuery());
|
||||
|
||||
self::assertNotNull($sut->getQuery());
|
||||
self::assertNotNull($sut->getCustomer());
|
||||
self::assertNotNull($sut->getTemplate());
|
||||
|
||||
self::assertNull($sut->getQuery());
|
||||
self::assertNull($sut->getCustomer());
|
||||
self::assertNull($sut->getDueDate());
|
||||
self::assertNull($sut->getCalculator());
|
||||
|
||||
self::assertEmpty($sut->getEntries());
|
||||
self::assertIsArray($sut->getEntries());
|
||||
|
||||
self::assertNull($sut->getTemplate());
|
||||
self::assertInstanceOf(\DateTime::class, $sut->getInvoiceDate());
|
||||
self::assertInstanceOf(\DateTimeInterface::class, $sut->getInvoiceDate());
|
||||
|
||||
self::assertSame($formatter, $sut->getFormatter());
|
||||
|
||||
@@ -47,27 +45,24 @@ class InvoiceModelTest extends TestCase
|
||||
self::assertSame($newFormatter, $sut->getFormatter());
|
||||
}
|
||||
|
||||
public function testEmptyObjectThrowsExceptionOnNumberGenerator()
|
||||
public function testEmptyObjectThrowsExceptionOnNumberGenerator(): void
|
||||
{
|
||||
$formatter = new DebugFormatter();
|
||||
$sut = (new InvoiceModelFactoryFactory($this))->create()->createModel($formatter);
|
||||
$sut = (new InvoiceModelFactoryFactory($this))->create()->createModel($formatter, new Customer('foo'), new InvoiceTemplate(), new InvoiceQuery());
|
||||
|
||||
$this->expectException(\Exception::class);
|
||||
$this->expectExceptionMessage('InvoiceModel::getInvoiceNumber() cannot be called before calling setNumberGenerator()');
|
||||
$sut->getInvoiceNumber();
|
||||
}
|
||||
|
||||
public function testSetter()
|
||||
public function testSetter(): void
|
||||
{
|
||||
$sut = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
|
||||
$query = new InvoiceQuery();
|
||||
self::assertInstanceOf(InvoiceModel::class, $sut->setQuery($query));
|
||||
self::assertSame($query, $sut->getQuery());
|
||||
|
||||
$customer = new Customer('foo');
|
||||
self::assertInstanceOf(InvoiceModel::class, $sut->setCustomer($customer));
|
||||
self::assertSame($customer, $sut->getCustomer());
|
||||
$query = new InvoiceQuery();
|
||||
$template = new InvoiceTemplate();
|
||||
$sut = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
|
||||
self::assertSame($query, $sut->getQuery());
|
||||
|
||||
$calculator = new DefaultCalculator();
|
||||
self::assertInstanceOf(InvoiceModel::class, $sut->setCalculator($calculator));
|
||||
@@ -78,11 +73,28 @@ class InvoiceModelTest extends TestCase
|
||||
$number = $sut->getInvoiceNumber();
|
||||
self::assertEquals($number, $sut->getInvoiceNumber());
|
||||
|
||||
$template = new InvoiceTemplate();
|
||||
self::assertNull($sut->getDueDate());
|
||||
self::assertInstanceOf(InvoiceModel::class, $sut->setTemplate($template));
|
||||
self::assertSame($template, $sut->getTemplate());
|
||||
/* @phpstan-ignore-next-line */
|
||||
self::assertInstanceOf(\DateTime::class, $sut->getDueDate());
|
||||
self::assertInstanceOf(\DateTimeInterface::class, $sut->getDueDate());
|
||||
}
|
||||
|
||||
public function testDueDate(): void
|
||||
{
|
||||
$customer = new Customer('foo');
|
||||
$query = new InvoiceQuery();
|
||||
$template = new InvoiceTemplate();
|
||||
$sut = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, $template, $query);
|
||||
|
||||
$dueDate = $sut->getDueDate();
|
||||
$dueDays = $template->getDueDays();
|
||||
self::assertNotNull($dueDays);
|
||||
$expected = new \DateTimeImmutable('+' . $dueDays . ' days');
|
||||
|
||||
self::assertEquals($expected->format('Y-m-d'), $dueDate->format('Y-m-d'));
|
||||
|
||||
$sut->setInvoiceDate(new \DateTimeImmutable('2022-05-23'));
|
||||
$template->setDueDays(14);
|
||||
$dueDate = $sut->getDueDate();
|
||||
$expected = new \DateTimeImmutable('2022-06-06');
|
||||
self::assertEquals($expected->format('Y-m-d'), $dueDate->format('Y-m-d'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,9 +10,11 @@
|
||||
namespace App\Tests\Invoice\NumberGenerator;
|
||||
|
||||
use App\Entity\Customer;
|
||||
use App\Entity\InvoiceTemplate;
|
||||
use App\Entity\User;
|
||||
use App\Invoice\NumberGenerator\ConfigurableNumberGenerator;
|
||||
use App\Repository\InvoiceRepository;
|
||||
use App\Repository\Query\InvoiceQuery;
|
||||
use App\Tests\Invoice\DebugFormatter;
|
||||
use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
use App\Tests\Mocks\SystemConfigurationFactory;
|
||||
@@ -156,9 +158,8 @@ class ConfigurableNumberGeneratorTest extends TestCase
|
||||
$user->method('getAccountNumber')->willReturn('0815');
|
||||
|
||||
$sut = $this->getSut($format, $counter);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, new InvoiceTemplate(), new InvoiceQuery());
|
||||
$model->setInvoiceDate($invoiceDate);
|
||||
$model->setCustomer($customer);
|
||||
$model->setUser($user);
|
||||
$sut->setModel($model);
|
||||
|
||||
@@ -200,9 +201,8 @@ class ConfigurableNumberGeneratorTest extends TestCase
|
||||
$this->expectExceptionMessage(sprintf('Unknown %s found', $brokenPart));
|
||||
|
||||
$sut = $this->getSut($format);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), new Customer('foo'), new InvoiceTemplate(), new InvoiceQuery());
|
||||
$model->setInvoiceDate($invoiceDate);
|
||||
$model->setCustomer(new Customer('foo'));
|
||||
$sut->setModel($model);
|
||||
|
||||
$sut->getInvoiceNumber();
|
||||
@@ -235,9 +235,8 @@ class ConfigurableNumberGeneratorTest extends TestCase
|
||||
$customer->setName(null);
|
||||
|
||||
$sut = $this->getSut($format);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter());
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), $customer, new InvoiceTemplate(), new InvoiceQuery());
|
||||
$model->setInvoiceDate(new \DateTime());
|
||||
$model->setCustomer($customer);
|
||||
$model->setUser($user);
|
||||
$sut->setModel($model);
|
||||
|
||||
|
||||
@@ -9,8 +9,11 @@
|
||||
|
||||
namespace App\Tests\Invoice\NumberGenerator;
|
||||
|
||||
use App\Entity\Customer;
|
||||
use App\Entity\InvoiceTemplate;
|
||||
use App\Invoice\NumberGenerator\DateNumberGenerator;
|
||||
use App\Repository\InvoiceRepository;
|
||||
use App\Repository\Query\InvoiceQuery;
|
||||
use App\Tests\Invoice\DebugFormatter;
|
||||
use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
@@ -40,7 +43,7 @@ class DateNumberGeneratorTest extends TestCase
|
||||
public function testGetInvoiceNumber()
|
||||
{
|
||||
$sut = $this->getSut(false, false);
|
||||
$sut->setModel((new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter()));
|
||||
$sut->setModel((new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), new Customer('foo'), new InvoiceTemplate(), new InvoiceQuery()));
|
||||
|
||||
$this->assertEquals(date('ymd'), $sut->getInvoiceNumber());
|
||||
$this->assertEquals('date', $sut->getId());
|
||||
@@ -49,7 +52,7 @@ class DateNumberGeneratorTest extends TestCase
|
||||
public function testGetInvoiceNumberWithExisting()
|
||||
{
|
||||
$sut = $this->getSut(true, false);
|
||||
$sut->setModel((new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter()));
|
||||
$sut->setModel((new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), new Customer('foo'), new InvoiceTemplate(), new InvoiceQuery()));
|
||||
|
||||
$this->assertEquals(date('ymd-01'), $sut->getInvoiceNumber());
|
||||
$this->assertEquals('date', $sut->getId());
|
||||
@@ -58,7 +61,7 @@ class DateNumberGeneratorTest extends TestCase
|
||||
public function testGetInvoiceNumberWithManyExisting()
|
||||
{
|
||||
$sut = $this->getSut(true, true);
|
||||
$sut->setModel((new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter()));
|
||||
$sut->setModel((new InvoiceModelFactoryFactory($this))->create()->createModel(new DebugFormatter(), new Customer('foo'), new InvoiceTemplate(), new InvoiceQuery()));
|
||||
|
||||
$this->assertEquals(date('ymd-99'), $sut->getInvoiceNumber());
|
||||
$this->assertEquals('date', $sut->getId());
|
||||
|
||||
@@ -238,11 +238,8 @@ trait RendererTestTrait
|
||||
$query->setEnd(new \DateTime());
|
||||
$query->setProjects([$project, $project2]);
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel($this->getFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel($this->getFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
$model->setUser($user);
|
||||
|
||||
$calculator = new DefaultCalculator();
|
||||
@@ -326,11 +323,8 @@ trait RendererTestTrait
|
||||
$query->setBegin(new \DateTime());
|
||||
$query->setEnd(new \DateTime());
|
||||
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel($this->getFormatter());
|
||||
$model->setCustomer($customer);
|
||||
$model->setTemplate($template);
|
||||
$model = (new InvoiceModelFactoryFactory($this))->create()->createModel($this->getFormatter(), $customer, $template, $query);
|
||||
$model->addEntries($entries);
|
||||
$model->setQuery($query);
|
||||
$model->setUser($user);
|
||||
|
||||
$calculator = new DefaultCalculator();
|
||||
|
||||
@@ -6612,11 +6612,6 @@ parameters:
|
||||
count: 1
|
||||
path: Invoice/Hydrator/InvoiceModelActivityHydratorTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\Hydrator\\\\InvoiceModelCustomerHydratorTest\\:\\:assertModelStructure\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Invoice/Hydrator/InvoiceModelCustomerHydratorTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\Hydrator\\\\InvoiceModelCustomerHydratorTest\\:\\:assertModelStructure\\(\\) has parameter \\$model with no value type specified in iterable type array\\.$#"
|
||||
count: 1
|
||||
@@ -6632,21 +6627,6 @@ parameters:
|
||||
count: 1
|
||||
path: Invoice/Hydrator/InvoiceModelCustomerHydratorTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\Hydrator\\\\InvoiceModelCustomerHydratorTest\\:\\:testHydrate\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Invoice/Hydrator/InvoiceModelCustomerHydratorTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\Hydrator\\\\InvoiceModelDefaultHydratorTest\\:\\:assertModelStructure\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Invoice/Hydrator/InvoiceModelDefaultHydratorTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\Hydrator\\\\InvoiceModelDefaultHydratorTest\\:\\:assertModelStructure\\(\\) has parameter \\$hasProject with no type specified\\.$#"
|
||||
count: 1
|
||||
path: Invoice/Hydrator/InvoiceModelDefaultHydratorTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\Hydrator\\\\InvoiceModelDefaultHydratorTest\\:\\:assertModelStructure\\(\\) has parameter \\$model with no value type specified in iterable type array\\.$#"
|
||||
count: 1
|
||||
@@ -6662,11 +6642,6 @@ parameters:
|
||||
count: 1
|
||||
path: Invoice/Hydrator/InvoiceModelDefaultHydratorTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\Hydrator\\\\InvoiceModelDefaultHydratorTest\\:\\:testHydrate\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Invoice/Hydrator/InvoiceModelDefaultHydratorTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\Hydrator\\\\InvoiceModelProjectHydratorTest\\:\\:assertModelStructure\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
@@ -6722,21 +6697,6 @@ parameters:
|
||||
count: 1
|
||||
path: Invoice/InvoiceItemTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\InvoiceModelTest\\:\\:testEmptyObject\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Invoice/InvoiceModelTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\InvoiceModelTest\\:\\:testEmptyObjectThrowsExceptionOnNumberGenerator\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Invoice/InvoiceModelTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\InvoiceModelTest\\:\\:testSetter\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
path: Invoice/InvoiceModelTest.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\Invoice\\\\NumberGenerator\\\\DateNumberGeneratorTest\\:\\:getSut\\(\\) has no return type specified\\.$#"
|
||||
count: 1
|
||||
|
||||
Reference in New Issue
Block a user