From 41c6e6f84afc101130f4b4a86d080293febcf0c1 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Mon, 25 Oct 2021 20:06:48 +0200 Subject: [PATCH] test fixes --- Models/Event.php | 199 +++++-------------------------- tests/Models/EventMapperTest.php | 36 +++--- tests/Models/EventTest.php | 183 ++++++++++++++++++++++------ 3 files changed, 197 insertions(+), 221 deletions(-) diff --git a/Models/Event.php b/Models/Event.php index c351933..c67c01e 100755 --- a/Models/Event.php +++ b/Models/Event.php @@ -18,6 +18,7 @@ use Modules\Admin\Models\Account; use Modules\Admin\Models\NullAccount; use Modules\Calendar\Models\Calendar; use Modules\Tasks\Models\Task; +use Modules\Tasks\Models\NullTask; use phpOMS\Localization\Money; use phpOMS\Stdlib\Base\Exception\InvalidEnumValue; @@ -85,7 +86,7 @@ class Event * @var Calendar * @since 1.0.0 */ - private Calendar $calendar; + public Calendar $calendar; /** * Costs. @@ -93,7 +94,7 @@ class Event * @var Money * @since 1.0.0 */ - private Money $costs; + public Money $costs; /** * Budget. @@ -101,7 +102,7 @@ class Event * @var Money * @since 1.0.0 */ - private Money $budget; + public Money $budget; /** * Earnings. @@ -109,7 +110,7 @@ class Event * @var Money * @since 1.0.0 */ - private Money $earnings; + public Money $earnings; /** * Tasks. @@ -133,7 +134,7 @@ class Event * @var int * @since 1.0.0 */ - private int $progress = 0; + public int $progress = 0; /** * Progress type. @@ -218,84 +219,6 @@ class Event $this->media[] = $media; } - /** - * Get start date. - * - * @return \DateTime - * - * @since 1.0.0 - */ - public function getStart() : \DateTime - { - return $this->start; - } - - /** - * Set start date. - * - * @param \DateTime $start Start date - * - * @return void - * - * @since 1.0.0 - */ - public function setStart(\DateTime $start) : void - { - $this->start = $start; - } - - /** - * Set end. - * - * @param \DateTime $end End date - * - * @return void - * - * @since 1.0.0 - */ - public function setEnd(\DateTime $end) : void - { - $this->end = $end; - } - - /** - * Get end. - * - * @return \DateTime - * - * @since 1.0.0 - */ - public function getEnd() : \DateTime - { - return $this->end; - } - - /** - * Get progress. - * - * @return int - * - * @since 1.0.0 - */ - public function getProgress() : int - { - return $this->progress; - } - - /** - * Set progress. - * - * @param int $progress Progress - * - * @return void - * - * @since 1.0.0 - */ - public function setProgress(int $progress) : void - { - $this->progress = $progress; - } - /** * Get progress type. * @@ -322,18 +245,6 @@ class Event $this->progressType = $type; } - /** - * Get calendar. - * - * @return Calendar - * - * @since 1.0.0 - */ - public function getCalendar() : Calendar - { - return $this->calendar; - } - /** * Add task. * @@ -345,11 +256,7 @@ class Event */ public function addTask(Task $task) : void { - if ($task->getId() !== 0) { - $this->tasks[$task->getId()] = $task; - } else { - $this->tasks[] = $task; - } + $this->tasks[] = $task; } /** @@ -383,7 +290,7 @@ class Event */ public function getTask(int $id) : Task { - return $this->tasks[$id] ?? new Task(); + return $this->tasks[$id] ?? new NullTask(); } /** @@ -441,80 +348,34 @@ class Event } /** - * Get costs. - * - * @return Money - * - * @since 1.0.0 + * {@inheritdoc} */ - public function getCosts() : Money + public function toArray() : array { - return $this->costs; + return [ + 'id' => $this->id, + 'type' => $this->type, + 'start' => $this->start, + 'end' => $this->end, + 'name' => $this->name, + 'description' => $this->description, + 'calendar' => $this->calendar, + 'costs' => $this->costs, + 'budget' => $this->budget, + 'earnings' => $this->earnings, + 'tasks' => $this->tasks, + 'media' => $this->media, + 'progress' => $this->progress, + 'progressType' => $this->progressType, + 'createdAt' => $this->createdAt, + ]; } /** - * Get budget. - * - * @return Money - * - * @since 1.0.0 + * {@inheritdoc} */ - public function getBudget() : Money + public function jsonSerialize() { - return $this->budget; - } - - /** - * Get earnings. - * - * @return Money - * - * @since 1.0.0 - */ - public function getEarnings() : Money - { - return $this->earnings; - } - - /** - * Set costs. - * - * @param Money $costs Costs - * - * @return void - * - * @since 1.0.0 - */ - public function setCosts(Money $costs) : void - { - $this->costs = $costs; - } - - /** - * Set budget. - * - * @param Money $budget Budget - * - * @return void - * - * @since 1.0.0 - */ - public function setBudget(Money $budget) : void - { - $this->budget = $budget; - } - - /** - * Set earnings. - * - * @param Money $earnings Earnings - * - * @return void - * - * @since 1.0.0 - */ - public function setEarnings(Money $earnings) : void - { - $this->earnings = $earnings; + return $this->toArray(); } } diff --git a/tests/Models/EventMapperTest.php b/tests/Models/EventMapperTest.php index abd4557..f4ca453 100755 --- a/tests/Models/EventMapperTest.php +++ b/tests/Models/EventMapperTest.php @@ -41,15 +41,15 @@ final class EventMapperTest extends \PHPUnit\Framework\TestCase $event->name = 'Eventname'; $event->description = 'Event description'; $event->createdBy = new NullAccount(1); - $event->setStart(new \DateTime('2000-05-05')); - $event->setEnd(new \DateTime('2005-05-05')); + $event->start = new \DateTime('2000-05-05'); + $event->end = new \DateTime('2005-05-05'); $money = new Money(); $money->setString('1.23'); - $event->setCosts($money); - $event->setBudget($money); - $event->setEarnings($money); + $event->costs = $money; + $event->budget = $money; + $event->earnings = $money; $task = new Task(); $task->title = 'EventTask 1'; @@ -62,7 +62,7 @@ final class EventMapperTest extends \PHPUnit\Framework\TestCase $event->addTask($task); $event->addTask($task2); - $event->setProgress(11); + $event->progress = 11; $event->setProgressType(ProgressType::TASKS); $media = new Media(); @@ -83,12 +83,12 @@ final class EventMapperTest extends \PHPUnit\Framework\TestCase self::assertEquals($event->name, $eventR->name); self::assertEquals($event->description, $eventR->description); self::assertEquals($event->countTasks(), $eventR->countTasks()); - self::assertEquals($event->getStart()->format('Y-m-d'), $eventR->getStart()->format('Y-m-d')); - self::assertEquals($event->getEnd()->format('Y-m-d'), $eventR->getEnd()->format('Y-m-d')); - self::assertEquals($event->getCosts()->getAmount(), $eventR->getCosts()->getAmount()); - self::assertEquals($event->getBudget()->getAmount(), $eventR->getBudget()->getAmount()); - self::assertEquals($event->getEarnings()->getAmount(), $eventR->getEarnings()->getAmount()); - self::assertEquals($event->getProgress(), $eventR->getProgress()); + self::assertEquals($event->start->format('Y-m-d'), $eventR->start->format('Y-m-d')); + self::assertEquals($event->end->format('Y-m-d'), $eventR->end->format('Y-m-d')); + self::assertEquals($event->costs->getAmount(), $eventR->costs->getAmount()); + self::assertEquals($event->budget->getAmount(), $eventR->budget->getAmount()); + self::assertEquals($event->earnings->getAmount(), $eventR->earnings->getAmount()); + self::assertEquals($event->progress, $eventR->progress); self::assertEquals($event->getProgressType(), $eventR->getProgressType()); $expected = $event->getMedia(); @@ -124,17 +124,17 @@ final class EventMapperTest extends \PHPUnit\Framework\TestCase $event->name = $text->generateText(\mt_rand(3, 7)); $event->description = $text->generateText(\mt_rand(20, 100)); $event->createdBy = new NullAccount(1); - $event->setStart(new \DateTime('2000-05-05')); - $event->setEnd(new \DateTime('2005-05-05')); - $event->setProgress(\mt_rand(0, 100)); + $event->start = new \DateTime('2000-05-05'); + $event->end = new \DateTime('2005-05-05'); + $event->progress = \mt_rand(0, 100); $event->setProgressType(\mt_rand(0, 4)); $money = new Money(); $money->setString('1.23'); - $event->setCosts($money); - $event->setBudget($money); - $event->setEarnings($money); + $event->costs = $money; + $event->budget = $money; + $event->earnings = $money; $id = EventMapper::create($event); } diff --git a/tests/Models/EventTest.php b/tests/Models/EventTest.php index 94f0c35..5071695 100755 --- a/tests/Models/EventTest.php +++ b/tests/Models/EventTest.php @@ -18,6 +18,7 @@ use Modules\EventManagement\Models\Event; use Modules\EventManagement\Models\EventType; use Modules\EventManagement\Models\ProgressType; use Modules\Tasks\Models\Task; +use Modules\Media\Models\Media; use phpOMS\Localization\Money; /** @@ -25,67 +26,181 @@ use phpOMS\Localization\Money; */ final class EventTest extends \PHPUnit\Framework\TestCase { + private Event $event; + + /** + * {@inheritdoc} + */ + protected function setUp() : void + { + $this->event = new Event(); + } + /** * @covers Modules\EventManagement\Models\Event * @group module */ public function testDefault() : void { - $event = new Event(); - - self::assertEquals(0, $event->getId()); - self::assertEquals(EventType::DEFAULT, $event->getType()); - self::assertInstanceOf('\Modules\Calendar\Models\Calendar', $event->getCalendar()); - self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $event->getStart()->format('Y-m-d')); - self::assertEquals((new \DateTime('now'))->modify('+1 month')->format('Y-m-d'), $event->getEnd()->format('Y-m-d')); - self::assertEquals(0, $event->getCosts()->getInt()); - self::assertEquals(0, $event->getBudget()->getInt()); - self::assertEquals(0, $event->getEarnings()->getInt()); - self::assertFalse($event->removeTask(2)); - self::assertEmpty($event->getTasks()); - self::assertEquals(0, $event->getProgress()); - self::assertEquals(ProgressType::MANUAL, $event->getProgressType()); + self::assertEquals(0, $this->event->getId()); + self::assertEquals(EventType::DEFAULT, $this->event->getType()); + self::assertInstanceOf('\Modules\Calendar\Models\Calendar', $this->event->calendar); + self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->event->start->format('Y-m-d')); + self::assertEquals((new \DateTime('now'))->modify('+1 month')->format('Y-m-d'), $this->event->end->format('Y-m-d')); + self::assertEquals(0, $this->event->costs->getInt()); + self::assertEquals(0, $this->event->budget->getInt()); + self::assertEquals(0, $this->event->earnings->getInt()); + self::assertFalse($this->event->removeTask(2)); + self::assertEmpty($this->event->getTasks()); + self::assertEmpty($this->event->getMedia()); + self::assertInstanceOf('\Modules\Tasks\Models\NullTask', $this->event->getTask(1)); + self::assertEquals(0, $this->event->progress); + self::assertEquals(ProgressType::MANUAL, $this->event->getProgressType()); } /** * @covers Modules\EventManagement\Models\Event * @group module */ - public function testSetGet() : void + public function testTypeInputOutput() : void { - $event = new Event(); + $this->event->setType(EventType::SEMINAR); + self::assertEquals(EventType::SEMINAR, $this->event->getType()); + } - $event->setType(EventType::SEMINAR); - self::assertEquals(EventType::SEMINAR, $event->getType()); + /** + * @covers Modules\EventManagement\Models\Event + * @group module + */ + public function testInvalidTypeInputOutput() : void + { + $this->expectException(\phpOMS\Stdlib\Base\Exception\InvalidEnumValue::class); + $this->event->setType(999); + } + /** + * @covers Modules\EventManagement\Models\Event + * @group module + */ + public function testCostsInputOutput() : void + { $money = new Money(); $money->setString('1.23'); - $event->setCosts($money); - self::assertEquals($money->getAmount(), $event->getCosts()->getAmount()); + $this->event->costs = $money; + self::assertEquals($money->getAmount(), $this->event->costs->getAmount()); + } - $event->setBudget($money); - self::assertEquals($money->getAmount(), $event->getBudget()->getAmount()); + /** + * @covers Modules\EventManagement\Models\Event + * @group module + */ + public function testBudgetInputOutput() : void + { + $money = new Money(); + $money->setString('1.23'); - $event->setEarnings($money); - self::assertEquals($money->getAmount(), $event->getEarnings()->getAmount()); + $this->event->budget = $money; + self::assertEquals($money->getAmount(), $this->event->budget->getAmount()); + } + /** + * @covers Modules\EventManagement\Models\Event + * @group module + */ + public function testEarningsInputOutput() : void + { + $money = new Money(); + $money->setString('1.23'); + + $this->event->earnings = $money; + self::assertEquals($money->getAmount(), $this->event->earnings->getAmount()); + } + + /** + * @covers Modules\EventManagement\Models\Event + * @group module + */ + public function testMediaInputOutput() : void + { + $this->event->addMedia(new Media()); + self::assertCount(1, $this->event->getMedia()); + } + + /** + * @covers Modules\EventManagement\Models\Event + * @group module + */ + public function testTaskInputOutput() : void + { $task = new Task(); $task->title = 'A'; - $event->addTask($task); - self::assertEquals('A', $event->getTask(0)->title); + $this->event->addTask($task); + self::assertEquals('A', $this->event->getTask(0)->title); - self::assertTrue($event->removeTask(0)); - self::assertEquals(0, $event->countTasks()); + self::assertTrue($this->event->removeTask(0)); + self::assertEquals(0, $this->event->countTasks()); - $event->addTask($task); - self::assertCount(1, $event->getTasks()); + $this->event->addTask($task); + self::assertCount(1, $this->event->getTasks()); + } - $event->setProgress(10); - self::assertEquals(10, $event->getProgress()); + /** + * @covers Modules\EventManagement\Models\Event + * @group module + */ + public function testProgressInputOutput() : void + { + $this->event->progress = 10; + self::assertEquals(10, $this->event->progress); + } - $event->setProgressType(ProgressType::TASKS); - self::assertEquals(ProgressType::TASKS, $event->getProgressType()); + /** + * @covers Modules\EventManagement\Models\Event + * @group module + */ + public function testProgressTypeInputOutput() : void + { + $this->event->setProgressType(ProgressType::TASKS); + self::assertEquals(ProgressType::TASKS, $this->event->getProgressType()); + } + + /** + * @covers Modules\EventManagement\Models\Event + * @group module + */ + public function testSerialize() : void + { + $this->event->name = 'Name'; + $this->event->description = 'Description'; + $this->event->start = new \DateTime(); + $this->event->end = new \DateTime(); + $this->event->setType(EventType::SEMINAR); + $this->event->progress = 10; + $this->event->setProgressType(ProgressType::TASKS); + + $serialized = $this->event->jsonSerialize(); + unset($serialized['calendar']); + unset($serialized['createdAt']); + + self::assertEquals( + [ + 'id' => 0, + 'type' => EventType::SEMINAR, + 'start' => $this->event->start, + 'end' => $this->event->end, + 'name' => 'Name', + 'description' => 'Description', + 'costs' => new Money(), + 'budget' => new Money(), + 'earnings' => new Money(), + 'tasks' => [], + 'media' => [], + 'progress' => 10, + 'progressType' => ProgressType::TASKS, + ], + $serialized + ); } }