test fixes

This commit is contained in:
Dennis Eichhorn 2021-10-25 20:06:48 +02:00
parent 12d025d336
commit 41c6e6f84a
3 changed files with 197 additions and 221 deletions

View File

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

View File

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

View File

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