Upgrade tests to PhpUnit 10 (#5252)

This commit is contained in:
Kevin Papst
2024-12-22 01:25:30 +01:00
committed by GitHub
parent 9bd37fb695
commit c7f0508707
377 changed files with 3308 additions and 3409 deletions

View File

@@ -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());
}
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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());
}

View File

@@ -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

View File

@@ -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());
}
}

View File

@@ -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

View File

@@ -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());
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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));
}
}

View File

@@ -60,6 +60,6 @@ class InvoiceModelActivityHydratorTest extends TestCase
sort($keys);
sort($givenKeys);
$this->assertEquals($keys, $givenKeys);
self::assertEquals($keys, $givenKeys);
}
}

View File

@@ -89,6 +89,6 @@ class InvoiceModelCustomerHydratorTest extends TestCase
sort($keys);
sort($givenKeys);
$this->assertEquals($keys, $givenKeys);
self::assertEquals($keys, $givenKeys);
}
}

View File

@@ -90,6 +90,6 @@ class InvoiceModelDefaultHydratorTest extends TestCase
sort($keys);
sort($givenKeys);
$this->assertEquals($keys, $givenKeys);
self::assertEquals($keys, $givenKeys);
}
}

View File

@@ -80,6 +80,6 @@ class InvoiceModelProjectHydratorTest extends TestCase
sort($keys);
sort($givenKeys);
$this->assertEquals($keys, $givenKeys);
self::assertEquals($keys, $givenKeys);
}
}

View File

@@ -46,6 +46,6 @@ class InvoiceModelUserHydratorTest extends TestCase
sort($keys);
sort($givenKeys);
$this->assertEquals($keys, $givenKeys);
self::assertEquals($keys, $givenKeys);
}
}

View File

@@ -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'],

View File

@@ -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());
}
}

View File

@@ -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));
}
}

View File

@@ -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()));
}
}

View File

@@ -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()));
}
}

View File

@@ -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());
}
}
}

View File

@@ -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());
}
}
}

View File

@@ -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()));
}
}

View File

@@ -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