add unit tests

This commit is contained in:
Dennis Eichhorn 2021-11-02 21:57:09 +01:00
parent 3ea6a605f4
commit 3185b8417e
16 changed files with 576 additions and 130 deletions

View File

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

View File

@ -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,
];
}

View File

@ -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
*

View File

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

View File

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

View File

@ -0,0 +1,307 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Knowledgebase\tests\Controller;
use Model\CoreSettings;
use Modules\Admin\Models\AccountPermission;
use phpOMS\Account\Account;
use phpOMS\Account\AccountManager;
use phpOMS\Account\PermissionType;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\DataStorage\Session\HttpSession;
use phpOMS\Dispatcher\Dispatcher;
use phpOMS\Event\EventManager;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;
use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Module\ModuleAbstract;
use phpOMS\Module\ModuleManager;
use phpOMS\Router\WebRouter;
use phpOMS\System\MimeType;
use phpOMS\Uri\HttpUri;
use phpOMS\Utils\TestUtils;
/**
* @testdox Modules\Knowledgebase\tests\Controller\ApiControllerTest: Knowledgebase api controller
*
* @internal
*/
final class ApiControllerTest extends \PHPUnit\Framework\TestCase
{
protected ApplicationAbstract $app;
/**
* @var \Modules\Knowledgebase\Controller\ApiController
*/
protected ModuleAbstract $module;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->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);
}
}

3
tests/Controller/test.md Normal file
View File

@ -0,0 +1,3 @@
# Test Title
Some **test** text.

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Knowledgebase\tests\Models;
use Modules\Knowledgebase\Models\NullWikiApp;
/**
* @internal
*/
final class NullWikiAppTest extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Knowledgebase\Models\NullWikiApp
* @group framework
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Knowledgebase\Models\WikiApp', new NullWikiApp());
}
/**
* @covers Modules\Knowledgebase\Models\NullWikiApp
* @group framework
*/
public function testId() : void
{
$null = new NullWikiApp(2);
self::assertEquals(2, $null->getId());
}
}

View File

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

View File

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

View File

@ -0,0 +1,87 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Knowledgebase\tests\Models;
use Modules\Knowledgebase\Models\WikiCategoryL11n;
use phpOMS\Localization\ISO639x1Enum;
/**
* @internal
*/
final class WikiCategoryL11nTest extends \PHPUnit\Framework\TestCase
{
private WikiCategoryL11n $l11n;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->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()
);
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="Bootstrap.php" colors="true" stopOnError="true" stopOnFailure="false" stopOnIncomplete="false" stopOnSkipped="false" beStrictAboutTestsThatDoNotTestAnything="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="Bootstrap.php" colors="true" columns="120" stopOnError="true" stopOnFailure="false" stopOnIncomplete="false" stopOnSkipped="false" beStrictAboutTestsThatDoNotTestAnything="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
<coverage includeUncoveredFiles="true" processUncoveredFiles="false">
<exclude>
<directory>*vendor*</directory>