From 3185b8417e875f2ee87430dc7d26b63a0f36e27c Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Tue, 2 Nov 2021 21:57:09 +0100 Subject: [PATCH] add unit tests --- Controller/ApiController.php | 9 +- Models/WikiCategory.php | 31 +-- Models/WikiCategoryL11n.php | 28 +-- Models/WikiCategoryMapper.php | 4 +- Models/WikiDoc.php | 26 +- tests/Controller/ApiControllerTest.php | 307 ++++++++++++++++++++++++ tests/Controller/test.md | 3 + tests/Models/NullWikiAppTest.php | 42 ++++ tests/Models/WikiAppMapperTest.php | 17 -- tests/Models/WikiAppTest.php | 19 ++ tests/Models/WikiCategoryL11nTest.php | 87 +++++++ tests/Models/WikiCategoryMapperTest.php | 23 +- tests/Models/WikiCategoryTest.php | 45 +++- tests/Models/WikiDocMapperTest.php | 21 +- tests/Models/WikiDocTest.php | 42 ++++ tests/phpunit_default.xml | 2 +- 16 files changed, 576 insertions(+), 130 deletions(-) create mode 100644 tests/Controller/ApiControllerTest.php create mode 100644 tests/Controller/test.md create mode 100644 tests/Models/NullWikiAppTest.php create mode 100644 tests/Models/WikiCategoryL11nTest.php diff --git a/Controller/ApiController.php b/Controller/ApiController.php index b209d64..a750d32 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -221,7 +221,7 @@ final class ApiController extends Controller private function createWikiCategoryL11nFromRequest(RequestAbstract $request) : WikiCategoryL11n { $l11nWikiCategory = new WikiCategoryL11n(); - $l11nWikiCategory->setCategory((int) ($request->getData('category') ?? 0)); + $l11nWikiCategory->category = (int) ($request->getData('category') ?? 0); $l11nWikiCategory->setLanguage((string) ( $request->getData('language') ?? $request->getLanguage() )); @@ -282,7 +282,7 @@ final class ApiController extends Controller private function updateDocFromRequest(RequestAbstract $request) : WikiDoc { $doc = WikiDocMapper::get((int) $request->getData('id')); - $doc->setName((string) ($request->getData('title') ?? $doc->getName())); + $doc->name = (string) ($request->getData('title') ?? $doc->name); return $doc; } @@ -330,7 +330,6 @@ final class ApiController extends Controller } $category = $this->createWikiCategoryFromRequest($request); - $category->setL11n($request->getData('name'), $request->getData('language') ?? $request->getLanguage()); $this->createModel($request->header->account, $category, WikiCategoryMapper::class, 'category', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Category', 'Category successfully created.', $category); @@ -349,6 +348,7 @@ final class ApiController extends Controller { $category = new WikiCategory(); $category->app = new NullWikiApp((int) ($request->getData('app') ?? 1)); + $category->setL11n($request->getData('name'), $request->getData('language') ?? $request->getLanguage()); if ($request->getData('parent') !== null) { $category->parent = new NullWikiCategory((int) $request->getData('parent')); @@ -428,6 +428,7 @@ final class ApiController extends Controller private function updateCategoryFromRequest(RequestAbstract $request) : WikiCategory { $category = WikiCategoryMapper::get((int) $request->getData('id')); + $category->setL11n($request->getData('name') ?? $category->getL11n(), $request->getData('language') ?? $request->getLanguage()); return $category; } @@ -567,7 +568,7 @@ final class ApiController extends Controller private function updateAppFromRequest(RequestAbstract $request) : WikiApp { $app = WikiAppMapper::get((int) $request->getData('id')); - $app->setName((string) ($request->getData('title') ?? $app->getName())); + $app->name = (string) ($request->getData('name') ?? $app->name); return $app; } diff --git a/Models/WikiCategory.php b/Models/WikiCategory.php index 7d51a25..a5a7180 100755 --- a/Models/WikiCategory.php +++ b/Models/WikiCategory.php @@ -66,7 +66,7 @@ class WikiCategory implements \JsonSerializable * @var string * @since 1.0.0 */ - private string $virtualPath = '/'; + public string $virtualPath = '/'; /** * Cosntructor @@ -77,6 +77,7 @@ class WikiCategory implements \JsonSerializable { $this->app = new NullWikiApp(); $this->parent = new NullWikiCategory(); + $this->setL11n(''); } /** @@ -125,32 +126,6 @@ class WikiCategory implements \JsonSerializable } } - /** - * Get the path - * - * @return string - * - * @since 1.0.0 - */ - public function getVirtualPath() : string - { - return $this->virtualPath; - } - - /** - * Set the path if file - * - * @param string $path Path to file - * - * @return mixed - * - * @since 1.0.0 - */ - public function setVirtualPath(string $path) - { - $this->virtualPath = $path; - } - /** * {@inheritdoc} */ @@ -159,7 +134,7 @@ class WikiCategory implements \JsonSerializable return [ 'id' => $this->id, 'app' => $this->app, - 'name' => $this->name, + 'virtualPath' => $this->virtualPath, ]; } diff --git a/Models/WikiCategoryL11n.php b/Models/WikiCategoryL11n.php index e3ac80e..5ae125f 100755 --- a/Models/WikiCategoryL11n.php +++ b/Models/WikiCategoryL11n.php @@ -41,7 +41,7 @@ class WikiCategoryL11n implements \JsonSerializable, ArrayableInterface * @var int * @since 1.0.0 */ - protected int $category = 0; + public int $category = 0; /** * Language. @@ -84,32 +84,6 @@ class WikiCategoryL11n implements \JsonSerializable, ArrayableInterface return $this->id; } - /** - * Set category. - * - * @param int $category Category id - * - * @return void - * - * @since 1.0.0 - */ - public function setCategory(int $category) : void - { - $this->category = $category; - } - - /** - * Get category - * - * @return int - * - * @since 1.0.0 - */ - public function getCategory() : int - { - return $this->category; - } - /** * Get language * diff --git a/Models/WikiCategoryMapper.php b/Models/WikiCategoryMapper.php index 86314dc..0d4b14b 100755 --- a/Models/WikiCategoryMapper.php +++ b/Models/WikiCategoryMapper.php @@ -101,7 +101,7 @@ final class WikiCategoryMapper extends DataMapperAbstract /** * Get by parent. * - * @param mixed $value Parent value id + * @param int $value Parent value id * @param int $app App * @param int $depth Relation depth * @@ -109,7 +109,7 @@ final class WikiCategoryMapper extends DataMapperAbstract * * @since 1.0.0 */ - public static function getByParentAndApp($value, int $app = 1, int $depth = 3) : array + public static function getByParentAndApp(int $value, int $app = 1, int $depth = 3) : array { $query = self::getQuery(); $query->where(static::$table . '_d' . $depth . '.' . static::$parent, '=', $value) diff --git a/Models/WikiDoc.php b/Models/WikiDoc.php index d6339f1..583dfd8 100755 --- a/Models/WikiDoc.php +++ b/Models/WikiDoc.php @@ -16,6 +16,8 @@ namespace Modules\Knowledgebase\Models; use Modules\Media\Models\Media; use Modules\Tag\Models\Tag; +use phpOMS\Localization\ISO639x1Enum; + /** * Wiki document class. @@ -91,7 +93,7 @@ class WikiDoc implements \JsonSerializable * @var string * @since 1.0.0 */ - private string $language = 'en'; + private string $language = ISO639x1Enum::_EN; /** * Tags. @@ -228,8 +230,26 @@ class WikiDoc implements \JsonSerializable /** * {@inheritdoc} */ - public function jsonSerialize() : array + public function toArray() : array { - return []; + return [ + 'id' => $this->id, + 'app' => $this->app, + 'name' => $this->name, + 'status' => $this->status, + 'doc' => $this->doc, + 'docRaw' => $this->docRaw, + 'language' => $this->language, + 'tags' => $this->tags, + 'media' => $this->media, + ]; + } + + /** + * {@inheritdoc} + */ + public function jsonSerialize() + { + return $this->toArray(); } } diff --git a/tests/Controller/ApiControllerTest.php b/tests/Controller/ApiControllerTest.php new file mode 100644 index 0000000..ff1402b --- /dev/null +++ b/tests/Controller/ApiControllerTest.php @@ -0,0 +1,307 @@ +app = new class() extends ApplicationAbstract + { + protected string $appName = 'Api'; + }; + + $this->app->dbPool = $GLOBALS['dbpool']; + $this->app->orgId = 1; + $this->app->accountManager = new AccountManager($GLOBALS['session']); + $this->app->appSettings = new CoreSettings(); + $this->app->moduleManager = new ModuleManager($this->app, __DIR__ . '/../../../../Modules/'); + $this->app->dispatcher = new Dispatcher($this->app); + $this->app->eventManager = new EventManager($this->app->dispatcher); + $this->app->eventManager->importFromFile(__DIR__ . '/../../../../Web/Api/Hooks.php'); + $this->app->sessionManager = new HttpSession(36000); + + $account = new Account(); + TestUtils::setMember($account, 'id', 1); + + $permission = new AccountPermission(); + $permission->setUnit(1); + $permission->setApp('backend'); + $permission->setPermission( + PermissionType::READ + | PermissionType::CREATE + | PermissionType::MODIFY + | PermissionType::DELETE + | PermissionType::PERMISSION + ); + + $account->addPermission($permission); + + $this->app->accountManager->add($account); + $this->app->router = new WebRouter(); + + $this->module = $this->app->moduleManager->get('Knowledgebase'); + + TestUtils::setMember($this->module, 'app', $this->app); + } + + /** + * @covers Modules\Knowledgebase\Controller\ApiController + * @group module + */ + public function testApiAppCRU() : void + { + // create + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('name', 'Test App'); + + $this->module->apiWikiAppCreate($request, $response); + self::assertGreaterThan(0, $aId = $response->get('')['response']->getId()); + + //read + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('id', $aId); + + $this->module->apiWikiAppGet($request, $response); + self::assertEquals('Test App', $response->get('')['response']->name); + + // update + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('id', $aId); + $request->setData('name', 'New title'); + + $this->module->apiWikiAppUpdate($request, $response); + self::assertEquals('New title', $response->get('')['response']->name); + } + + /** + * @covers Modules\Knowledgebase\Controller\ApiController + * @group module + */ + public function testApiWikiAppCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiWikiAppCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } + + /** + * @covers Modules\Knowledgebase\Controller\ApiController + * @group module + */ + public function testWikiCategoryCRU() : void + { + // create + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('app', '1'); + $request->setData('name', 'Test Category'); + + $this->module->apiWikiCategoryCreate($request, $response); + self::assertGreaterThan(0, $cId = $response->get('')['response']->getId()); + + //read + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('id', $cId); + + $this->module->apiWikiCategoryGet($request, $response); + self::assertEquals('Test Category', $response->get('')['response']->getL11n()); + + // update + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('id', $cId); + $request->setData('name', 'New title'); + + $this->module->apiWikiCategoryUpdate($request, $response); + self::assertEquals('New title', $response->get('')['response']->getL11n()); + } + + /** + * @covers Modules\Knowledgebase\Controller\ApiController + * @group module + */ + public function testApiWikiCategoryCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiWikiCategoryCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } + + /** + * @covers Modules\Knowledgebase\Controller\ApiController + * @group module + */ + public function testWikiCategoryL11nCRU() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('category', '1'); + $request->setData('name', 'New Test Category'); + + $this->module->apiWikiCategoryL11nCreate($request, $response); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\Knowledgebase\Controller\ApiController + * @group module + */ + public function testApiWikiCategoryL11nCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiWikiCategoryL11nCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } + + /** + * @covers Modules\Knowledgebase\Controller\ApiController + * @group module + */ + public function testWikiDocCRU() : void + { + // create + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('title', 'Test Doc'); + $request->setData('plain', 'Plain text'); + $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->apiWikiDocCreate($request, $response); + self::assertGreaterThan(0, $cId = $response->get('')['response']->getId()); + + //read + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('id', $cId); + + $this->module->apiWikiDocGet($request, $response); + self::assertEquals('Test Doc', $response->get('')['response']->name); + + // update + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('id', $cId); + $request->setData('title', 'New title'); + + $this->module->apiWikiDocUpdate($request, $response); + self::assertEquals('New title', $response->get('')['response']->name); + } + + /** + * @covers Modules\Knowledgebase\Controller\ApiController + * @group module + */ + public function testApiWikiDocCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiWikiDocCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } +} 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/NullWikiAppTest.php b/tests/Models/NullWikiAppTest.php new file mode 100644 index 0000000..3f0d87b --- /dev/null +++ b/tests/Models/NullWikiAppTest.php @@ -0,0 +1,42 @@ +getId()); + } +} diff --git a/tests/Models/WikiAppMapperTest.php b/tests/Models/WikiAppMapperTest.php index f1c74a0..0610b5f 100755 --- a/tests/Models/WikiAppMapperTest.php +++ b/tests/Models/WikiAppMapperTest.php @@ -43,21 +43,4 @@ final class WikiAppMapperTest extends \PHPUnit\Framework\TestCase $appR = WikiAppMapper::get($app->getId()); self::assertEquals($app->name, $appR->name); } - - /** - * @group volume - * @group module - * @coversNothing - */ - public function testVolume() : void - { - for ($i = 1; $i < 3; ++$i) { - $text = new Text(); - $app = new WikiApp(); - - $app->name = $text->generateText(\mt_rand(1, 3)); - - $id = WikiAppMapper::create($app); - } - } } diff --git a/tests/Models/WikiAppTest.php b/tests/Models/WikiAppTest.php index 5517bd0..0bdc9ce 100755 --- a/tests/Models/WikiAppTest.php +++ b/tests/Models/WikiAppTest.php @@ -54,4 +54,23 @@ final class WikiAppTest extends \PHPUnit\Framework\TestCase $this->app->name = 'Test name'; self::assertEquals('Test name', $this->app->name); } + + /** + * @covers Modules\Knowledgebase\Models\WikiApp + * @group module + */ + public function testSerialize() : void + { + $this->app->name = 'Title'; + + $serialized = $this->app->jsonSerialize(); + + self::assertEquals( + [ + 'id' => 0, + 'name' => 'Title', + ], + $serialized + ); + } } diff --git a/tests/Models/WikiCategoryL11nTest.php b/tests/Models/WikiCategoryL11nTest.php new file mode 100644 index 0000000..2225218 --- /dev/null +++ b/tests/Models/WikiCategoryL11nTest.php @@ -0,0 +1,87 @@ +l11n = new WikiCategoryL11n(); + } + + /** + * @covers Modules\Knowledgebase\Models\WikiCategoryL11n + * @group module + */ + public function testDefault() : void + { + self::assertEquals(0, $this->l11n->getId()); + self::assertEquals('', $this->l11n->name); + self::assertEquals(0, $this->l11n->category); + self::assertEquals(ISO639x1Enum::_EN, $this->l11n->getLanguage()); + } + + /** + * @covers Modules\Knowledgebase\Models\WikiCategoryL11n + * @group module + */ + public function testNameInputOutput() : void + { + $this->l11n->name = 'TestName'; + self::assertEquals('TestName', $this->l11n->name); + } + + /** + * @covers Modules\Knowledgebase\Models\WikiCategoryL11n + * @group module + */ + public function testLanguageInputOutput() : void + { + $this->l11n->setLanguage(ISO639x1Enum::_DE); + self::assertEquals(ISO639x1Enum::_DE, $this->l11n->getLanguage()); + } + + /** + * @covers Modules\Knowledgebase\Models\WikiCategoryL11n + * @group module + */ + public function testSerialize() : void + { + $this->l11n->name = 'Title'; + $this->l11n->category = 2; + $this->l11n->setLanguage(ISO639x1Enum::_DE); + + self::assertEquals( + [ + 'id' => 0, + 'name' => 'Title', + 'category' => 2, + 'language' => ISO639x1Enum::_DE, + ], + $this->l11n->jsonSerialize() + ); + } +} diff --git a/tests/Models/WikiCategoryMapperTest.php b/tests/Models/WikiCategoryMapperTest.php index 2a68490..7fc22df 100755 --- a/tests/Models/WikiCategoryMapperTest.php +++ b/tests/Models/WikiCategoryMapperTest.php @@ -38,7 +38,7 @@ final class WikiCategoryMapperTest extends \PHPUnit\Framework\TestCase /** * @testdox The model can be created and read from the database - * @covers Modules\Knowledgebase\Models\WikiAppMapper + * @covers Modules\Knowledgebase\Models\WikiCategoryMapper * @group module */ public function testCR() : void @@ -51,11 +51,13 @@ final class WikiCategoryMapperTest extends \PHPUnit\Framework\TestCase $categoryR = WikiCategoryMapper::get($this->category->getId()); self::assertEquals($this->category->getL11n(), $categoryR->getL11n()); + + self::assertGreaterThan(0, \count(WikiCategoryMapper::getByApp(1))); } /** * @testdox The model can be created and read from the database with a parent category - * @covers Modules\Knowledgebase\Models\WikiAppMapper + * @covers Modules\Knowledgebase\Models\WikiCategoryMapper * @group module */ public function testChildCR() : void @@ -70,22 +72,7 @@ final class WikiCategoryMapperTest extends \PHPUnit\Framework\TestCase $categoryR = WikiCategoryMapper::get($this->category->getId()); self::assertEquals($this->category->getL11n(), $categoryR->getL11n()); self::assertEquals($this->category->parent->getId(), $categoryR->parent->getId()); - } - /** - * @group volume - * @group module - * @coversNothing - */ - public function testVolume() : void - { - for ($i = 1; $i < 30; ++$i) { - $text = new Text(); - $category = new WikiCategory(); - - $category->setL11n($text->generateText(\mt_rand(1, 3))); - - $id = WikiCategoryMapper::create($category); - } + self::assertGreaterThan(0, \count(WikiCategoryMapper::getByParentAndApp(1, 1))); } } diff --git a/tests/Models/WikiCategoryTest.php b/tests/Models/WikiCategoryTest.php index 4e85b1f..5e11fb0 100755 --- a/tests/Models/WikiCategoryTest.php +++ b/tests/Models/WikiCategoryTest.php @@ -17,6 +17,7 @@ namespace Modules\Knowledgebase\tests\Models; use Modules\Knowledgebase\Models\NullWikiApp; use Modules\Knowledgebase\Models\NullWikiCategory; use Modules\Knowledgebase\Models\WikiCategory; +use Modules\Knowledgebase\Models\WikiCategoryL11n; /** * @testdox Modules\tests\Knowledgebase\Models\WikiCateboryTest: Wiki category @@ -37,7 +38,7 @@ final class WikiCategoryTest extends \PHPUnit\Framework\TestCase /** * @testdox The model has the expected default values after initialization - * @covers Modules\Knowledgebase\Models\WikiApp + * @covers Modules\Knowledgebase\Models\WikiCategory * @group module */ public function testDefault() : void @@ -45,13 +46,13 @@ final class WikiCategoryTest extends \PHPUnit\Framework\TestCase self::assertEquals(0, $this->category->getId()); self::assertEquals(0, $this->category->app->getId()); self::assertEquals('', $this->category->getL11n()); - self::assertEquals('/', $this->category->getVirtualPath()); + self::assertEquals('/', $this->category->virtualPath); self::assertEquals(0, $this->category->parent->getId()); } /** * @testdox The application can correctly set and returned - * @covers Modules\Knowledgebase\Models\WikiApp + * @covers Modules\Knowledgebase\Models\WikiCategory * @group module */ public function testAppInputOutput() : void @@ -62,29 +63,32 @@ final class WikiCategoryTest extends \PHPUnit\Framework\TestCase /** * @testdox The name can correctly set and returned - * @covers Modules\Knowledgebase\Models\WikiApp + * @covers Modules\Knowledgebase\Models\WikiCategory * @group module */ public function testNameInputOutput() : void { - $this->category->setL11n('Category Name'); - self::assertEquals('Category Name', $this->category->getL11n()); + $this->category->setL11n('Test'); + self::assertEquals('Test', $this->category->getL11n()); + + $this->category->setL11n(new WikiCategoryL11n('NewTest')); + self::assertEquals('NewTest', $this->category->getL11n()); } /** * @testdox The path can correctly set and returned - * @covers Modules\Knowledgebase\Models\WikiApp + * @covers Modules\Knowledgebase\Models\WikiCategory * @group module */ public function testPathInputOutput() : void { - $this->category->setVirtualPath('/test/path'); - self::assertEquals('/test/path', $this->category->getVirtualPath()); + $this->category->virtualPath = '/test/path'; + self::assertEquals('/test/path', $this->category->virtualPath); } /** * @testdox The parent can correctly set and returned - * @covers Modules\Knowledgebase\Models\WikiApp + * @covers Modules\Knowledgebase\Models\WikiCategory * @group module */ public function testParentInputOutput() : void @@ -92,4 +96,25 @@ final class WikiCategoryTest extends \PHPUnit\Framework\TestCase $this->category->parent = new NullWikiCategory(2); self::assertEquals(2, $this->category->parent->getId()); } + + /** + * @covers Modules\Knowledgebase\Models\WikiCategory + * @group module + */ + public function testSerialize() : void + { + $this->category->app = new NullWikiApp(1); + $this->category->virtualPath = '/test/path'; + + $serialized = $this->category->jsonSerialize(); + + self::assertEquals( + [ + 'id' => 0, + 'app' => $this->category->app, + 'virtualPath' => '/test/path', + ], + $serialized + ); + } } diff --git a/tests/Models/WikiDocMapperTest.php b/tests/Models/WikiDocMapperTest.php index 7bd68cb..debe47d 100755 --- a/tests/Models/WikiDocMapperTest.php +++ b/tests/Models/WikiDocMapperTest.php @@ -52,26 +52,7 @@ final class WikiDocMapperTest extends \PHPUnit\Framework\TestCase self::assertEquals($doc->getStatus(), $docR->getStatus()); self::assertEquals($doc->getLanguage(), $docR->getLanguage()); self::assertEquals($doc->category->getId(), $docR->category->getId()); - } - /** - * @group volume - * @group module - * @coversNothing - */ - public function testVolume() : void - { - for ($i = 1; $i < 30; ++$i) { - $text = new Text(); - $doc = new WikiDoc(); - - $doc->name = $text->generateText(\mt_rand(1, 3)); - $doc->doc = $text->generateText(\mt_rand(100, 500)); - $doc->setStatus(WikiStatus::ACTIVE); - $doc->category = new NullWikiCategory(\mt_rand(1, 9)); - $doc->setLanguage('en'); - - $id = WikiDocMapper::create($doc); - } + self::assertGreaterThan(0, \count(WikiDocMapper::getNewestByApp(1))); } } diff --git a/tests/Models/WikiDocTest.php b/tests/Models/WikiDocTest.php index e7c89e5..cadde23 100755 --- a/tests/Models/WikiDocTest.php +++ b/tests/Models/WikiDocTest.php @@ -19,6 +19,8 @@ use Modules\Knowledgebase\Models\NullWikiCategory; use Modules\Knowledgebase\Models\WikiDoc; use Modules\Knowledgebase\Models\WikiStatus; use Modules\Tag\Models\NullTag; +use Modules\Media\Models\Media; +use phpOMS\Localization\ISO639x1Enum; /** * @testdox Modules\tests\Knowledgebase\Models\WikiDocTest: Wiki document @@ -142,4 +144,44 @@ final class WikiDocTest extends \PHPUnit\Framework\TestCase $this->doc->addTag(new NullTag(5)); self::assertEquals([new NullTag(5)], $this->doc->getTags()); } + + /** + * @covers Modules\Knowledgebase\Models\WikiDoc + * @group module + */ + public function testMediaInputOutput() : void + { + $this->doc->addMedia(new Media()); + self::assertCount(1, $this->doc->getMedia()); + } + + /** + * @covers Modules\Knowledgebase\Models\WikiDoc + * @group module + */ + public function testSerialize() : void + { + $this->doc->app = new NullWikiApp(1); + $this->doc->name = '/test/path'; + $this->doc->setStatus(WikiStatus::DRAFT); + $this->doc->doc = 'TestDoc'; + $this->doc->docRaw = 'TestDocRaw'; + + $serialized = $this->doc->jsonSerialize(); + + self::assertEquals( + [ + 'id' => 0, + 'app' => $this->doc->app, + 'name' => '/test/path', + 'status' => WikiStatus::DRAFT, + 'doc' => 'TestDoc', + 'docRaw' => 'TestDocRaw', + 'language' => ISO639x1Enum::_EN, + 'tags' => [], + 'media' => [], + ], + $serialized + ); + } } diff --git a/tests/phpunit_default.xml b/tests/phpunit_default.xml index 722365c..9208c99 100755 --- a/tests/phpunit_default.xml +++ b/tests/phpunit_default.xml @@ -1,5 +1,5 @@ - + *vendor*