mirror of
https://github.com/Karaka-Management/oms-Knowledgebase.git
synced 2026-01-22 14:28:56 +00:00
add unit tests
This commit is contained in:
parent
3ea6a605f4
commit
3185b8417e
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
307
tests/Controller/ApiControllerTest.php
Normal file
307
tests/Controller/ApiControllerTest.php
Normal 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
3
tests/Controller/test.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Test Title
|
||||
|
||||
Some **test** text.
|
||||
42
tests/Models/NullWikiAppTest.php
Normal file
42
tests/Models/NullWikiAppTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
87
tests/Models/WikiCategoryL11nTest.php
Normal file
87
tests/Models/WikiCategoryL11nTest.php
Normal 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()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -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)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user