From 9531246f092bb8a57377bab59a0720bc529390eb Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Tue, 16 Nov 2021 00:05:43 +0100 Subject: [PATCH] cs fixes, bug fixes, code coverage --- Admin/Install/SearchCommands.php | 2 +- CONTRIBUTING.md | 4 +- Controller/BackendController.php | 1 + Controller/SearchController.php | 2 +- Models/RelationAbstract.php | 2 +- Models/Task.php | 14 +- Views/TaskView.php | 26 +- .../ApiControllerTest.php} | 36 ++- .../BackendControllerTest.php | 2 +- tests/Controller/test.md | 3 + tests/Models/RelationAbstractTest.php | 59 ++++ tests/Models/TaskElementTest.php | 173 ++++++----- tests/Models/TaskMapperTest.php | 8 +- tests/Models/TaskTest.php | 286 ++++++++++-------- tests/Views/TaskViewTest.php | 45 +++ 15 files changed, 443 insertions(+), 220 deletions(-) rename tests/{ControllerTest.php => Controller/ApiControllerTest.php} (85%) mode change 100755 => 100644 rename tests/{ => Controller}/BackendControllerTest.php (98%) mode change 100755 => 100644 create mode 100644 tests/Controller/test.md create mode 100644 tests/Models/RelationAbstractTest.php create mode 100644 tests/Views/TaskViewTest.php diff --git a/Admin/Install/SearchCommands.php b/Admin/Install/SearchCommands.php index a91012d..e0c26d8 100755 --- a/Admin/Install/SearchCommands.php +++ b/Admin/Install/SearchCommands.php @@ -19,7 +19,7 @@ use phpOMS\Router\RouteVerb; return [ '^:tag .*$' => [ [ - 'dest' => '\Modules\Tasks\Controller\SearchController:searchTags', + 'dest' => '\Modules\Tasks\Controller\SearchController:searchTag', 'verb' => RouteVerb::ANY, 'permission' => [ 'module' => SearchController::NAME, diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cab9f5e..ad8944e 100755 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,9 +12,7 @@ If you have a good idea for improvement feel free to create a new issue with all ### Issues -Feel free to grab any open issue implement it and create a new pull request. Most issues can be found in the `Project.md` file in the `Docs` repository. - -The issue information can be used to provide additional information such as priority, difficulty and type. For your first issue try to find a issue marked `[d:first]` or `[d:beginner]`. +Feel free to grab any open issue implement it and create a new pull request. Most issues can be found in the code marked with `@todo` or in the [PROJECT.md](https://github.com/Orange-Management/Docs/blob/master/Project/PROJECT.md) file. ### Code Style diff --git a/Controller/BackendController.php b/Controller/BackendController.php index b5b2914..b61f685 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -86,6 +86,7 @@ final class BackendController extends Controller implements DashboardElementInte /** * {@inheritdoc} + * @codeCoverageIgnore */ public function viewDashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { diff --git a/Controller/SearchController.php b/Controller/SearchController.php index e6fc6e7..9e358e1 100755 --- a/Controller/SearchController.php +++ b/Controller/SearchController.php @@ -41,7 +41,7 @@ final class SearchController extends Controller * * @since 1.0.0 */ - public function searchTags(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + public function searchTag(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { // join tags with tag l11n // join tags with tasks diff --git a/Models/RelationAbstract.php b/Models/RelationAbstract.php index f919d00..745a1f9 100755 --- a/Models/RelationAbstract.php +++ b/Models/RelationAbstract.php @@ -49,7 +49,7 @@ abstract class RelationAbstract implements \JsonSerializable * @var int * @since 1.0.0 */ - protected int $element = 0; + public int $element = 0; /** * Get id. diff --git a/Models/Task.php b/Models/Task.php index 9f66e8d..3539b04 100755 --- a/Models/Task.php +++ b/Models/Task.php @@ -180,7 +180,7 @@ class Task implements \JsonSerializable * @var Schedule * @since 1.0.0 */ - protected Schedule $schedule; + public Schedule $schedule; /** * Priority @@ -592,18 +592,6 @@ class Task implements \JsonSerializable $this->type = $type; } - /** - * Get schedule. - * - * @return Schedule - * - * @since 1.0.0 - */ - public function getSchedule() : Schedule - { - return $this->schedule; - } - /** * {@inheritdoc} */ diff --git a/Views/TaskView.php b/Views/TaskView.php index 0c9e3eb..014bed7 100755 --- a/Views/TaskView.php +++ b/Views/TaskView.php @@ -14,6 +14,8 @@ declare(strict_types=1); namespace Modules\Tasks\Views; +use Modules\Media\Models\Media; +use Modules\Media\Models\NullMedia; use Modules\Profile\Models\ProfileMapper; use Modules\Tasks\Models\TaskStatus; use phpOMS\Uri\UriFactory; @@ -29,6 +31,24 @@ use phpOMS\Views\View; */ class TaskView extends View { + /** + * User profile image. + * + * @var Media + * @since 1.0.0 + */ + public Media $defaultProfileImage; + + /** + * Constructor + * + * @since 1.0.0 + */ + public function __construct() + { + $this->defaultProfileImage = new NullMedia(); + } + /** * Get the profile image * @@ -44,11 +64,11 @@ class TaskView extends View { $profile = ProfileMapper::getFor($account, 'account'); - if ($profile === null || $profile->image->getPath() === '') { - return UriFactory::build('Web/Backend/img/user_default_' . \mt_rand(1, 6) . '.png'); + if (($profile instanceof NullProfile) || $profile->image->getPath() === '') { + return UriFactory::build('{/prefix}' . $this->defaultProfileImage->getPath()); } - return UriFactory::build($profile->image->getPath()); + return UriFactory::build('{/prefix}' . $profile->image->getPath()); } /** diff --git a/tests/ControllerTest.php b/tests/Controller/ApiControllerTest.php old mode 100755 new mode 100644 similarity index 85% rename from tests/ControllerTest.php rename to tests/Controller/ApiControllerTest.php index d3c8c1d..4df2a01 --- a/tests/ControllerTest.php +++ b/tests/Controller/ApiControllerTest.php @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\Task\tests; +namespace Modules\Task\tests\Controller; use Model\CoreSettings; use Modules\Admin\Models\AccountPermission; @@ -28,6 +28,7 @@ use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpResponse; use phpOMS\Module\ModuleManager; use phpOMS\Router\WebRouter; +use phpOMS\System\MimeType; use phpOMS\Uri\HttpUri; use phpOMS\Utils\TestUtils; @@ -96,6 +97,23 @@ final class ControllerTest extends \PHPUnit\Framework\TestCase $request->setData('title', 'Controller Test Title'); $request->setData('plain', 'Controller Test Description'); $request->setData('due', (new \DateTime())->format('Y-m-d H:i:s')); + $request->setData('tags', '[{"title": "TestTitle", "color": "#f0f", "language": "en"}, {"id": 1}]'); + + if (!\is_file(__DIR__ . '/test_tmp.md')) { + \copy(__DIR__ . '/test.md', __DIR__ . '/test_tmp.md'); + } + + TestUtils::setMember($request, 'files', [ + 'file1' => [ + 'name' => 'test.md', + 'type' => MimeType::M_TXT, + 'tmp_name' => __DIR__ . '/test_tmp.md', + 'error' => \UPLOAD_ERR_OK, + 'size' => \filesize(__DIR__ . '/test_tmp.md'), + ], + ]); + + $request->setData('media', \json_encode([1])); $this->module->apiTaskCreate($request, $response); @@ -156,6 +174,22 @@ final class ControllerTest extends \PHPUnit\Framework\TestCase $request->setData('task', 1); $request->setData('plain', 'Controller Test'); + if (!\is_file(__DIR__ . '/test_tmp.md')) { + \copy(__DIR__ . '/test.md', __DIR__ . '/test_tmp.md'); + } + + TestUtils::setMember($request, 'files', [ + 'file1' => [ + 'name' => 'test.md', + 'type' => MimeType::M_TXT, + 'tmp_name' => __DIR__ . '/test_tmp.md', + 'error' => \UPLOAD_ERR_OK, + 'size' => \filesize(__DIR__ . '/test_tmp.md'), + ], + ]); + + $request->setData('media', \json_encode([1])); + $this->module->apiTaskElementCreate($request, $response); self::assertEquals('Controller Test', $response->get('')['response']->descriptionRaw); diff --git a/tests/BackendControllerTest.php b/tests/Controller/BackendControllerTest.php old mode 100755 new mode 100644 similarity index 98% rename from tests/BackendControllerTest.php rename to tests/Controller/BackendControllerTest.php index daaa325..45691bf --- a/tests/BackendControllerTest.php +++ b/tests/Controller/BackendControllerTest.php @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\Task\tests; +namespace Modules\Task\tests\Controller; use Model\CoreSettings; use Modules\Admin\Models\AccountPermission; diff --git a/tests/Controller/test.md b/tests/Controller/test.md new file mode 100644 index 0000000..d35f959 --- /dev/null +++ b/tests/Controller/test.md @@ -0,0 +1,3 @@ +# Test Title + +Some **test** text. \ No newline at end of file diff --git a/tests/Models/RelationAbstractTest.php b/tests/Models/RelationAbstractTest.php new file mode 100644 index 0000000..30d89cc --- /dev/null +++ b/tests/Models/RelationAbstractTest.php @@ -0,0 +1,59 @@ +rel = new class() extends RelationAbstract + { + public function getRelation() { return new Modules\Admin\Models\Group(); } + + public function jsonSerialize() { return []; } + }; + } + + /** + * @covers Modules\Tasks\Models\RelationAbstract + * @group module + */ + public function testDefault() : void + { + self::assertEquals(0, $this->rel->getId()); + self::assertEquals(DutyType::TO, $this->rel->getDuty()); + } + + /** + * @covers Modules\Tasks\Models\RelationAbstract + * @group module + */ + public function testDutyInputOutput() : void + { + $this->rel->setDuty(DutyType::CC); + self::assertEquals(DutyType::CC, $this->rel->getDuty()); + } +} diff --git a/tests/Models/TaskElementTest.php b/tests/Models/TaskElementTest.php index b3ae0dd..8d6d28d 100755 --- a/tests/Models/TaskElementTest.php +++ b/tests/Models/TaskElementTest.php @@ -16,6 +16,7 @@ namespace Modules\Tasks\tests\Models; use Modules\Admin\Models\NullAccount; use Modules\Admin\Models\NullGroup; +use Modules\Media\Models\Media; use Modules\Tasks\Models\TaskElement; use Modules\Tasks\Models\TaskPriority; use Modules\Tasks\Models\TaskStatus; @@ -25,25 +26,33 @@ use Modules\Tasks\Models\TaskStatus; */ final class TaskElementTest extends \PHPUnit\Framework\TestCase { + private TaskElement $element; + + /** + * {@inheritdoc} + */ + protected function setUp() : void + { + $this->element = new TaskElement(); + } + /** * @covers Modules\Tasks\Models\TaskElement * @group module */ public function testDefault() : void { - $task = new TaskElement(); - - self::assertEquals(0, $task->getId()); - self::assertEquals(0, $task->createdBy->getId()); - self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $task->createdAt->format('Y-m-d')); - self::assertEquals((new \DateTime('now'))->modify('+1 day')->format('Y-m-d'), $task->due->format('Y-m-d')); - self::assertEquals(TaskStatus::OPEN, $task->getStatus()); - self::assertEquals('', $task->description); - self::assertEquals('', $task->descriptionRaw); - self::assertEquals([], $task->getTo()); - self::assertEquals([], $task->getCC()); - self::assertEquals(0, $task->task); - self::assertEquals(TaskPriority::NONE, $task->getPriority()); + self::assertEquals(0, $this->element->getId()); + self::assertEquals(0, $this->element->createdBy->getId()); + self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->element->createdAt->format('Y-m-d')); + self::assertEquals((new \DateTime('now'))->modify('+1 day')->format('Y-m-d'), $this->element->due->format('Y-m-d')); + self::assertEquals(TaskStatus::OPEN, $this->element->getStatus()); + self::assertEquals('', $this->element->description); + self::assertEquals('', $this->element->descriptionRaw); + self::assertEquals([], $this->element->getTo()); + self::assertEquals([], $this->element->getCC()); + self::assertEquals(0, $this->element->task); + self::assertEquals(TaskPriority::NONE, $this->element->getPriority()); } /** @@ -52,10 +61,8 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testCreatedByInputOutput() : void { - $task = new TaskElement(); - - $task->createdBy = new NullAccount(1); - self::assertEquals(1, $task->createdBy->getId()); + $this->element->createdBy = new NullAccount(1); + self::assertEquals(1, $this->element->createdBy->getId()); } /** @@ -64,10 +71,8 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testDueInputOutput() : void { - $task = new TaskElement(); - - $task->due = ($date = new \DateTime('2000-05-07')); - self::assertEquals($date->format('Y-m-d'), $task->due->format('Y-m-d')); + $this->element->due = ($date = new \DateTime('2000-05-07')); + self::assertEquals($date->format('Y-m-d'), $this->element->due->format('Y-m-d')); } /** @@ -76,10 +81,8 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testStatusInputOutput() : void { - $task = new TaskElement(); - - $task->setStatus(TaskStatus::DONE); - self::assertEquals(TaskStatus::DONE, $task->getStatus()); + $this->element->setStatus(TaskStatus::DONE); + self::assertEquals(TaskStatus::DONE, $this->element->getStatus()); } /** @@ -88,10 +91,18 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testPriorityInputOutput() : void { - $task = new TaskElement(); + $this->element->setPriority(TaskPriority::MEDIUM); + self::assertEquals(TaskPriority::MEDIUM, $this->element->getPriority()); + } - $task->setPriority(TaskPriority::MEDIUM); - self::assertEquals(TaskPriority::MEDIUM, $task->getPriority()); + /** + * @covers Modules\Tasks\Models\TaskElement + * @group module + */ + public function testMediaInputOutput() : void + { + $this->element->addMedia(new Media()); + self::assertCount(1, $this->element->getMedia()); } /** @@ -100,10 +111,8 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testDescriptionInputOutput() : void { - $task = new TaskElement(); - - $task->description = 'Description'; - self::assertEquals('Description', $task->description); + $this->element->description = 'Description'; + self::assertEquals('Description', $this->element->description); } /** @@ -112,10 +121,8 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testDescriptionRawInputOutput() : void { - $task = new TaskElement(); - - $task->descriptionRaw = 'DescriptionRaw'; - self::assertEquals('DescriptionRaw', $task->descriptionRaw); + $this->element->descriptionRaw = 'DescriptionRaw'; + self::assertEquals('DescriptionRaw', $this->element->descriptionRaw); } /** @@ -124,10 +131,8 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testTaskInputOutput() : void { - $task = new TaskElement(); - - $task->task = 2; - self::assertEquals(2, $task->task); + $this->element->task = 2; + self::assertEquals(2, $this->element->task); } /** @@ -136,11 +141,12 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testAccountToInputOutput() : void { - $task = new TaskElement(); + $this->element->addTo(new NullAccount(3)); + $this->element->addTo(new NullAccount(3)); // test duplicate + self::assertTrue($this->element->isToAccount(3)); - $task->addTo(new NullAccount(3)); - $task->addTo(new NullAccount(3)); // test duplicate - self::assertTrue($task->isToAccount(3)); + $this->element->addTo(new NullGroup(4)); + self::assertCount(2, $this->element->getTo()); } /** @@ -149,11 +155,12 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testGroupToInputOutput() : void { - $task = new TaskElement(); + $this->element->addGroupTo(new NullGroup(4)); + $this->element->addGroupTo(new NullGroup(4)); // test duplicate + self::assertTrue($this->element->isToGroup(4)); - $task->addGroupTo(new NullGroup(4)); - $task->addGroupTo(new NullGroup(4)); // test duplicate - self::assertTrue($task->isToGroup(4)); + $this->element->addTo(new NullAccount(3)); + self::assertCount(2, $this->element->getTo()); } /** @@ -162,11 +169,12 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testAccountCCInputOutput() : void { - $task = new TaskElement(); + $this->element->addCC(new NullAccount(5)); + $this->element->addCC(new NullAccount(5)); // test duplicate + self::assertTrue($this->element->isCCAccount(5)); - $task->addCC(new NullAccount(5)); - $task->addCC(new NullAccount(5)); // test duplicate - self::assertTrue($task->isCCAccount(5)); + $this->element->addCC(new NullGroup(6)); + self::assertCount(2, $this->element->getCC()); } /** @@ -175,11 +183,12 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testGroupCCInputOutput() : void { - $task = new TaskElement(); + $this->element->addGroupCC(new NullGroup(6)); + $this->element->addGroupCC(new NullGroup(6)); // test duplicate + self::assertTrue($this->element->isCCGroup(6)); - $task->addGroupCC(new NullGroup(6)); - $task->addGroupCC(new NullGroup(6)); // test duplicate - self::assertTrue($task->isCCGroup(6)); + $this->element->addCC(new NullAccount(5)); + self::assertCount(2, $this->element->getCC()); } /** @@ -188,9 +197,7 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testInvalidAccountTo() : void { - $task = new TaskElement(); - - self::assertFalse($task->isToAccount(7)); + self::assertFalse($this->element->isToAccount(7)); } /** @@ -199,9 +206,7 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testInvalidAccountCC() : void { - $task = new TaskElement(); - - self::assertFalse($task->isCCAccount(8)); + self::assertFalse($this->element->isCCAccount(8)); } /** @@ -210,9 +215,7 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testInvalidGroupTo() : void { - $task = new TaskElement(); - - self::assertFalse($task->isToGroup(9)); + self::assertFalse($this->element->isToGroup(9)); } /** @@ -221,9 +224,7 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase */ public function testInvalidGroupCC() : void { - $task = new TaskElement(); - - self::assertFalse($task->isCCGroup(10)); + self::assertFalse($this->element->isCCGroup(10)); } /** @@ -233,9 +234,7 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase public function testInvalidStatus() : void { $this->expectException(\phpOMS\Stdlib\Base\Exception\InvalidEnumValue::class); - - $task = new TaskElement(); - $task->setStatus(9999); + $this->element->setStatus(9999); } /** @@ -245,8 +244,36 @@ final class TaskElementTest extends \PHPUnit\Framework\TestCase public function testInvalidPriority() : void { $this->expectException(\phpOMS\Stdlib\Base\Exception\InvalidEnumValue::class); + $this->element->setPriority(9999); + } - $task = new TaskElement(); - $task->setPriority(9999); + /** + * @covers Modules\Tasks\Models\TaskElement + * @group module + */ + public function testSerialize() : void + { + $this->element->task = 2; + $this->element->description = 'Test'; + $this->element->descriptionRaw = 'TestRaw'; + $this->element->setStatus(TaskStatus::DONE); + + $serialized = $this->element->jsonSerialize(); + unset($serialized['createdAt']); + unset($serialized['createdBy']); + unset($serialized['due']); + + self::assertEquals( + [ + 'id' => 0, + 'task' => 2, + 'description' => 'Test', + 'descriptionRaw' => 'TestRaw', + 'status' => TaskStatus::DONE, + 'to' => [], + 'cc' => [], + ], + $serialized + ); } } diff --git a/tests/Models/TaskMapperTest.php b/tests/Models/TaskMapperTest.php index a08863f..1cb439b 100755 --- a/tests/Models/TaskMapperTest.php +++ b/tests/Models/TaskMapperTest.php @@ -48,7 +48,7 @@ final class TaskMapperTest extends \PHPUnit\Framework\TestCase $task = new Task(); $task->setCreatedBy(new NullAccount(1)); - $task->getSchedule()->createdBy = new NullAccount(1); + $task->schedule->createdBy = new NullAccount(1); $task->start = new \DateTime('2005-05-05'); $task->title = 'Task Test'; $task->setStatus(TaskStatus::OPEN); @@ -159,7 +159,7 @@ final class TaskMapperTest extends \PHPUnit\Framework\TestCase $task = new Task(); $task->setCreatedBy(new NullAccount(1)); - $task->getSchedule()->createdBy = new NullAccount(1); + $task->schedule->createdBy = new NullAccount(1); $task->start = new \DateTime('2005-05-05'); $task->title = $text->generateText(\mt_rand(1, 5)); $task->setStatus($status); @@ -200,7 +200,7 @@ final class TaskMapperTest extends \PHPUnit\Framework\TestCase $task = new Task(); $task->setCreatedBy(new NullAccount(1)); - $task->getSchedule()->createdBy = new NullAccount(1); + $task->schedule->createdBy = new NullAccount(1); $task->title = $text->generateText(\mt_rand(1, 5)); $task->setStatus($status); $task->isClosable = true; @@ -239,7 +239,7 @@ final class TaskMapperTest extends \PHPUnit\Framework\TestCase $task = new Task(); $task->setCreatedBy(new NullAccount(1)); - $task->getSchedule()->createdBy = new NullAccount(1); + $task->schedule->createdBy = new NullAccount(1); $task->title = $text->generateText(\mt_rand(1, 5)); $task->setStatus($status); $task->isClosable = true; diff --git a/tests/Models/TaskTest.php b/tests/Models/TaskTest.php index ff28467..7cf407a 100755 --- a/tests/Models/TaskTest.php +++ b/tests/Models/TaskTest.php @@ -16,6 +16,8 @@ namespace Modules\Tasks\tests\Models; use Modules\Admin\Models\NullAccount; use Modules\Admin\Models\NullGroup; +use Modules\Media\Models\Media; +use Modules\Tag\Models\Tag; use Modules\Tasks\Models\Task; use Modules\Tasks\Models\TaskElement; use Modules\Tasks\Models\TaskPriority; @@ -27,34 +29,45 @@ use Modules\Tasks\Models\TaskType; */ final class TaskTest extends \PHPUnit\Framework\TestCase { + private Task $task; + + /** + * {@inheritdoc} + */ + protected function setUp() : void + { + $this->task = new Task(); + } + /** * @covers Modules\Tasks\Models\Task * @group module */ public function testDefault() : void { - $task = new Task(); - - self::assertEquals(0, $task->getId()); - self::assertEquals(0, $task->getCreatedBy()->getId()); - self::assertEquals('', $task->title); - self::assertFalse($task->isToAccount(0)); - self::assertFalse($task->isCCAccount(0)); - self::assertFalse($task->isToGroup(0)); - self::assertFalse($task->isCCGroup(0)); - self::assertTrue($task->isEditable); - self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $task->createdAt->format('Y-m-d')); - self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $task->start->format('Y-m-d')); - self::assertNull($task->done); - self::assertEquals((new \DateTime('now'))->modify('+1 day')->format('Y-m-d'), $task->due->format('Y-m-d')); - self::assertEquals(TaskStatus::OPEN, $task->getStatus()); - self::assertTrue($task->isClosable); - self::assertEquals(TaskPriority::NONE, $task->getPriority()); - self::assertEquals(TaskType::SINGLE, $task->getType()); - self::assertEquals([], $task->getTaskElements()); - self::assertEquals('', $task->description); - self::assertEquals('', $task->descriptionRaw); - self::assertInstanceOf('\Modules\Tasks\Models\NullTaskElement', $task->getTaskElement(1)); + self::assertEquals(0, $this->task->getId()); + self::assertEquals(0, $this->task->getCreatedBy()->getId()); + self::assertEquals('', $this->task->title); + self::assertFalse($this->task->isToAccount(0)); + self::assertFalse($this->task->isCCAccount(0)); + self::assertFalse($this->task->isToGroup(0)); + self::assertFalse($this->task->isCCGroup(0)); + self::assertTrue($this->task->isEditable); + self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->task->createdAt->format('Y-m-d')); + self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->task->start->format('Y-m-d')); + self::assertNull($this->task->done); + self::assertEquals((new \DateTime('now'))->modify('+1 day')->format('Y-m-d'), $this->task->due->format('Y-m-d')); + self::assertEquals(TaskStatus::OPEN, $this->task->getStatus()); + self::assertTrue($this->task->isClosable); + self::assertEquals(TaskPriority::NONE, $this->task->getPriority()); + self::assertEquals(TaskType::SINGLE, $this->task->getType()); + self::assertEquals([], $this->task->getTaskElements()); + self::assertEquals([], $this->task->getMedia()); + self::assertEquals([], $this->task->getTags()); + self::assertEquals('', $this->task->description); + self::assertEquals('', $this->task->descriptionRaw); + self::assertInstanceOf('\Modules\Tag\Models\NullTag', $this->task->getTag(0)); + self::assertInstanceOf('\Modules\Tasks\Models\NullTaskElement', $this->task->getTaskElement(1)); } /** @@ -63,10 +76,8 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testCreatedByInputOutput() : void { - $task = new Task(); - - $task->setCreatedBy(new NullAccount(1)); - self::assertEquals(1, $task->getCreatedBy()->getId()); + $this->task->setCreatedBy(new NullAccount(1)); + self::assertEquals(1, $this->task->getCreatedBy()->getId()); } /** @@ -75,10 +86,8 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testStartInputOutput() : void { - $task = new Task(); - - $task->start = ($date = new \DateTime('2005-05-05')); - self::assertEquals($date->format('Y-m-d'), $task->start->format('Y-m-d')); + $this->task->start = ($date = new \DateTime('2005-05-05')); + self::assertEquals($date->format('Y-m-d'), $this->task->start->format('Y-m-d')); } /** @@ -87,10 +96,8 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testTitleInputOutput() : void { - $task = new Task(); - - $task->title = 'Title'; - self::assertEquals('Title', $task->title); + $this->task->title = 'Title'; + self::assertEquals('Title', $this->task->title); } /** @@ -99,10 +106,8 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testDoneInputOutput() : void { - $task = new Task(); - - $task->done = ($date = new \DateTime('2000-05-06')); - self::assertEquals($date->format('Y-m-d'), $task->done->format('Y-m-d')); + $this->task->done = ($date = new \DateTime('2000-05-06')); + self::assertEquals($date->format('Y-m-d'), $this->task->done->format('Y-m-d')); } /** @@ -111,10 +116,8 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testDueInputOutput() : void { - $task = new Task(); - - $task->due = ($date = new \DateTime('2000-05-07')); - self::assertEquals($date->format('Y-m-d'), $task->due->format('Y-m-d')); + $this->task->due = ($date = new \DateTime('2000-05-07')); + self::assertEquals($date->format('Y-m-d'), $this->task->due->format('Y-m-d')); } /** @@ -123,10 +126,8 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testStatusInputOutput() : void { - $task = new Task(); - - $task->setStatus(TaskStatus::DONE); - self::assertEquals(TaskStatus::DONE, $task->getStatus()); + $this->task->setStatus(TaskStatus::DONE); + self::assertEquals(TaskStatus::DONE, $this->task->getStatus()); } /** @@ -135,10 +136,8 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testClosableInputOutput() : void { - $task = new Task(); - - $task->isClosable = false; - self::assertFalse($task->isClosable); + $this->task->isClosable = false; + self::assertFalse($this->task->isClosable); } /** @@ -147,10 +146,8 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testPriority() : void { - $task = new Task(); - - $task->setPriority(TaskPriority::LOW); - self::assertEquals(TaskPriority::LOW, $task->getPriority()); + $this->task->setPriority(TaskPriority::LOW); + self::assertEquals(TaskPriority::LOW, $this->task->getPriority()); } /** @@ -159,8 +156,6 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testElementInputOutput() : void { - $task = new Task(); - $taskElement1 = new TaskElement(); $taskElement1->addTo(new NullAccount(2)); $taskElement1->addGroupTo(new NullGroup(4)); @@ -174,21 +169,21 @@ final class TaskTest extends \PHPUnit\Framework\TestCase $taskElement2->addGroupCC(new NullGroup(9)); $id = []; - $id[] = $task->addElement($taskElement1); - $id[] = $task->addElement($taskElement2); + $id[] = $this->task->addElement($taskElement1); + $id[] = $this->task->addElement($taskElement2); - self::assertTrue($task->isToAccount(2)); - self::assertTrue($task->isToAccount(3)); - self::assertTrue($task->isToGroup(4)); - self::assertTrue($task->isToGroup(5)); + self::assertTrue($this->task->isToAccount(2)); + self::assertTrue($this->task->isToAccount(3)); + self::assertTrue($this->task->isToGroup(4)); + self::assertTrue($this->task->isToGroup(5)); - self::assertTrue($task->isCCAccount(6)); - self::assertTrue($task->isCCAccount(7)); - self::assertTrue($task->isCCGroup(8)); - self::assertTrue($task->isCCGroup(9)); + self::assertTrue($this->task->isCCAccount(6)); + self::assertTrue($this->task->isCCAccount(7)); + self::assertTrue($this->task->isCCGroup(8)); + self::assertTrue($this->task->isCCGroup(9)); - self::assertEquals(0, $task->getTaskElements()[0]->getId()); - self::assertEquals(0, $task->getTaskElement(0)->getId()); + self::assertEquals(0, $this->task->getTaskElements()[0]->getId()); + self::assertEquals(0, $this->task->getTaskElement(0)->getId()); } /** @@ -197,10 +192,6 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testElementRemoval() : void { - $task = new Task(); - - $task = new Task(); - $taskElement1 = new TaskElement(); $taskElement1->addTo(new NullAccount(2)); $taskElement1->addGroupTo(new NullGroup(4)); @@ -214,22 +205,44 @@ final class TaskTest extends \PHPUnit\Framework\TestCase $taskElement2->addGroupCC(new NullGroup(9)); $id = []; - $id[] = $task->addElement($taskElement1); - $id[] = $task->addElement($taskElement2); + $id[] = $this->task->addElement($taskElement1); + $id[] = $this->task->addElement($taskElement2); - $success = $task->removeElement($id[1]); + $success = $this->task->removeElement($id[1]); self::assertTrue($success); } + /** + * @covers Modules\Tasks\Models\Task + * @group module + */ + public function testInvertElements() : void + { + $taskElement1 = new TaskElement(); + $taskElement1->addTo(new NullAccount(2)); + $taskElement1->addGroupTo(new NullGroup(4)); + $taskElement1->addCC(new NullAccount(6)); + $taskElement1->addGroupCC(new NullGroup(8)); + + $taskElement2 = new TaskElement(); + $taskElement2->addTo(new NullAccount(3)); + $taskElement2->addGroupTo(new NullGroup(5)); + $taskElement2->addCC(new NullAccount(7)); + $taskElement2->addGroupCC(new NullGroup(9)); + + $this->task->addElement($taskElement1); + $this->task->addElement($taskElement2); + + self::assertEquals([$taskElement2, $taskElement1], $this->task->invertTaskElements()); + } + /** * @covers Modules\Tasks\Models\Task * @group module */ public function testInvalidElementRemoval() : void { - $task = new Task(); - - $success = $task->removeElement(99); + $success = $this->task->removeElement(99); self::assertFalse($success); } @@ -239,10 +252,8 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testDescriptionInputOutput() : void { - $task = new Task(); - - $task->description = 'Description'; - self::assertEquals('Description', $task->description); + $this->task->description = 'Description'; + self::assertEquals('Description', $this->task->description); } /** @@ -251,10 +262,8 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testDescriptionRawInputOutput() : void { - $task = new Task(); - - $task->descriptionRaw = 'DescriptionRaw'; - self::assertEquals('DescriptionRaw', $task->descriptionRaw); + $this->task->descriptionRaw = 'DescriptionRaw'; + self::assertEquals('DescriptionRaw', $this->task->descriptionRaw); } /** @@ -263,10 +272,57 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testEditableInputOutput() : void { - $task = new Task(); + $this->task->isEditable = false; + self::assertFalse($this->task->isEditable); + } - $task->isEditable = false; - self::assertFalse($task->isEditable); + /** + * @covers Modules\Tasks\Models\Task + * @group module + */ + public function testTypeInputOutput() : void + { + $this->task->setType(TaskType::TEMPLATE); + self::assertEquals(TaskType::TEMPLATE, $this->task->getType()); + } + + /** + * @covers Modules\Tasks\Models\Task + * @group module + */ + public function testTagInputOutput() : void + { + $tag = new Tag(); + $tag->setL11n('Tag'); + + $this->task->addTag($tag); + self::assertEquals($tag, $this->task->getTag(0)); + self::assertCount(1, $this->task->getTags()); + } + + /** + * @covers Modules\Tasks\Models\Task + * @group module + */ + public function testTagRemove() : void + { + $tag = new Tag(); + $tag->setL11n('Tag'); + + $this->task->addTag($tag); + self::assertTrue($this->task->removeTag(0)); + self::assertCount(0, $this->task->getTags()); + self::assertFalse($this->task->removeTag(0)); + } + + /** + * @covers Modules\Tasks\Models\Task + * @group module + */ + public function testMediaInputOutput() : void + { + $this->task->addMedia(new Media()); + self::assertCount(1, $this->task->getMedia()); } /** @@ -275,23 +331,21 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testToArray() : void { - $task = new Task(); - $arr = [ 'id' => 0, - 'createdBy' => $task->getCreatedBy(), - 'createdAt' => $task->createdAt, - 'title' => $task->title, - 'description' => $task->description, - 'status' => $task->getStatus(), - 'type' => $task->getType(), - 'priority' => $task->getPriority(), - 'due' => $task->due, - 'done' => $task->done, + 'createdBy' => $this->task->getCreatedBy(), + 'createdAt' => $this->task->createdAt, + 'title' => $this->task->title, + 'description' => $this->task->description, + 'status' => $this->task->getStatus(), + 'type' => $this->task->getType(), + 'priority' => $this->task->getPriority(), + 'due' => $this->task->due, + 'done' => $this->task->done, ]; $isSubset = true; - $parent = $task->toArray(); + $parent = $this->task->toArray(); foreach ($arr as $key => $value) { if (!\array_key_exists($key, $parent) || $parent[$key] !== $value) { $isSubset = false; @@ -307,23 +361,21 @@ final class TaskTest extends \PHPUnit\Framework\TestCase */ public function testToJson() : void { - $task = new Task(); - $arr = [ 'id' => 0, - 'createdBy' => $task->getCreatedBy(), - 'createdAt' => $task->createdAt, - 'title' => $task->title, - 'description' => $task->description, - 'status' => $task->getStatus(), - 'type' => $task->getType(), - 'priority' => $task->getPriority(), - 'due' => $task->due, - 'done' => $task->done, + 'createdBy' => $this->task->getCreatedBy(), + 'createdAt' => $this->task->createdAt, + 'title' => $this->task->title, + 'description' => $this->task->description, + 'status' => $this->task->getStatus(), + 'type' => $this->task->getType(), + 'priority' => $this->task->getPriority(), + 'due' => $this->task->due, + 'done' => $this->task->done, ]; $isSubset = true; - $parent = $task->jsonSerialize(); + $parent = $this->task->jsonSerialize(); foreach ($arr as $key => $value) { if (!\array_key_exists($key, $parent) || $parent[$key] !== $value) { $isSubset = false; @@ -340,9 +392,7 @@ final class TaskTest extends \PHPUnit\Framework\TestCase public function testInvalidStatus() : void { $this->expectException(\phpOMS\Stdlib\Base\Exception\InvalidEnumValue::class); - - $task = new Task(); - $task->setStatus(9999); + $this->task->setStatus(9999); } /** @@ -352,8 +402,6 @@ final class TaskTest extends \PHPUnit\Framework\TestCase public function testInvalidPriority() : void { $this->expectException(\phpOMS\Stdlib\Base\Exception\InvalidEnumValue::class); - - $task = new Task(); - $task->setPriority(9999); + $this->task->setPriority(9999); } } diff --git a/tests/Views/TaskViewTest.php b/tests/Views/TaskViewTest.php new file mode 100644 index 0000000..77147a2 --- /dev/null +++ b/tests/Views/TaskViewTest.php @@ -0,0 +1,45 @@ +getAccountImage(999)); + } + + /** + * @covers Modules\Tasks\Views\TaskView + * @group framework + */ + public function testAccountImageUrl() : void + { + $view = new TaskView(); + + self::assertEquals('Web/Backend/img/default-user.jpg', $view->getAccountImage(1)); + } +}