Upgrade tests to PhpUnit 10 (#5252)
This commit is contained in:
@@ -22,7 +22,7 @@ use App\Tests\Invoice\DebugFormatter;
|
||||
use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
abstract class AbstractCalculatorTest extends TestCase
|
||||
abstract class AbstractCalculatorTestCase extends TestCase
|
||||
{
|
||||
abstract protected function getCalculator(): CalculatorInterface;
|
||||
|
||||
@@ -38,16 +38,16 @@ abstract class AbstractCalculatorTest extends TestCase
|
||||
private function assertEmptyModel(CalculatorInterface $sut): void
|
||||
{
|
||||
$model = $this->getEmptyModel();
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals(0, $sut->getTotal());
|
||||
$this->assertEquals(0, $sut->getVat());
|
||||
$this->assertEquals(0, $sut->getSubtotal());
|
||||
$this->assertEquals(0, $sut->getTimeWorked());
|
||||
$this->assertEquals(0, \count($sut->getEntries()));
|
||||
$this->assertEquals(0, $sut->getTax());
|
||||
self::assertEquals(0, $sut->getTotal());
|
||||
self::assertEquals(0, $sut->getVat());
|
||||
self::assertEquals(0, $sut->getSubtotal());
|
||||
self::assertEquals(0, $sut->getTimeWorked());
|
||||
self::assertEquals(0, \count($sut->getEntries()));
|
||||
self::assertEquals(0, $sut->getTax());
|
||||
}
|
||||
|
||||
private function getEmptyModel(): InvoiceModel
|
||||
@@ -99,16 +99,16 @@ abstract class AbstractCalculatorTest extends TestCase
|
||||
$model->addEntries([$timesheet]);
|
||||
|
||||
$sut->setModel($model);
|
||||
$this->assertEquals(1, \count($sut->getEntries()));
|
||||
self::assertEquals(1, \count($sut->getEntries()));
|
||||
|
||||
/** @var Timesheet $result */
|
||||
$result = $sut->getEntries()[0];
|
||||
if ($addProject === true) {
|
||||
$this->assertEquals('project description', $result->getDescription());
|
||||
self::assertEquals('project description', $result->getDescription());
|
||||
} elseif ($addActivity === true) {
|
||||
$this->assertEquals('activity description', $result->getDescription());
|
||||
self::assertEquals('activity description', $result->getDescription());
|
||||
} else {
|
||||
$this->assertEquals('timesheet description', $result->getDescription());
|
||||
self::assertEquals('timesheet description', $result->getDescription());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,7 +27,7 @@ use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
* @covers \App\Invoice\Calculator\AbstractMergedCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
class ActivityInvoiceCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -142,23 +142,23 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('activity', $sut->getId());
|
||||
$this->assertEquals(3000.13, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(2521.12, $sut->getSubtotal());
|
||||
$this->assertEquals(6600, $sut->getTimeWorked());
|
||||
self::assertEquals('activity', $sut->getId());
|
||||
self::assertEquals(3000.13, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(2521.12, $sut->getSubtotal());
|
||||
self::assertEquals(6600, $sut->getTimeWorked());
|
||||
|
||||
$entries = $sut->getEntries();
|
||||
self::assertCount(4, $entries);
|
||||
$this->assertEquals('2018-11-28', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-28', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-29', $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals($date->format('Y-m-d'), $entries[3]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-28', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-28', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-29', $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals($date->format('Y-m-d'), $entries[3]->getBegin()?->format('Y-m-d'));
|
||||
|
||||
$this->assertEquals(404.38, $entries[0]->getRate());
|
||||
$this->assertEquals(2032.74, $entries[1]->getRate());
|
||||
$this->assertEquals(84, $entries[2]->getRate());
|
||||
self::assertEquals(404.38, $entries[0]->getRate());
|
||||
self::assertEquals(2032.74, $entries[1]->getRate());
|
||||
self::assertEquals(84, $entries[2]->getRate());
|
||||
}
|
||||
|
||||
public function testDescriptionByActivity(): void
|
||||
|
||||
@@ -27,7 +27,7 @@ use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
* @covers \App\Invoice\Calculator\AbstractMergedCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -155,28 +155,28 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('activity_user', $sut->getId());
|
||||
$this->assertEquals(3100.09, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(2605.12, $sut->getSubtotal());
|
||||
$this->assertEquals(7000, $sut->getTimeWorked());
|
||||
self::assertEquals('activity_user', $sut->getId());
|
||||
self::assertEquals(3100.09, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(2605.12, $sut->getSubtotal());
|
||||
self::assertEquals(7000, $sut->getTimeWorked());
|
||||
|
||||
$entries = $sut->getEntries();
|
||||
self::assertCount(6, $entries);
|
||||
$this->assertEquals('2018-11-08', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-18', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-18', $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals($date->format('Y-m-d'), $entries[3]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals($date->format('Y-m-d'), $entries[4]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals($date->format('Y-m-d'), $entries[5]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-08', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-18', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-18', $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals($date->format('Y-m-d'), $entries[3]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals($date->format('Y-m-d'), $entries[4]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals($date->format('Y-m-d'), $entries[5]->getBegin()?->format('Y-m-d'));
|
||||
|
||||
$this->assertEquals(404.38, $entries[5]->getRate());
|
||||
$this->assertEquals(2032.74, $entries[1]->getRate());
|
||||
$this->assertEquals(84.0, $entries[2]->getRate());
|
||||
$this->assertEquals(84.0, $entries[0]->getRate());
|
||||
$this->assertEquals(0, $entries[4]->getRate());
|
||||
$this->assertEquals(0, $entries[3]->getRate());
|
||||
self::assertEquals(404.38, $entries[5]->getRate());
|
||||
self::assertEquals(2032.74, $entries[1]->getRate());
|
||||
self::assertEquals(84.0, $entries[2]->getRate());
|
||||
self::assertEquals(84.0, $entries[0]->getRate());
|
||||
self::assertEquals(0, $entries[4]->getRate());
|
||||
self::assertEquals(0, $entries[3]->getRate());
|
||||
}
|
||||
|
||||
public function testDescriptionByActivity(): void
|
||||
|
||||
@@ -28,7 +28,7 @@ use DateTime;
|
||||
* @covers \App\Invoice\Calculator\AbstractMergedCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class DateInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
class DateInvoiceCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -115,21 +115,21 @@ class DateInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('date', $sut->getId());
|
||||
$this->assertEquals(3000.13, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(2521.12, $sut->getSubtotal());
|
||||
$this->assertEquals(6600, $sut->getTimeWorked());
|
||||
self::assertEquals('date', $sut->getId());
|
||||
self::assertEquals(3000.13, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(2521.12, $sut->getSubtotal());
|
||||
self::assertEquals(6600, $sut->getTimeWorked());
|
||||
|
||||
$entries = $sut->getEntries();
|
||||
self::assertCount(3, $entries);
|
||||
$this->assertEquals('2018-11-28', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-29', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals($date->format('Y-m-d'), $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals(378.02, $entries[1]->getRate());
|
||||
$this->assertEquals(195.11, $entries[0]->getRate());
|
||||
$this->assertEquals(1947.99, $entries[2]->getRate());
|
||||
self::assertEquals('2018-11-28', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-29', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals($date->format('Y-m-d'), $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals(378.02, $entries[1]->getRate());
|
||||
self::assertEquals(195.11, $entries[0]->getRate());
|
||||
self::assertEquals(1947.99, $entries[2]->getRate());
|
||||
self::assertEquals(2521.12, $entries[0]->getRate() + $entries[1]->getRate() + $entries[2]->getRate());
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ use DateTime;
|
||||
* @covers \App\Invoice\Calculator\AbstractMergedCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class DateUserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
class DateUserInvoiceCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -117,19 +117,19 @@ class DateUserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('date_user', $sut->getId());
|
||||
$this->assertEquals(3000.13, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(2521.12, $sut->getSubtotal());
|
||||
$this->assertEquals(6600, $sut->getTimeWorked());
|
||||
self::assertEquals('date_user', $sut->getId());
|
||||
self::assertEquals(3000.13, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(2521.12, $sut->getSubtotal());
|
||||
self::assertEquals(6600, $sut->getTimeWorked());
|
||||
|
||||
$entries = $sut->getEntries();
|
||||
self::assertCount(4, $entries);
|
||||
$this->assertEquals(378.02, $entries[2]->getRate());
|
||||
$this->assertEquals(111.11, $entries[0]->getRate());
|
||||
$this->assertEquals(1947.99, $entries[3]->getRate());
|
||||
$this->assertEquals(84, $entries[1]->getRate());
|
||||
self::assertEquals(378.02, $entries[2]->getRate());
|
||||
self::assertEquals(111.11, $entries[0]->getRate());
|
||||
self::assertEquals(1947.99, $entries[3]->getRate());
|
||||
self::assertEquals(84, $entries[1]->getRate());
|
||||
}
|
||||
|
||||
public function testDescriptionByTimesheet(): void
|
||||
|
||||
@@ -24,7 +24,7 @@ use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
* @covers \App\Invoice\Calculator\DefaultCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class DefaultCalculatorTest extends AbstractCalculatorTest
|
||||
class DefaultCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -70,11 +70,11 @@ class DefaultCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('default', $sut->getId());
|
||||
$this->assertEquals(581.17, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(488.38, $sut->getSubtotal());
|
||||
$this->assertEquals(5800, $sut->getTimeWorked());
|
||||
self::assertEquals('default', $sut->getId());
|
||||
self::assertEquals(581.17, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(488.38, $sut->getSubtotal());
|
||||
self::assertEquals(5800, $sut->getTimeWorked());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ use DateTime;
|
||||
* @covers \App\Invoice\Calculator\AbstractMergedCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class PriceInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
class PriceInvoiceCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -118,25 +118,25 @@ class PriceInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('price', $sut->getId());
|
||||
$this->assertEquals(3000.13, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(2521.12, $sut->getSubtotal());
|
||||
$this->assertEquals(6600, $sut->getTimeWorked());
|
||||
self::assertEquals('price', $sut->getId());
|
||||
self::assertEquals(3000.13, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(2521.12, $sut->getSubtotal());
|
||||
self::assertEquals(6600, $sut->getTimeWorked());
|
||||
|
||||
$entries = $sut->getEntries();
|
||||
self::assertCount(4, $entries);
|
||||
|
||||
$this->assertEquals('2018-11-28', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-28', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-28', $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-29', $entries[3]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-28', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-28', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-28', $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-29', $entries[3]->getBegin()?->format('Y-m-d'));
|
||||
|
||||
$this->assertEquals(378.02, $entries[3]->getRate());
|
||||
$this->assertEquals(111.11, $entries[0]->getRate());
|
||||
$this->assertEquals(1947.99, $entries[1]->getRate());
|
||||
$this->assertEquals(84, $entries[2]->getRate());
|
||||
self::assertEquals(378.02, $entries[3]->getRate());
|
||||
self::assertEquals(111.11, $entries[0]->getRate());
|
||||
self::assertEquals(1947.99, $entries[1]->getRate());
|
||||
self::assertEquals(84, $entries[2]->getRate());
|
||||
}
|
||||
|
||||
public function testDescriptionByTimesheet(): void
|
||||
|
||||
@@ -28,7 +28,7 @@ use DateTime;
|
||||
* @covers \App\Invoice\Calculator\AbstractMergedCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class ProjectInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
class ProjectInvoiceCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -114,23 +114,23 @@ class ProjectInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('project', $sut->getId());
|
||||
$this->assertEquals(3000.13, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(2521.12, $sut->getSubtotal());
|
||||
$this->assertEquals(6600, $sut->getTimeWorked());
|
||||
self::assertEquals('project', $sut->getId());
|
||||
self::assertEquals(3000.13, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(2521.12, $sut->getSubtotal());
|
||||
self::assertEquals(6600, $sut->getTimeWorked());
|
||||
|
||||
$entries = $sut->getEntries();
|
||||
self::assertCount(3, $entries);
|
||||
|
||||
$this->assertEquals('2018-11-08', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-28', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-29', $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-08', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-28', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-29', $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
|
||||
$this->assertEquals(404.38, $entries[2]->getRate());
|
||||
$this->assertEquals(2032.74, $entries[0]->getRate());
|
||||
$this->assertEquals(84, $entries[1]->getRate());
|
||||
self::assertEquals(404.38, $entries[2]->getRate());
|
||||
self::assertEquals(2032.74, $entries[0]->getRate());
|
||||
self::assertEquals(84, $entries[1]->getRate());
|
||||
self::assertEquals(2521.12, $entries[0]->getRate() + $entries[1]->getRate() + $entries[2]->getRate());
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ use DateTime;
|
||||
* @covers \App\Invoice\Calculator\AbstractMergedCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class ProjectUserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
class ProjectUserInvoiceCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -117,23 +117,23 @@ class ProjectUserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('project_user', $sut->getId());
|
||||
$this->assertEquals(3000.13, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(2521.12, $sut->getSubtotal());
|
||||
$this->assertEquals(6600, $sut->getTimeWorked());
|
||||
self::assertEquals('project_user', $sut->getId());
|
||||
self::assertEquals(3000.13, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(2521.12, $sut->getSubtotal());
|
||||
self::assertEquals(6600, $sut->getTimeWorked());
|
||||
|
||||
$entries = $sut->getEntries();
|
||||
self::assertCount(3, $entries);
|
||||
|
||||
$this->assertEquals('2018-11-08', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-28', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('2018-11-29', $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-08', $entries[0]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-28', $entries[1]->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('2018-11-29', $entries[2]->getBegin()?->format('Y-m-d'));
|
||||
|
||||
$this->assertEquals(404.38, $entries[2]->getRate());
|
||||
$this->assertEquals(2032.74, $entries[0]->getRate());
|
||||
$this->assertEquals(84, $entries[1]->getRate());
|
||||
self::assertEquals(404.38, $entries[2]->getRate());
|
||||
self::assertEquals(2032.74, $entries[0]->getRate());
|
||||
self::assertEquals(84, $entries[1]->getRate());
|
||||
}
|
||||
|
||||
public function testDescriptionByProject(): void
|
||||
|
||||
@@ -28,7 +28,7 @@ use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
* @covers \App\Invoice\Calculator\AbstractMergedCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class ShortInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
class ShortInvoiceCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -98,26 +98,26 @@ class ShortInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('short', $sut->getId());
|
||||
$this->assertEquals(562.28, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(472.5, $sut->getSubtotal());
|
||||
$this->assertEquals(5800, $sut->getTimeWorked());
|
||||
$this->assertEquals(1, \count($sut->getEntries()));
|
||||
self::assertEquals('short', $sut->getId());
|
||||
self::assertEquals(562.28, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(472.5, $sut->getSubtotal());
|
||||
self::assertEquals(5800, $sut->getTimeWorked());
|
||||
self::assertEquals(1, \count($sut->getEntries()));
|
||||
|
||||
$entries = $sut->getEntries();
|
||||
self::assertCount(1, $entries);
|
||||
$result = $entries[0];
|
||||
|
||||
$this->assertEquals('2018-11-28', $result->getBegin()?->format('Y-m-d'));
|
||||
$this->assertEquals('', $result->getDescription());
|
||||
$this->assertEquals(293.27, $result->getHourlyRate());
|
||||
$this->assertNull($result->getFixedRate());
|
||||
$this->assertEquals(472.5, $result->getRate());
|
||||
$this->assertEquals(5800, $result->getDuration());
|
||||
$this->assertEquals(3, $result->getAmount());
|
||||
$this->assertEquals(['foo', 'bar', 'bar1'], $result->getTags());
|
||||
self::assertEquals('2018-11-28', $result->getBegin()?->format('Y-m-d'));
|
||||
self::assertEquals('', $result->getDescription());
|
||||
self::assertEquals(293.27, $result->getHourlyRate());
|
||||
self::assertNull($result->getFixedRate());
|
||||
self::assertEquals(472.5, $result->getRate());
|
||||
self::assertEquals(5800, $result->getDuration());
|
||||
self::assertEquals(3, $result->getAmount());
|
||||
self::assertEquals(['foo', 'bar', 'bar1'], $result->getTags());
|
||||
}
|
||||
|
||||
public function testWithMultipleEntriesDifferentRates(): void
|
||||
@@ -180,22 +180,22 @@ class ShortInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('short', $sut->getId());
|
||||
$this->assertEquals(581.17, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(488.38, $sut->getSubtotal());
|
||||
$this->assertEquals(5800, $sut->getTimeWorked());
|
||||
$this->assertEquals(1, \count($sut->getEntries()));
|
||||
self::assertEquals('short', $sut->getId());
|
||||
self::assertEquals(581.17, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(488.38, $sut->getSubtotal());
|
||||
self::assertEquals(5800, $sut->getTimeWorked());
|
||||
self::assertEquals(1, \count($sut->getEntries()));
|
||||
|
||||
/** @var InvoiceItem $result */
|
||||
$result = $sut->getEntries()[0];
|
||||
$this->assertNull($result->getDescription());
|
||||
$this->assertEquals(488.38, $result->getHourlyRate());
|
||||
$this->assertEquals(488.38, $result->getFixedRate());
|
||||
$this->assertEquals(488.38, $result->getRate());
|
||||
$this->assertEquals(5800, $result->getDuration());
|
||||
$this->assertEquals(1, $result->getAmount());
|
||||
self::assertNull($result->getDescription());
|
||||
self::assertEquals(488.38, $result->getHourlyRate());
|
||||
self::assertEquals(488.38, $result->getFixedRate());
|
||||
self::assertEquals(488.38, $result->getRate());
|
||||
self::assertEquals(5800, $result->getDuration());
|
||||
self::assertEquals(1, $result->getAmount());
|
||||
}
|
||||
|
||||
public function testWithMixedRateTypes(): void
|
||||
@@ -256,22 +256,22 @@ class ShortInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('short', $sut->getId());
|
||||
$this->assertEquals(581.17, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(488.38, $sut->getSubtotal());
|
||||
$this->assertEquals(5800, $sut->getTimeWorked());
|
||||
$this->assertEquals(1, \count($sut->getEntries()));
|
||||
self::assertEquals('short', $sut->getId());
|
||||
self::assertEquals(581.17, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(488.38, $sut->getSubtotal());
|
||||
self::assertEquals(5800, $sut->getTimeWorked());
|
||||
self::assertEquals(1, \count($sut->getEntries()));
|
||||
|
||||
/** @var InvoiceItem $result */
|
||||
$result = $sut->getEntries()[0];
|
||||
$this->assertNull($result->getDescription());
|
||||
$this->assertEquals(488.38, $result->getHourlyRate());
|
||||
$this->assertEquals(488.38, $result->getRate());
|
||||
$this->assertEquals(5800, $result->getDuration());
|
||||
$this->assertEquals(488.38, $result->getFixedRate());
|
||||
$this->assertEquals(1, $result->getAmount());
|
||||
self::assertNull($result->getDescription());
|
||||
self::assertEquals(488.38, $result->getHourlyRate());
|
||||
self::assertEquals(488.38, $result->getRate());
|
||||
self::assertEquals(5800, $result->getDuration());
|
||||
self::assertEquals(488.38, $result->getFixedRate());
|
||||
self::assertEquals(1, $result->getAmount());
|
||||
}
|
||||
|
||||
public function testDescriptionByTimesheet(): void
|
||||
|
||||
@@ -26,7 +26,7 @@ use App\Tests\Mocks\InvoiceModelFactoryFactory;
|
||||
* @covers \App\Invoice\Calculator\AbstractMergedCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class UserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
class UserInvoiceCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -112,18 +112,18 @@ class UserInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('user', $sut->getId());
|
||||
$this->assertEquals(3000.13, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(2521.12, $sut->getSubtotal());
|
||||
$this->assertEquals(6600, $sut->getTimeWorked());
|
||||
self::assertEquals('user', $sut->getId());
|
||||
self::assertEquals(3000.13, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(2521.12, $sut->getSubtotal());
|
||||
self::assertEquals(6600, $sut->getTimeWorked());
|
||||
|
||||
$entries = $sut->getEntries();
|
||||
self::assertCount(3, $entries);
|
||||
$this->assertEquals(404.38, $entries[0]->getRate());
|
||||
$this->assertEquals(2032.74, $entries[1]->getRate());
|
||||
$this->assertEquals(84, $entries[2]->getRate());
|
||||
self::assertEquals(404.38, $entries[0]->getRate());
|
||||
self::assertEquals(2032.74, $entries[1]->getRate());
|
||||
self::assertEquals(84, $entries[2]->getRate());
|
||||
}
|
||||
|
||||
public function testDescriptionByTimesheet(): void
|
||||
|
||||
@@ -28,7 +28,7 @@ use DateTime;
|
||||
* @covers \App\Invoice\Calculator\AbstractMergedCalculator
|
||||
* @covers \App\Invoice\Calculator\AbstractCalculator
|
||||
*/
|
||||
class WeeklyInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
class WeeklyInvoiceCalculatorTest extends AbstractCalculatorTestCase
|
||||
{
|
||||
protected function getCalculator(): CalculatorInterface
|
||||
{
|
||||
@@ -117,17 +117,17 @@ class WeeklyInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$sut = $this->getCalculator();
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals('weekly', $sut->getId());
|
||||
$this->assertEquals(3000.13, $sut->getTotal());
|
||||
$this->assertEquals(19, $sut->getVat());
|
||||
$this->assertEquals('EUR', $model->getCurrency());
|
||||
$this->assertEquals(2521.12, $sut->getSubtotal());
|
||||
$this->assertEquals(6600, $sut->getTimeWorked());
|
||||
self::assertEquals('weekly', $sut->getId());
|
||||
self::assertEquals(3000.13, $sut->getTotal());
|
||||
self::assertEquals(19, $sut->getVat());
|
||||
self::assertEquals('EUR', $model->getCurrency());
|
||||
self::assertEquals(2521.12, $sut->getSubtotal());
|
||||
self::assertEquals(6600, $sut->getTimeWorked());
|
||||
|
||||
$entries = $sut->getEntries();
|
||||
self::assertCount(2, $entries);
|
||||
$this->assertEquals(378.02, $entries[1]->getRate());
|
||||
$this->assertEquals(2143.1, $entries[0]->getRate());
|
||||
self::assertEquals(378.02, $entries[1]->getRate());
|
||||
self::assertEquals(2143.1, $entries[0]->getRate());
|
||||
}
|
||||
|
||||
public function testDescriptionByTimesheet(): void
|
||||
|
||||
@@ -41,10 +41,10 @@ class InvoiceItemDefaultHydratorTest extends TestCase
|
||||
$exp = $expected[$i++];
|
||||
$this->assertEntryStructure($result, $exp['meta_fields']);
|
||||
if (\array_key_exists('description', $exp)) {
|
||||
$this->assertEquals($exp['description'], $result['entry.description']);
|
||||
self::assertEquals($exp['description'], $result['entry.description']);
|
||||
}
|
||||
if (\array_key_exists('description_safe', $exp)) {
|
||||
$this->assertEquals($exp['description_safe'], $result['entry.description_safe']);
|
||||
self::assertEquals($exp['description_safe'], $result['entry.description_safe']);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -106,7 +106,7 @@ class InvoiceItemDefaultHydratorTest extends TestCase
|
||||
}
|
||||
|
||||
foreach ($keys as $key) {
|
||||
$this->assertArrayHasKey($key, $model);
|
||||
self::assertArrayHasKey($key, $model);
|
||||
}
|
||||
|
||||
$expectedKeys = array_merge([], $keys);
|
||||
@@ -114,7 +114,7 @@ class InvoiceItemDefaultHydratorTest extends TestCase
|
||||
$givenKeys = array_keys($model);
|
||||
sort($givenKeys);
|
||||
|
||||
$this->assertEquals($expectedKeys, $givenKeys);
|
||||
$this->assertEquals(\count($keys), \count($givenKeys));
|
||||
self::assertEquals($expectedKeys, $givenKeys);
|
||||
self::assertEquals(\count($keys), \count($givenKeys));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +60,6 @@ class InvoiceModelActivityHydratorTest extends TestCase
|
||||
sort($keys);
|
||||
sort($givenKeys);
|
||||
|
||||
$this->assertEquals($keys, $givenKeys);
|
||||
self::assertEquals($keys, $givenKeys);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,6 +89,6 @@ class InvoiceModelCustomerHydratorTest extends TestCase
|
||||
sort($keys);
|
||||
sort($givenKeys);
|
||||
|
||||
$this->assertEquals($keys, $givenKeys);
|
||||
self::assertEquals($keys, $givenKeys);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,6 +90,6 @@ class InvoiceModelDefaultHydratorTest extends TestCase
|
||||
sort($keys);
|
||||
sort($givenKeys);
|
||||
|
||||
$this->assertEquals($keys, $givenKeys);
|
||||
self::assertEquals($keys, $givenKeys);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,6 +80,6 @@ class InvoiceModelProjectHydratorTest extends TestCase
|
||||
sort($keys);
|
||||
sort($givenKeys);
|
||||
|
||||
$this->assertEquals($keys, $givenKeys);
|
||||
self::assertEquals($keys, $givenKeys);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,6 @@ class InvoiceModelUserHydratorTest extends TestCase
|
||||
sort($keys);
|
||||
sort($givenKeys);
|
||||
|
||||
$this->assertEquals($keys, $givenKeys);
|
||||
self::assertEquals($keys, $givenKeys);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ class ConfigurableNumberGeneratorTest extends TestCase
|
||||
/**
|
||||
* @return array<int, array<int, string|\DateTime|int>>
|
||||
*/
|
||||
public function getTestData(): array
|
||||
public static function getTestData(): array
|
||||
{
|
||||
$invoiceDate = new \DateTime();
|
||||
$invoiceDateFixed = new \DateTime('2021-03-07');
|
||||
@@ -203,14 +203,14 @@ class ConfigurableNumberGeneratorTest extends TestCase
|
||||
$model->setUser($user);
|
||||
$sut->setModel($model);
|
||||
|
||||
$this->assertEquals($expectedInvoiceNumber, $sut->getInvoiceNumber());
|
||||
$this->assertEquals('default', $sut->getId());
|
||||
self::assertEquals($expectedInvoiceNumber, $sut->getInvoiceNumber());
|
||||
self::assertEquals('default', $sut->getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<int, array<int, string|\DateTime>>
|
||||
*/
|
||||
public function getInvalidTestData(): array
|
||||
public static function getInvalidTestData(): array
|
||||
{
|
||||
$invoiceDate = new \DateTime();
|
||||
|
||||
@@ -251,7 +251,7 @@ class ConfigurableNumberGeneratorTest extends TestCase
|
||||
/**
|
||||
* @return array<int, array<int, string>>
|
||||
*/
|
||||
public function getMissingFieldTestData(): array
|
||||
public static function getMissingFieldTestData(): array
|
||||
{
|
||||
return [
|
||||
['{Y}/{cnumber}_{ccy,3}', 'Customer has no number, replacer {cnumber} failed evaluation'],
|
||||
|
||||
@@ -45,8 +45,8 @@ class DateNumberGeneratorTest extends TestCase
|
||||
$sut = $this->getSut(false, false);
|
||||
$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());
|
||||
self::assertEquals(date('ymd'), $sut->getInvoiceNumber());
|
||||
self::assertEquals('date', $sut->getId());
|
||||
}
|
||||
|
||||
public function testGetInvoiceNumberWithExisting(): void
|
||||
@@ -54,8 +54,8 @@ class DateNumberGeneratorTest extends TestCase
|
||||
$sut = $this->getSut(true, false);
|
||||
$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());
|
||||
self::assertEquals(date('ymd-01'), $sut->getInvoiceNumber());
|
||||
self::assertEquals('date', $sut->getId());
|
||||
}
|
||||
|
||||
public function testGetInvoiceNumberWithManyExisting(): void
|
||||
@@ -63,7 +63,7 @@ class DateNumberGeneratorTest extends TestCase
|
||||
$sut = $this->getSut(true, true);
|
||||
$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());
|
||||
self::assertEquals(date('ymd-99'), $sut->getInvoiceNumber());
|
||||
self::assertEquals('date', $sut->getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,17 +21,20 @@ class DebugRendererTest extends TestCase
|
||||
{
|
||||
use RendererTestTrait;
|
||||
|
||||
public function getTestModel()
|
||||
public static function getTestModel()
|
||||
{
|
||||
yield [$this->getInvoiceModel(), '1,947.99', 5, 5, 1, 2, 2, true, [['entry.meta.foo-timesheet'], ['entry.meta.foo-timesheet', 'entry.meta.foo-timesheet2'], ['entry.meta.foo-timesheet'], ['entry.meta.foo-timesheet3']]];
|
||||
yield [$this->getInvoiceModelOneEntry(), '293.27', 1, 1, 0, 1, 0, false, []];
|
||||
yield [static fn (self $testCase) => $testCase->getInvoiceModel(), '1,947.99', 5, 5, 1, 2, 2, true, [['entry.meta.foo-timesheet'], ['entry.meta.foo-timesheet', 'entry.meta.foo-timesheet2'], ['entry.meta.foo-timesheet'], ['entry.meta.foo-timesheet3']]];
|
||||
yield [static fn (self $testCase) => $testCase->getInvoiceModelOneEntry(), '293.27', 1, 1, 0, 1, 0, false, []];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getTestModel
|
||||
*/
|
||||
public function testRender(InvoiceModel $model, $expectedRate, $expectedRows, $expectedDescriptions, $expectedUser1, $expectedUser2, $expectedUser3, $hasProject, $metaFields = []): void
|
||||
public function testRender(callable $invoiceModel, $expectedRate, $expectedRows, $expectedDescriptions, $expectedUser1, $expectedUser2, $expectedUser3, $hasProject, $metaFields = []): void
|
||||
{
|
||||
/** @var InvoiceModel $model */
|
||||
$model = $invoiceModel($this);
|
||||
|
||||
$itemHydrator = new class() implements InvoiceItemHydrator {
|
||||
public function setInvoiceModel(InvoiceModel $model): void
|
||||
{
|
||||
@@ -58,12 +61,12 @@ class DebugRendererTest extends TestCase
|
||||
$response = $sut->render($document, $model);
|
||||
$data = json_decode($response->getContent(), true);
|
||||
|
||||
$this->assertIsArray($data);
|
||||
$this->assertIsArray($data['model']);
|
||||
self::assertIsArray($data);
|
||||
self::assertIsArray($data['model']);
|
||||
|
||||
$this->assertModelStructure($data['model'], \count($model->getQuery()->getProjects()), \count($model->getQuery()->getActivities()));
|
||||
$rows = $data['entries'];
|
||||
$this->assertEquals($expectedRows, \count($rows));
|
||||
self::assertEquals($expectedRows, \count($rows));
|
||||
|
||||
$i = 0;
|
||||
foreach ($rows as $row) {
|
||||
@@ -257,7 +260,7 @@ class DebugRendererTest extends TestCase
|
||||
sort($keys);
|
||||
sort($givenKeys);
|
||||
|
||||
$this->assertEquals($keys, $givenKeys);
|
||||
self::assertEquals($keys, $givenKeys);
|
||||
}
|
||||
|
||||
protected function assertEntryStructure(array $model, array $metaFields): void
|
||||
@@ -316,7 +319,7 @@ class DebugRendererTest extends TestCase
|
||||
$keys = array_merge($keys, $metaFields);
|
||||
|
||||
foreach ($keys as $key) {
|
||||
$this->assertArrayHasKey($key, $model);
|
||||
self::assertArrayHasKey($key, $model);
|
||||
}
|
||||
|
||||
$expectedKeys = array_merge([], $keys);
|
||||
@@ -324,7 +327,7 @@ class DebugRendererTest extends TestCase
|
||||
$givenKeys = array_keys($model);
|
||||
sort($givenKeys);
|
||||
|
||||
$this->assertEquals($expectedKeys, $givenKeys);
|
||||
$this->assertEquals(\count($keys), \count($givenKeys));
|
||||
self::assertEquals($expectedKeys, $givenKeys);
|
||||
self::assertEquals(\count($keys), \count($givenKeys));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,12 +26,12 @@ class DocxRendererTest extends TestCase
|
||||
{
|
||||
$sut = $this->getAbstractRenderer(DocxRenderer::class);
|
||||
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('invoice.html.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('service-date.pdf.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('timesheet.html.twig')));
|
||||
$this->assertTrue($sut->supports($this->getInvoiceDocument('company.docx', true)));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('spreadsheet.xlsx', true)));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('open-spreadsheet.ods', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('invoice.html.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('service-date.pdf.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('timesheet.html.twig')));
|
||||
self::assertTrue($sut->supports($this->getInvoiceDocument('company.docx', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('spreadsheet.xlsx', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('open-spreadsheet.ods', true)));
|
||||
}
|
||||
|
||||
public function testRender(): void
|
||||
@@ -45,16 +45,16 @@ class DocxRendererTest extends TestCase
|
||||
|
||||
$filename = $model->getInvoiceNumber() . '-customer_with_special_name.docx';
|
||||
$file = $response->getFile();
|
||||
$this->assertEquals('application/vnd.openxmlformats-officedocument.wordprocessingml.document', $response->headers->get('Content-Type'));
|
||||
$this->assertEquals('attachment; filename=' . $filename, $response->headers->get('Content-Disposition'));
|
||||
self::assertEquals('application/vnd.openxmlformats-officedocument.wordprocessingml.document', $response->headers->get('Content-Type'));
|
||||
self::assertEquals('attachment; filename=' . $filename, $response->headers->get('Content-Disposition'));
|
||||
|
||||
$this->assertTrue(file_exists($file->getPathname()));
|
||||
self::assertTrue(file_exists($file->getPathname()));
|
||||
|
||||
ob_start();
|
||||
$response->sendContent();
|
||||
$content2 = ob_get_clean();
|
||||
$this->assertNotEmpty($content2);
|
||||
self::assertNotEmpty($content2);
|
||||
|
||||
$this->assertFalse(file_exists($file->getRealPath()));
|
||||
self::assertFalse(file_exists($file->getRealPath()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,25 +28,28 @@ class OdsRendererTest extends TestCase
|
||||
{
|
||||
$sut = $this->getAbstractRenderer(OdsRenderer::class);
|
||||
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('invoice.html.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('service-date.pdf.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('timesheet.html.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('company.docx', true)));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('spreadsheet.xlsx', true)));
|
||||
$this->assertTrue($sut->supports($this->getInvoiceDocument('open-spreadsheet.ods', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('invoice.html.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('service-date.pdf.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('timesheet.html.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('company.docx', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('spreadsheet.xlsx', true)));
|
||||
self::assertTrue($sut->supports($this->getInvoiceDocument('open-spreadsheet.ods', true)));
|
||||
}
|
||||
|
||||
public function getTestModel()
|
||||
public static function getTestModel()
|
||||
{
|
||||
yield [$this->getInvoiceModel(), '1,947.99', 6, 5, 1, 2, 2];
|
||||
yield [$this->getInvoiceModelOneEntry(), '293.27', 2, 1, 0, 1, 0];
|
||||
yield [static fn (self $testCase) => $testCase->getInvoiceModel(), '1,947.99', 6, 5, 1, 2, 2];
|
||||
yield [static fn (self $testCase) => $testCase->getInvoiceModelOneEntry(), '293.27', 2, 1, 0, 1, 0];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getTestModel
|
||||
*/
|
||||
public function testRender(InvoiceModel $model, $expectedRate, $expectedRows, $expectedDescriptions, $expectedUser1, $expectedUser2, $expectedUser3): void
|
||||
public function testRender(callable $invoiceModel, $expectedRate, $expectedRows, $expectedDescriptions, $expectedUser1, $expectedUser2, $expectedUser3): void
|
||||
{
|
||||
/** @var InvoiceModel $model */
|
||||
$model = $invoiceModel($this); // FIXME
|
||||
|
||||
/** @var OdsRenderer $sut */
|
||||
$sut = $this->getAbstractRenderer(OdsRenderer::class);
|
||||
$model = $this->getInvoiceModel();
|
||||
@@ -56,28 +59,28 @@ class OdsRendererTest extends TestCase
|
||||
|
||||
$filename = $model->getInvoiceNumber() . '-customer_with_special_name.ods';
|
||||
$file = $response->getFile();
|
||||
$this->assertEquals('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', $response->headers->get('Content-Type'));
|
||||
$this->assertEquals('attachment; filename=' . $filename, $response->headers->get('Content-Disposition'));
|
||||
self::assertEquals('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', $response->headers->get('Content-Type'));
|
||||
self::assertEquals('attachment; filename=' . $filename, $response->headers->get('Content-Disposition'));
|
||||
|
||||
$this->assertTrue(file_exists($file->getRealPath()));
|
||||
self::assertTrue(file_exists($file->getRealPath()));
|
||||
|
||||
// TODO test spreadsheet content?
|
||||
/*
|
||||
$content = file_get_contents($file->getRealPath());
|
||||
$this->assertNotContains('${', $content);
|
||||
$this->assertStringContainsString(',"1,947.99" ', $content);
|
||||
$this->assertEquals(6, substr_count($content, PHP_EOL));
|
||||
$this->assertEquals(5, substr_count($content, 'activity description'));
|
||||
$this->assertEquals(1, substr_count($content, ',"kevin",'));
|
||||
$this->assertEquals(2, substr_count($content, ',"hello-world",'));
|
||||
$this->assertEquals(2, substr_count($content, ',"foo-bar",'));
|
||||
self::assertNotContains('${', $content);
|
||||
self::assertStringContainsString(',"1,947.99" ', $content);
|
||||
self::assertEquals(6, substr_count($content, PHP_EOL));
|
||||
self::assertEquals(5, substr_count($content, 'activity description'));
|
||||
self::assertEquals(1, substr_count($content, ',"kevin",'));
|
||||
self::assertEquals(2, substr_count($content, ',"hello-world",'));
|
||||
self::assertEquals(2, substr_count($content, ',"foo-bar",'));
|
||||
*/
|
||||
|
||||
ob_start();
|
||||
$response->sendContent();
|
||||
$content2 = ob_get_clean();
|
||||
$this->assertNotEmpty($content2);
|
||||
self::assertNotEmpty($content2);
|
||||
|
||||
$this->assertFalse(file_exists($file->getRealPath()));
|
||||
self::assertFalse(file_exists($file->getRealPath()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,12 +34,12 @@ class PdfRendererTest extends KernelTestCase
|
||||
{
|
||||
$env = new Environment(new ArrayLoader([]));
|
||||
$sut = new PdfRenderer($env, $this->createMock(HtmlToPdfConverter::class));
|
||||
$this->assertTrue($sut->supports($this->getInvoiceDocument('default.pdf.twig', true)));
|
||||
$this->assertTrue($sut->supports($this->getInvoiceDocument('service-date.pdf.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('timesheet.html.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('company.docx', true)));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('spreadsheet.xlsx', true)));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('open-spreadsheet.ods', true)));
|
||||
self::assertTrue($sut->supports($this->getInvoiceDocument('default.pdf.twig', true)));
|
||||
self::assertTrue($sut->supports($this->getInvoiceDocument('service-date.pdf.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('timesheet.html.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('company.docx', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('spreadsheet.xlsx', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('open-spreadsheet.ods', true)));
|
||||
}
|
||||
|
||||
public function testRenderAttachment(): void
|
||||
@@ -64,9 +64,9 @@ class PdfRendererTest extends KernelTestCase
|
||||
$document = $this->getInvoiceDocument('default.pdf.twig', true);
|
||||
|
||||
$response = $sut->render($document, $model);
|
||||
$this->assertEquals('application/pdf', $response->headers->get('Content-Type'));
|
||||
$this->assertStringContainsString('attachment; filename', $response->headers->get('Content-Disposition'));
|
||||
$this->assertNotEmpty($response->getContent());
|
||||
self::assertEquals('application/pdf', $response->headers->get('Content-Type'));
|
||||
self::assertStringContainsString('attachment; filename', $response->headers->get('Content-Disposition'));
|
||||
self::assertNotEmpty($response->getContent());
|
||||
}
|
||||
|
||||
public function testRenderInline(): void
|
||||
@@ -93,8 +93,8 @@ class PdfRendererTest extends KernelTestCase
|
||||
|
||||
$sut->setDispositionInline(true);
|
||||
$response = $sut->render($document, $model);
|
||||
$this->assertStringContainsString('inline; filename', $response->headers->get('Content-Disposition'));
|
||||
$this->assertNotEmpty($response->getContent());
|
||||
self::assertStringContainsString('inline; filename', $response->headers->get('Content-Disposition'));
|
||||
self::assertNotEmpty($response->getContent());
|
||||
}
|
||||
|
||||
public function testRenderAll(): void
|
||||
@@ -142,9 +142,9 @@ class PdfRendererTest extends KernelTestCase
|
||||
$document = new InvoiceDocument(new \SplFileInfo($filename));
|
||||
|
||||
$response = $sut->render($document, $model);
|
||||
$this->assertEquals('application/pdf', $response->headers->get('Content-Type'));
|
||||
$this->assertStringContainsString('attachment; filename', $response->headers->get('Content-Disposition'));
|
||||
$this->assertNotEmpty($response->getContent());
|
||||
self::assertEquals('application/pdf', $response->headers->get('Content-Type'));
|
||||
self::assertStringContainsString('attachment; filename', $response->headers->get('Content-Disposition'));
|
||||
self::assertNotEmpty($response->getContent());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,12 +32,12 @@ class TwigRendererTest extends KernelTestCase
|
||||
$env = new Environment($loader);
|
||||
$sut = new TwigRenderer($env);
|
||||
|
||||
$this->assertTrue($sut->supports($this->getInvoiceDocument('invoice.html.twig')));
|
||||
$this->assertTrue($sut->supports($this->getInvoiceDocument('timesheet.html.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('service-date.pdf.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('company.docx', true)));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('spreadsheet.xlsx', true)));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('open-spreadsheet.ods', true)));
|
||||
self::assertTrue($sut->supports($this->getInvoiceDocument('invoice.html.twig')));
|
||||
self::assertTrue($sut->supports($this->getInvoiceDocument('timesheet.html.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('service-date.pdf.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('company.docx', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('spreadsheet.xlsx', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('open-spreadsheet.ods', true)));
|
||||
}
|
||||
|
||||
public function testRender(): void
|
||||
@@ -66,12 +66,12 @@ class TwigRendererTest extends KernelTestCase
|
||||
$content = $response->getContent();
|
||||
|
||||
$filename = $model->getInvoiceNumber() . '-customer_with_special_name';
|
||||
$this->assertStringContainsString('<title>' . $filename . '</title>', $content);
|
||||
$this->assertStringContainsString('<span contenteditable="true">a very *long* test invoice / template title with [ßpecial] chäracter</span>', $content);
|
||||
self::assertStringContainsString('<title>' . $filename . '</title>', $content);
|
||||
self::assertStringContainsString('<span contenteditable="true">a very *long* test invoice / template title with [ßpecial] chäracter</span>', $content);
|
||||
// 3 timesheets have a description and therefor do not render the activity
|
||||
// 2 timesheets have no description and the correct activity assigned
|
||||
$this->assertEquals(2, substr_count($content, 'activity description'));
|
||||
$this->assertStringContainsString(nl2br("foo\n" .
|
||||
self::assertEquals(2, substr_count($content, 'activity description'));
|
||||
self::assertStringContainsString(nl2br("foo\n" .
|
||||
"foo\r\n" .
|
||||
'foo' . PHP_EOL .
|
||||
"bar\n" .
|
||||
@@ -123,8 +123,8 @@ class TwigRendererTest extends KernelTestCase
|
||||
$document = new InvoiceDocument(new \SplFileInfo($filename));
|
||||
|
||||
$response = $sut->render($document, $model);
|
||||
$this->assertEquals('text/html; charset=UTF-8', $response->headers->get('Content-Type'));
|
||||
$this->assertNotEmpty($response->getContent());
|
||||
self::assertEquals('text/html; charset=UTF-8', $response->headers->get('Content-Type'));
|
||||
self::assertNotEmpty($response->getContent());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,25 +29,28 @@ class XlsxRendererTest extends TestCase
|
||||
{
|
||||
$sut = $this->getAbstractRenderer(XlsxRenderer::class);
|
||||
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('invoice.html.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('service-date.pdf.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('timesheet.html.twig')));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('company.docx', true)));
|
||||
$this->assertTrue($sut->supports($this->getInvoiceDocument('spreadsheet.xlsx', true)));
|
||||
$this->assertFalse($sut->supports($this->getInvoiceDocument('open-spreadsheet.ods', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('invoice.html.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('service-date.pdf.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('timesheet.html.twig')));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('company.docx', true)));
|
||||
self::assertTrue($sut->supports($this->getInvoiceDocument('spreadsheet.xlsx', true)));
|
||||
self::assertFalse($sut->supports($this->getInvoiceDocument('open-spreadsheet.ods', true)));
|
||||
}
|
||||
|
||||
public function getTestModel()
|
||||
public static function getTestModel()
|
||||
{
|
||||
yield [$this->getInvoiceModel(), '1,947.99', 6, 5, 1, 2, 2];
|
||||
yield [$this->getInvoiceModelOneEntry(), '293.27', 2, 1, 0, 1, 0];
|
||||
yield [static fn (self $testCase) => $testCase->getInvoiceModel(), '1,947.99', 6, 5, 1, 2, 2];
|
||||
yield [static fn (self $testCase) => $testCase->getInvoiceModelOneEntry(), '293.27', 2, 1, 0, 1, 0];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getTestModel
|
||||
*/
|
||||
public function testRender(InvoiceModel $model, $expectedRate, $expectedRows, $expectedDescriptions, $expectedUser1, $expectedUser2, $expectedUser3): void
|
||||
public function testRender(callable $invoiceModel, $expectedRate, $expectedRows, $expectedDescriptions, $expectedUser1, $expectedUser2, $expectedUser3): void
|
||||
{
|
||||
/** @var InvoiceModel $model */
|
||||
$model = $invoiceModel($this); // FIXME
|
||||
|
||||
/** @var XlsxRenderer $sut */
|
||||
$sut = $this->getAbstractRenderer(XlsxRenderer::class);
|
||||
$model = $this->getInvoiceModel();
|
||||
@@ -57,28 +60,28 @@ class XlsxRendererTest extends TestCase
|
||||
|
||||
$filename = $model->getInvoiceNumber() . '-customer_with_special_name.xlsx';
|
||||
$file = $response->getFile();
|
||||
$this->assertEquals('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', $response->headers->get('Content-Type'));
|
||||
$this->assertEquals('attachment; filename=' . $filename, $response->headers->get('Content-Disposition'));
|
||||
self::assertEquals('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', $response->headers->get('Content-Type'));
|
||||
self::assertEquals('attachment; filename=' . $filename, $response->headers->get('Content-Disposition'));
|
||||
|
||||
$this->assertTrue(file_exists($file->getRealPath()));
|
||||
self::assertTrue(file_exists($file->getRealPath()));
|
||||
|
||||
// TODO test document content?
|
||||
/*
|
||||
$content = file_get_contents($file->getRealPath());
|
||||
$this->assertNotContains('${', $content);
|
||||
$this->assertStringContainsString(',"1,947.99" ', $content);
|
||||
$this->assertEquals(6, substr_count($content, PHP_EOL));
|
||||
$this->assertEquals(5, substr_count($content, 'activity description'));
|
||||
$this->assertEquals(1, substr_count($content, ',"kevin",'));
|
||||
$this->assertEquals(2, substr_count($content, ',"hello-world",'));
|
||||
$this->assertEquals(2, substr_count($content, ',"foo-bar",'));
|
||||
self::assertNotContains('${', $content);
|
||||
self::assertStringContainsString(',"1,947.99" ', $content);
|
||||
self::assertEquals(6, substr_count($content, PHP_EOL));
|
||||
self::assertEquals(5, substr_count($content, 'activity description'));
|
||||
self::assertEquals(1, substr_count($content, ',"kevin",'));
|
||||
self::assertEquals(2, substr_count($content, ',"hello-world",'));
|
||||
self::assertEquals(2, substr_count($content, ',"foo-bar",'));
|
||||
*/
|
||||
|
||||
ob_start();
|
||||
$response->sendContent();
|
||||
$content2 = ob_get_clean();
|
||||
$this->assertNotEmpty($content2);
|
||||
self::assertNotEmpty($content2);
|
||||
|
||||
$this->assertFalse(file_exists($file->getRealPath()));
|
||||
self::assertFalse(file_exists($file->getRealPath()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,18 +61,18 @@ class ServiceInvoiceTest extends TestCase
|
||||
{
|
||||
$sut = $this->getSut([]);
|
||||
|
||||
$this->assertEmpty($sut->getCalculator());
|
||||
$this->assertIsArray($sut->getCalculator());
|
||||
$this->assertEmpty($sut->getRenderer());
|
||||
$this->assertIsArray($sut->getRenderer());
|
||||
$this->assertEmpty($sut->getNumberGenerator());
|
||||
$this->assertIsArray($sut->getNumberGenerator());
|
||||
$this->assertEmpty($sut->getDocuments());
|
||||
$this->assertIsArray($sut->getDocuments());
|
||||
self::assertEmpty($sut->getCalculator());
|
||||
self::assertIsArray($sut->getCalculator());
|
||||
self::assertEmpty($sut->getRenderer());
|
||||
self::assertIsArray($sut->getRenderer());
|
||||
self::assertEmpty($sut->getNumberGenerator());
|
||||
self::assertIsArray($sut->getNumberGenerator());
|
||||
self::assertEmpty($sut->getDocuments());
|
||||
self::assertIsArray($sut->getDocuments());
|
||||
|
||||
$this->assertNull($sut->getCalculatorByName('default'));
|
||||
$this->assertNull($sut->getDocumentByName('default'));
|
||||
$this->assertNull($sut->getNumberGeneratorByName('default'));
|
||||
self::assertNull($sut->getCalculatorByName('default'));
|
||||
self::assertNull($sut->getDocumentByName('default'));
|
||||
self::assertNull($sut->getNumberGeneratorByName('default'));
|
||||
}
|
||||
|
||||
public function testWithDocumentDirectory(): void
|
||||
@@ -80,9 +80,9 @@ class ServiceInvoiceTest extends TestCase
|
||||
$sut = $this->getSut(['templates/invoice/renderer/']);
|
||||
|
||||
$actual = $sut->getDocuments();
|
||||
$this->assertNotEmpty($actual);
|
||||
self::assertNotEmpty($actual);
|
||||
$actual = $sut->getDocumentByName('default');
|
||||
$this->assertInstanceOf(InvoiceDocument::class, $actual);
|
||||
self::assertInstanceOf(InvoiceDocument::class, $actual);
|
||||
}
|
||||
|
||||
public function testAdd(): void
|
||||
@@ -94,13 +94,13 @@ class ServiceInvoiceTest extends TestCase
|
||||
$twig = $this->getMockBuilder(Environment::class)->disableOriginalConstructor()->getMock();
|
||||
$sut->addRenderer(new TwigRenderer($twig));
|
||||
|
||||
$this->assertEquals(1, \count($sut->getCalculator()));
|
||||
$this->assertInstanceOf(DefaultCalculator::class, $sut->getCalculatorByName('default'));
|
||||
self::assertEquals(1, \count($sut->getCalculator()));
|
||||
self::assertInstanceOf(DefaultCalculator::class, $sut->getCalculatorByName('default'));
|
||||
|
||||
$this->assertEquals(1, \count($sut->getNumberGenerator()));
|
||||
$this->assertInstanceOf(DateNumberGenerator::class, $sut->getNumberGeneratorByName('date'));
|
||||
self::assertEquals(1, \count($sut->getNumberGenerator()));
|
||||
self::assertInstanceOf(DateNumberGenerator::class, $sut->getNumberGeneratorByName('date'));
|
||||
|
||||
$this->assertEquals(1, \count($sut->getRenderer()));
|
||||
self::assertEquals(1, \count($sut->getRenderer()));
|
||||
}
|
||||
|
||||
public function testCreateModelThrowsOnMissingTemplate(): void
|
||||
|
||||
Reference in New Issue
Block a user