From 2edcbcca500fa1ea0da5cbfe1093686ffbf97721 Mon Sep 17 00:00:00 2001 From: Kevin Papst Date: Sun, 17 Dec 2023 16:50:47 +0100 Subject: [PATCH] sort invoice items by date before passing to template (#4495) --- src/Invoice/Calculator/AbstractCalculator.php | 13 ++++++++ .../AbstractSumInvoiceCalculator.php | 2 +- src/Invoice/Calculator/DefaultCalculator.php | 2 +- .../ActivityInvoiceCalculatorTest.php | 24 +++++++++------ .../ActivityUserInvoiceCalculatorTest.php | 30 ++++++++++++------- .../Calculator/DateInvoiceCalculatorTest.php | 10 +++++-- .../DateUserInvoiceCalculatorTest.php | 9 +++--- .../Calculator/DefaultCalculatorTest.php | 2 +- .../Calculator/PriceInvoiceCalculatorTest.php | 18 +++++++---- .../ProjectInvoiceCalculatorTest.php | 21 ++++++++----- .../ProjectUserInvoiceCalculatorTest.php | 22 ++++++++------ .../Calculator/ShortInvoiceCalculatorTest.php | 13 ++++---- .../Calculator/UserInvoiceCalculatorTest.php | 8 ++--- .../WeeklyInvoiceCalculatorTest.php | 5 ++-- 14 files changed, 113 insertions(+), 66 deletions(-) diff --git a/src/Invoice/Calculator/AbstractCalculator.php b/src/Invoice/Calculator/AbstractCalculator.php index 65f3f18c..d9484420 100644 --- a/src/Invoice/Calculator/AbstractCalculator.php +++ b/src/Invoice/Calculator/AbstractCalculator.php @@ -21,6 +21,19 @@ abstract class AbstractCalculator */ abstract public function getEntries(): array; + /** + * @param array $items + * @return array + */ + protected function sortEntries(array $items): array + { + usort($items, function (InvoiceItem $item1, InvoiceItem $item2) { + return $item1->getBegin() <=> $item2->getBegin(); + }); + + return $items; + } + abstract public function getId(): string; public function setModel(InvoiceModel $model): void diff --git a/src/Invoice/Calculator/AbstractSumInvoiceCalculator.php b/src/Invoice/Calculator/AbstractSumInvoiceCalculator.php index b6416da2..4b6f4ca0 100644 --- a/src/Invoice/Calculator/AbstractSumInvoiceCalculator.php +++ b/src/Invoice/Calculator/AbstractSumInvoiceCalculator.php @@ -77,7 +77,7 @@ abstract class AbstractSumInvoiceCalculator extends AbstractMergedCalculator imp $this->mergeSumInvoiceItem($invoiceItem, $entry); } - return array_values($invoiceItems); + return $this->sortEntries(array_values($invoiceItems)); } /** diff --git a/src/Invoice/Calculator/DefaultCalculator.php b/src/Invoice/Calculator/DefaultCalculator.php index d1580b0a..3d412d9a 100644 --- a/src/Invoice/Calculator/DefaultCalculator.php +++ b/src/Invoice/Calculator/DefaultCalculator.php @@ -39,7 +39,7 @@ final class DefaultCalculator extends AbstractMergedCalculator implements Calcul $entries[] = $item; } - return $entries; + return $this->sortEntries($entries); } public function getId(): string diff --git a/tests/Invoice/Calculator/ActivityInvoiceCalculatorTest.php b/tests/Invoice/Calculator/ActivityInvoiceCalculatorTest.php index 5c28cbdc..5375dadc 100644 --- a/tests/Invoice/Calculator/ActivityInvoiceCalculatorTest.php +++ b/tests/Invoice/Calculator/ActivityInvoiceCalculatorTest.php @@ -36,6 +36,7 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest public function testWithMultipleEntries(): void { + $date = new \DateTime(); $customer = new Customer('foo'); $template = new InvoiceTemplate(); $template->setVat(19); @@ -54,7 +55,7 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet = new Timesheet(); $timesheet - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-29')) ->setEnd(new \DateTime()) ->setDuration(3600) ->setRate(293.27) @@ -64,7 +65,7 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet2 = new Timesheet(); $timesheet2 - ->setBegin(new \DateTime()) + ->setBegin(clone $date) ->setEnd(new \DateTime()) ->setDuration(400) ->setRate(84.75) @@ -74,7 +75,7 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet3 = new Timesheet(); $timesheet3 - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-28')) ->setEnd(new \DateTime()) ->setDuration(1800) ->setRate(111.11) @@ -84,7 +85,7 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet4 = new Timesheet(); $timesheet4 - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-28')) ->setEnd(new \DateTime()) ->setDuration(400) ->setRate(1947.99) @@ -94,7 +95,7 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet5 = new Timesheet(); $timesheet5 - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-29')) ->setEnd(new \DateTime()) ->setDuration(400) ->setRate(84) @@ -104,7 +105,7 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet6 = new Timesheet(); $timesheet6 - ->setBegin(new \DateTime()) + ->setBegin(clone $date) ->setEnd(new \DateTime()) ->setDuration(0) ->setRate(0) @@ -113,8 +114,8 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet7 = new Timesheet(); $timesheet7 - ->setBegin(new \DateTime()) - ->setEnd(new \DateTime()) + ->setBegin(clone $date) + ->setEnd(new \DateTime('2018-11-18')) ->setDuration(0) ->setRate(0) ->setUser(new User()) @@ -123,7 +124,7 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet8 = new Timesheet(); $timesheet8 - ->setBegin(new \DateTime()) + ->setBegin(clone $date) ->setEnd(new \DateTime()) ->setDuration(0) ->setRate(0) @@ -150,6 +151,11 @@ class ActivityInvoiceCalculatorTest extends AbstractCalculatorTest $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')); + $this->assertEquals(404.38, $entries[0]->getRate()); $this->assertEquals(2032.74, $entries[1]->getRate()); $this->assertEquals(84, $entries[2]->getRate()); diff --git a/tests/Invoice/Calculator/ActivityUserInvoiceCalculatorTest.php b/tests/Invoice/Calculator/ActivityUserInvoiceCalculatorTest.php index 928eb164..8db88fd6 100644 --- a/tests/Invoice/Calculator/ActivityUserInvoiceCalculatorTest.php +++ b/tests/Invoice/Calculator/ActivityUserInvoiceCalculatorTest.php @@ -36,6 +36,7 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest public function testWithMultipleEntries(): void { + $date = new \DateTime(); $customer = new Customer('foo'); $template = new InvoiceTemplate(); $template->setVat(19); @@ -67,7 +68,7 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet2 = new Timesheet(); $timesheet2 - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-18')) ->setEnd(new \DateTime()) ->setDuration(400) ->setRate(84.75) @@ -77,7 +78,7 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet3 = new Timesheet(); $timesheet3 - ->setBegin(new \DateTime()) + ->setBegin(clone $date) ->setEnd(new \DateTime()) ->setDuration(1800) ->setRate(111.11) @@ -87,7 +88,7 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet4 = new Timesheet(); $timesheet4 - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-29')) ->setEnd(new \DateTime()) ->setDuration(400) ->setRate(1947.99) @@ -97,7 +98,7 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet5 = new Timesheet(); $timesheet5 - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-18')) ->setEnd(new \DateTime()) ->setDuration(400) ->setRate(84) @@ -107,7 +108,7 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet5a = new Timesheet(); $timesheet5a - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-08')) ->setEnd(new \DateTime()) ->setDuration(400) ->setRate(84) @@ -117,7 +118,7 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet6 = new Timesheet(); $timesheet6 - ->setBegin(new \DateTime()) + ->setBegin(clone $date) ->setEnd(new \DateTime()) ->setDuration(0) ->setRate(0) @@ -126,7 +127,7 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet7 = new Timesheet(); $timesheet7 - ->setBegin(new \DateTime()) + ->setBegin(clone $date) ->setEnd(new \DateTime()) ->setDuration(0) ->setRate(0) @@ -136,7 +137,7 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet8 = new Timesheet(); $timesheet8 - ->setBegin(new \DateTime()) + ->setBegin(clone $date) ->setEnd(new \DateTime()) ->setDuration(0) ->setRate(0) @@ -163,12 +164,19 @@ class ActivityUserInvoiceCalculatorTest extends AbstractCalculatorTest $entries = $sut->getEntries(); self::assertCount(6, $entries); - $this->assertEquals(404.38, $entries[0]->getRate()); + $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')); + + $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[3]->getRate()); + $this->assertEquals(84.0, $entries[0]->getRate()); $this->assertEquals(0, $entries[4]->getRate()); - $this->assertEquals(0, $entries[5]->getRate()); + $this->assertEquals(0, $entries[3]->getRate()); } public function testDescriptionByActivity(): void diff --git a/tests/Invoice/Calculator/DateInvoiceCalculatorTest.php b/tests/Invoice/Calculator/DateInvoiceCalculatorTest.php index 0c5f94a2..bf52eaf8 100644 --- a/tests/Invoice/Calculator/DateInvoiceCalculatorTest.php +++ b/tests/Invoice/Calculator/DateInvoiceCalculatorTest.php @@ -37,6 +37,7 @@ class DateInvoiceCalculatorTest extends AbstractCalculatorTest public function testWithMultipleEntries(): void { + $date = new DateTime(); $customer = new Customer('foo'); $template = new InvoiceTemplate(); $template->setVat(19); @@ -85,7 +86,7 @@ class DateInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet4 = new Timesheet(); $timesheet4 - ->setBegin(new DateTime()) + ->setBegin($date) ->setEnd(new DateTime('2018-11-28')) ->setDuration(400) ->setRate(1947.99) @@ -123,8 +124,11 @@ class DateInvoiceCalculatorTest extends AbstractCalculatorTest $entries = $sut->getEntries(); self::assertCount(3, $entries); - $this->assertEquals(378.02, $entries[0]->getRate()); - $this->assertEquals(195.11, $entries[1]->getRate()); + $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(2521.12, $entries[0]->getRate() + $entries[1]->getRate() + $entries[2]->getRate()); } diff --git a/tests/Invoice/Calculator/DateUserInvoiceCalculatorTest.php b/tests/Invoice/Calculator/DateUserInvoiceCalculatorTest.php index 3c19e8d5..8999f623 100644 --- a/tests/Invoice/Calculator/DateUserInvoiceCalculatorTest.php +++ b/tests/Invoice/Calculator/DateUserInvoiceCalculatorTest.php @@ -126,11 +126,10 @@ class DateUserInvoiceCalculatorTest extends AbstractCalculatorTest $entries = $sut->getEntries(); self::assertCount(4, $entries); - $this->assertEquals(378.02, $entries[0]->getRate()); - $this->assertEquals(111.11, $entries[1]->getRate()); - $this->assertEquals(1947.99, $entries[2]->getRate()); - $this->assertEquals(84, $entries[3]->getRate()); - self::assertEquals(2521.12, $entries[0]->getRate() + $entries[1]->getRate() + $entries[2]->getRate() + $entries[3]->getRate()); + $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()); } public function testDescriptionByTimesheet(): void diff --git a/tests/Invoice/Calculator/DefaultCalculatorTest.php b/tests/Invoice/Calculator/DefaultCalculatorTest.php index a2285c60..389248b4 100644 --- a/tests/Invoice/Calculator/DefaultCalculatorTest.php +++ b/tests/Invoice/Calculator/DefaultCalculatorTest.php @@ -49,7 +49,7 @@ class DefaultCalculatorTest extends AbstractCalculatorTest $timesheet2 = new Timesheet(); $timesheet2->setDescription('foo 2'); - $timesheet2->setBegin(clone $date); + $timesheet2->setBegin(new \DateTime('2018-11-18')); $timesheet2->setDuration(400); $timesheet2->setRate(84); $timesheet2->setActivity(new Activity()); diff --git a/tests/Invoice/Calculator/PriceInvoiceCalculatorTest.php b/tests/Invoice/Calculator/PriceInvoiceCalculatorTest.php index 7d19c3d6..18af93fc 100644 --- a/tests/Invoice/Calculator/PriceInvoiceCalculatorTest.php +++ b/tests/Invoice/Calculator/PriceInvoiceCalculatorTest.php @@ -88,8 +88,8 @@ class PriceInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet4 = new Timesheet(); $timesheet4 - ->setBegin(new DateTime()) - ->setEnd(new DateTime('2018-11-28')) + ->setBegin(new DateTime('2018-11-28')) + ->setEnd(new DateTime()) ->setDuration(400) ->setHourlyRate(0) ->setRate(1947.99) @@ -127,10 +127,16 @@ class PriceInvoiceCalculatorTest extends AbstractCalculatorTest $entries = $sut->getEntries(); self::assertCount(4, $entries); - $this->assertEquals(378.02, $entries[0]->getRate()); - $this->assertEquals(111.11, $entries[1]->getRate()); - $this->assertEquals(1947.99, $entries[2]->getRate()); - $this->assertEquals(84, $entries[3]->getRate()); + + $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')); + + $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()); } public function testDescriptionByTimesheet(): void diff --git a/tests/Invoice/Calculator/ProjectInvoiceCalculatorTest.php b/tests/Invoice/Calculator/ProjectInvoiceCalculatorTest.php index 5f2222b1..ca92a66b 100644 --- a/tests/Invoice/Calculator/ProjectInvoiceCalculatorTest.php +++ b/tests/Invoice/Calculator/ProjectInvoiceCalculatorTest.php @@ -55,7 +55,7 @@ class ProjectInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet = new Timesheet(); $timesheet - ->setBegin(new DateTime()) + ->setBegin(new DateTime('2018-11-29')) ->setEnd(new DateTime()) ->setDuration(3600) ->setRate(293.27) @@ -65,7 +65,7 @@ class ProjectInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet2 = new Timesheet(); $timesheet2 - ->setBegin(new DateTime()) + ->setBegin(new DateTime('2018-11-28')) ->setEnd(new DateTime()) ->setDuration(400) ->setRate(84.75) @@ -75,7 +75,7 @@ class ProjectInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet3 = new Timesheet(); $timesheet3 - ->setBegin(new DateTime()) + ->setBegin(new DateTime('2018-11-29')) ->setEnd(new DateTime()) ->setDuration(1800) ->setRate(111.11) @@ -85,7 +85,7 @@ class ProjectInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet4 = new Timesheet(); $timesheet4 - ->setBegin(new DateTime()) + ->setBegin(new DateTime('2018-11-08')) ->setEnd(new DateTime()) ->setDuration(400) ->setRate(1947.99) @@ -95,7 +95,7 @@ class ProjectInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet5 = new Timesheet(); $timesheet5 - ->setBegin(new DateTime()) + ->setBegin(new DateTime('2018-11-28')) ->setEnd(new DateTime()) ->setDuration(400) ->setRate(84) @@ -123,9 +123,14 @@ class ProjectInvoiceCalculatorTest extends AbstractCalculatorTest $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()); + + $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')); + + $this->assertEquals(404.38, $entries[2]->getRate()); + $this->assertEquals(2032.74, $entries[0]->getRate()); + $this->assertEquals(84, $entries[1]->getRate()); self::assertEquals(2521.12, $entries[0]->getRate() + $entries[1]->getRate() + $entries[2]->getRate()); } diff --git a/tests/Invoice/Calculator/ProjectUserInvoiceCalculatorTest.php b/tests/Invoice/Calculator/ProjectUserInvoiceCalculatorTest.php index 6f7e1b6c..2c55a771 100644 --- a/tests/Invoice/Calculator/ProjectUserInvoiceCalculatorTest.php +++ b/tests/Invoice/Calculator/ProjectUserInvoiceCalculatorTest.php @@ -58,7 +58,7 @@ class ProjectUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet = new Timesheet(); $timesheet - ->setBegin(new DateTime()) + ->setBegin(new DateTime('2018-11-29')) ->setEnd(new DateTime()) ->setDuration(3600) ->setRate(293.27) @@ -68,7 +68,7 @@ class ProjectUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet2 = new Timesheet(); $timesheet2 - ->setBegin(new DateTime()) + ->setBegin(new DateTime('2018-11-28')) ->setEnd(new DateTime()) ->setDuration(400) ->setRate(84.75) @@ -78,7 +78,7 @@ class ProjectUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet3 = new Timesheet(); $timesheet3 - ->setBegin(new DateTime()) + ->setBegin(new DateTime('2018-11-29')) ->setEnd(new DateTime()) ->setDuration(1800) ->setRate(111.11) @@ -88,7 +88,7 @@ class ProjectUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet4 = new Timesheet(); $timesheet4 - ->setBegin(new DateTime()) + ->setBegin(new DateTime('2018-11-08')) ->setEnd(new DateTime()) ->setDuration(400) ->setRate(1947.99) @@ -98,7 +98,7 @@ class ProjectUserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet5 = new Timesheet(); $timesheet5 - ->setBegin(new DateTime()) + ->setBegin(new DateTime('2018-11-28')) ->setEnd(new DateTime()) ->setDuration(400) ->setRate(84) @@ -126,10 +126,14 @@ class ProjectUserInvoiceCalculatorTest extends AbstractCalculatorTest $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(2521.12, $entries[0]->getRate() + $entries[1]->getRate() + $entries[2]->getRate()); + + $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')); + + $this->assertEquals(404.38, $entries[2]->getRate()); + $this->assertEquals(2032.74, $entries[0]->getRate()); + $this->assertEquals(84, $entries[1]->getRate()); } public function testDescriptionByProject(): void diff --git a/tests/Invoice/Calculator/ShortInvoiceCalculatorTest.php b/tests/Invoice/Calculator/ShortInvoiceCalculatorTest.php index 1e43688a..68617dcc 100644 --- a/tests/Invoice/Calculator/ShortInvoiceCalculatorTest.php +++ b/tests/Invoice/Calculator/ShortInvoiceCalculatorTest.php @@ -56,7 +56,7 @@ class ShortInvoiceCalculatorTest extends AbstractCalculatorTest ->setUser(new User()) ->setActivity($activity) ->setProject($project) - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-29')) ->setEnd(new \DateTime()) ->addTag((new Tag())->setName('foo')) ->addTag((new Tag())->setName('bar')) @@ -70,7 +70,7 @@ class ShortInvoiceCalculatorTest extends AbstractCalculatorTest ->setUser(new User()) ->setActivity($activity) ->setProject($project) - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-28')) ->setEnd(new \DateTime()) ->addTag((new Tag())->setName('bar1')) ; @@ -83,7 +83,7 @@ class ShortInvoiceCalculatorTest extends AbstractCalculatorTest ->setUser(new User()) ->setActivity($activity) ->setProject($project) - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-29')) ->setEnd(new \DateTime()) ; @@ -106,8 +106,11 @@ class ShortInvoiceCalculatorTest extends AbstractCalculatorTest $this->assertEquals(5800, $sut->getTimeWorked()); $this->assertEquals(1, \count($sut->getEntries())); - /** @var InvoiceItem $result */ - $result = $sut->getEntries()[0]; + $entries = $sut->getEntries(); + self::assertCount(1, $entries); + $result = $entries[0]; + + $this->assertEquals('2018-11-28', $result->getBegin()?->format('Y-m-d')); $this->assertEquals('activity description', $result->getDescription()); $this->assertEquals(293.27, $result->getHourlyRate()); $this->assertNull($result->getFixedRate()); diff --git a/tests/Invoice/Calculator/UserInvoiceCalculatorTest.php b/tests/Invoice/Calculator/UserInvoiceCalculatorTest.php index 7ffd6e07..6c32c14c 100644 --- a/tests/Invoice/Calculator/UserInvoiceCalculatorTest.php +++ b/tests/Invoice/Calculator/UserInvoiceCalculatorTest.php @@ -53,7 +53,7 @@ class UserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet = new Timesheet(); $timesheet - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-29')) ->setEnd(new \DateTime()) ->setDuration(3600) ->setRate(293.27) @@ -63,7 +63,7 @@ class UserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet2 = new Timesheet(); $timesheet2 - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-28')) ->setEnd(new \DateTime()) ->setDuration(400) ->setRate(84.75) @@ -73,7 +73,7 @@ class UserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet3 = new Timesheet(); $timesheet3 - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-08')) ->setEnd(new \DateTime()) ->setDuration(1800) ->setRate(111.11) @@ -83,7 +83,7 @@ class UserInvoiceCalculatorTest extends AbstractCalculatorTest $timesheet4 = new Timesheet(); $timesheet4 - ->setBegin(new \DateTime()) + ->setBegin(new \DateTime('2018-11-28')) ->setEnd(new \DateTime()) ->setDuration(400) ->setRate(1947.99) diff --git a/tests/Invoice/Calculator/WeeklyInvoiceCalculatorTest.php b/tests/Invoice/Calculator/WeeklyInvoiceCalculatorTest.php index d974d117..85885edf 100644 --- a/tests/Invoice/Calculator/WeeklyInvoiceCalculatorTest.php +++ b/tests/Invoice/Calculator/WeeklyInvoiceCalculatorTest.php @@ -126,9 +126,8 @@ class WeeklyInvoiceCalculatorTest extends AbstractCalculatorTest $entries = $sut->getEntries(); self::assertCount(2, $entries); - $this->assertEquals(378.02, $entries[0]->getRate()); - $this->assertEquals(2143.1, $entries[1]->getRate()); - self::assertEquals(2521.12, $entries[0]->getRate() + $entries[1]->getRate()); + $this->assertEquals(378.02, $entries[1]->getRate()); + $this->assertEquals(2143.1, $entries[0]->getRate()); } public function testDescriptionByTimesheet(): void