mirror of
https://github.com/Karaka-Management/oms-Tag.git
synced 2026-02-07 11:28:39 +00:00
add tests
This commit is contained in:
parent
ba6a263cc5
commit
8c758c43e5
|
|
@ -138,9 +138,32 @@ final class ApiController extends Controller
|
|||
$l11nTag = $this->createL11nTagFromRequest($l11nRequest);
|
||||
$this->createModel($request->getHeader()->getAccount(), $l11nTag, L11nTagMapper::class, 'tag_l11n', $request->getOrigin());
|
||||
|
||||
$tag->setTitle($l11nTag);
|
||||
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Tag', 'Tag successfully created', $tag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate tag l11n create request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool>
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateTagL11nCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['title'] = empty($request->getData('title')))
|
||||
|| ($val['tag'] = empty($request->getData('tag')))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to create tag localization
|
||||
*
|
||||
|
|
@ -156,8 +179,8 @@ final class ApiController extends Controller
|
|||
*/
|
||||
public function apiTagL11nCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateTagCreate($request))) {
|
||||
$response->set('tag_create', new FormValidation($val));
|
||||
if (!empty($val = $this->validateTagL11nCreate($request))) {
|
||||
$response->set('tag_l11n_create', new FormValidation($val));
|
||||
$response->getHeader()->setStatusCode(RequestStatusCode::R_400);
|
||||
|
||||
return;
|
||||
|
|
@ -267,7 +290,7 @@ final class ApiController extends Controller
|
|||
$response->set(
|
||||
$request->getUri()->__toString(),
|
||||
\array_values(
|
||||
TagMapper::find((string) ($request->getData('search') ?? ''))
|
||||
TagMapper::find((string) ($request->getData('search') ?? ''), 3)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
27
Models/NullL11nTag.php
Normal file
27
Models/NullL11nTag.php
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.4
|
||||
*
|
||||
* @package Modules\Tag\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link https://orange-management.org
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Tag\Models;
|
||||
|
||||
/**
|
||||
* Null model
|
||||
*
|
||||
* @package Modules\Tag\Models
|
||||
* @license OMS License 1.0
|
||||
* @link https://orange-management.org
|
||||
* @since 1.0.0
|
||||
*/
|
||||
final class NullL11nTag extends Tag
|
||||
{
|
||||
}
|
||||
|
|
@ -181,7 +181,7 @@ class Tag implements \JsonSerializable, ArrayableInterface
|
|||
public function setTitle($title, string $lang = ISO639x1Enum::_EN) : void
|
||||
{
|
||||
if ($title instanceof L11nTag) {
|
||||
$this->title = new L11nTag();
|
||||
$this->title = $title;
|
||||
} elseif ($this->title instanceof L11nTag && \is_string($title)) {
|
||||
$this->title->setTitle($title);
|
||||
} elseif (\is_string($title)) {
|
||||
|
|
@ -200,6 +200,8 @@ class Tag implements \JsonSerializable, ArrayableInterface
|
|||
'id' => $this->id,
|
||||
'title' => $this->title,
|
||||
'color' => $this->color,
|
||||
'type' => $this->type,
|
||||
'owner' => $this->owner,
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
211
tests/Controller/ApiControllerTest.php
Normal file
211
tests/Controller/ApiControllerTest.php
Normal file
|
|
@ -0,0 +1,211 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.4
|
||||
*
|
||||
* @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\Tag\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\Dispatcher\Dispatcher;
|
||||
use phpOMS\Event\EventManager;
|
||||
use phpOMS\Message\Http\HttpRequest;
|
||||
use phpOMS\Message\Http\HttpResponse;
|
||||
use phpOMS\Module\ModuleManager;
|
||||
use phpOMS\Router\WebRouter;
|
||||
use phpOMS\Uri\HttpUri;
|
||||
use phpOMS\Utils\TestUtils;
|
||||
use phpOMS\System\MimeType;
|
||||
use phpOMS\Message\Http\RequestStatusCode;
|
||||
use phpOMS\Localization\ISO639x1Enum;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class ApiControllerTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
protected $app = null;
|
||||
|
||||
/** @var \Modules\Tag\Controller\ApiController $module */
|
||||
protected $module = null;
|
||||
|
||||
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->dbPool->get());
|
||||
$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');
|
||||
|
||||
$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('Tag');
|
||||
|
||||
TestUtils::setMember($this->module, 'app', $this->app);
|
||||
}
|
||||
|
||||
private static int $tagId = 0;
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Controller\ApiController
|
||||
* @group module
|
||||
*/
|
||||
public function testApiTagCreate() : void
|
||||
{
|
||||
$response = new HttpResponse();
|
||||
$request = new HttpRequest(new HttpUri(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('color', '#ff0000ff');
|
||||
$request->setData('title', 'ApiTagEN');
|
||||
$request->setData('language', ISO639x1Enum::_EN);
|
||||
|
||||
$this->module->apiTagCreate($request, $response);
|
||||
|
||||
self::assertEquals('ApiTagEN', $response->get('')['response']->getTitle());
|
||||
self::assertGreaterThan(0, $response->get('')['response']->getId());
|
||||
|
||||
self::$tagId = $response->get('')['response']->getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Controller\ApiController
|
||||
* @group module
|
||||
*/
|
||||
public function testApiTagCreateInvalid() : void
|
||||
{
|
||||
$response = new HttpResponse();
|
||||
$request = new HttpRequest(new HttpUri(''));
|
||||
|
||||
$this->module->apiTagCreate($request, $response);
|
||||
|
||||
self::assertEquals(RequestStatusCode::R_400, $response->getHeader()->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Controller\ApiController
|
||||
* @group module
|
||||
*/
|
||||
public function testApiTagL11nCreate() : void
|
||||
{
|
||||
$response = new HttpResponse();
|
||||
$request = new HttpRequest(new HttpUri(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('tag', self::$tagId);
|
||||
$request->setData('title', 'ApiTagDE');
|
||||
$request->setData('language', ISO639x1Enum::_DE);
|
||||
|
||||
$this->module->apiTagL11nCreate($request, $response);
|
||||
|
||||
self::assertEquals('ApiTagDE', $response->get('')['response']->getTitle());
|
||||
self::assertGreaterThan(0, $response->get('')['response']->getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Controller\ApiController
|
||||
* @group module
|
||||
*/
|
||||
public function testApiTagL11nCreateInvalid() : void
|
||||
{
|
||||
$response = new HttpResponse();
|
||||
$request = new HttpRequest(new HttpUri(''));
|
||||
|
||||
$this->module->apiTagL11nCreate($request, $response);
|
||||
|
||||
self::assertEquals(RequestStatusCode::R_400, $response->getHeader()->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Controller\ApiController
|
||||
* @group module
|
||||
*/
|
||||
public function testApiTagGet() : void
|
||||
{
|
||||
$response = new HttpResponse();
|
||||
$request = new HttpRequest(new HttpUri(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('id', self::$tagId);
|
||||
|
||||
$this->module->apiTagGet($request, $response);
|
||||
|
||||
self::assertEquals(self::$tagId, $response->get('')['response']->getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Controller\ApiController
|
||||
* @group module
|
||||
*/
|
||||
public function testApiTagUpdate() : void
|
||||
{
|
||||
$response = new HttpResponse();
|
||||
$request = new HttpRequest(new HttpUri(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('id', self::$tagId);
|
||||
$request->setData('color', '#00ff00ff');
|
||||
|
||||
$this->module->apiTagUpdate($request, $response);
|
||||
|
||||
self::assertEquals('#00ff00ff', $response->get('')['response']->getColor());
|
||||
self::assertEquals(self::$tagId, $response->get('')['response']->getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Controller\ApiController
|
||||
* @group module
|
||||
*/
|
||||
public function testApiUnitFind() : void
|
||||
{
|
||||
$response = new HttpResponse();
|
||||
$request = new HttpRequest(new HttpUri(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('search', 'ApiTag');
|
||||
|
||||
$this->module->apiTagFind($request, $response);
|
||||
|
||||
// @todo: I would actually expect ApiTagEN to be returned since the server language is english.
|
||||
self::assertEquals('ApiTagDE', $response->get('')[0]->getTitle());
|
||||
self::assertEquals(self::$tagId, $response->get('')[0]->getId());
|
||||
}
|
||||
}
|
||||
|
|
@ -22,35 +22,73 @@ use phpOMS\Localization\ISO639x1Enum;
|
|||
*/
|
||||
class L11nTagTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
private L11nTag $l11n;
|
||||
|
||||
public function setUp() : void
|
||||
{
|
||||
$this->l11n = new L11nTag();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Models\L11nTag
|
||||
* @group module
|
||||
*/
|
||||
public function testDefault() : void
|
||||
{
|
||||
$tag = new L11nTag();
|
||||
self::assertEquals(0, $this->l11n->getId());
|
||||
self::assertEquals(0, $this->l11n->getTag());
|
||||
self::assertEquals('', $this->l11n->getTitle());
|
||||
self::assertEquals(ISO639x1Enum::_EN, $this->l11n->getLanguage());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Models\L11nTag
|
||||
* @group module
|
||||
*/
|
||||
public function testTagInputOutput() : void
|
||||
{
|
||||
$this->l11n->setTag(2);
|
||||
self::assertEquals(2, $this->l11n->getTag());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Models\L11nTag
|
||||
* @group module
|
||||
*/
|
||||
public function testLanguageInputOutput() : void
|
||||
{
|
||||
$this->l11n->setLanguage(ISO639x1Enum::_DE);
|
||||
self::assertEquals(ISO639x1Enum::_DE, $this->l11n->getLanguage());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Models\L11nTag
|
||||
* @group module
|
||||
*/
|
||||
public function testTitleInputOutput() : void
|
||||
{
|
||||
$this->l11n->setTitle('Title');
|
||||
self::assertEquals('Title', $this->l11n->getTitle());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Models\L11nTag
|
||||
* @group module
|
||||
*/
|
||||
public function testSerialize() : void
|
||||
{
|
||||
$this->l11n->setTitle('Title');
|
||||
$this->l11n->setTag(2);
|
||||
$this->l11n->setLanguage(ISO639x1Enum::_DE);
|
||||
|
||||
self::assertEquals(0, $tag->getId());
|
||||
self::assertEquals(0, $tag->getTag());
|
||||
self::assertEquals('', $tag->getTitle());
|
||||
self::assertEquals(ISO639x1Enum::_EN, $tag->getLanguage());
|
||||
self::assertEquals(
|
||||
[
|
||||
'id' => 0,
|
||||
'title' => '',
|
||||
'tag' => 0,
|
||||
'language' => ISO639x1Enum::_EN,
|
||||
'title' => 'Title',
|
||||
'tag' => 2,
|
||||
'language' => ISO639x1Enum::_DE,
|
||||
],
|
||||
$tag->toArray()
|
||||
);
|
||||
self::assertEquals(
|
||||
[
|
||||
'id' => 0,
|
||||
'title' => '',
|
||||
'tag' => 0,
|
||||
'language' => ISO639x1Enum::_EN,
|
||||
],
|
||||
$tag->jsonSerialize()
|
||||
$this->l11n->jsonSerialize()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
42
tests/Models/NullTagTest.php
Normal file
42
tests/Models/NullTagTest.php
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.4
|
||||
*
|
||||
* @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\Tag\tests\Models;
|
||||
|
||||
use Modules\Tag\Models\NullTag;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class NullTagTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
/**
|
||||
* @covers Modules\Tag\Models\NullTag
|
||||
* @group module
|
||||
*/
|
||||
public function testNull() : void
|
||||
{
|
||||
self::assertInstanceOf('\Modules\Tag\Models\Tag', new NullTag());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Models\NullTag
|
||||
* @group module
|
||||
*/
|
||||
public function testId() : void
|
||||
{
|
||||
$null = new NullTag(2);
|
||||
self::assertEquals(2, $null->getId());
|
||||
}
|
||||
}
|
||||
|
|
@ -15,6 +15,7 @@ declare(strict_types=1);
|
|||
namespace Modules\Tag\tests\Models;
|
||||
|
||||
use Modules\Admin\Models\NullAccount;
|
||||
use Modules\Tag\Models\L11nTag;
|
||||
use Modules\Tag\Models\Tag;
|
||||
use Modules\Tag\Models\TagType;
|
||||
|
||||
|
|
@ -23,35 +24,24 @@ use Modules\Tag\Models\TagType;
|
|||
*/
|
||||
class TagTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
private Tag $tag;
|
||||
|
||||
public function setUp() : void
|
||||
{
|
||||
$this->tag = new Tag();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Models\Tag
|
||||
* @group module
|
||||
*/
|
||||
public function testDefault() : void
|
||||
{
|
||||
$tag = new Tag();
|
||||
|
||||
self::assertEquals(0, $tag->getId());
|
||||
self::assertInstanceOf(NullAccount::class, $tag->getOwner());
|
||||
self::assertEquals(TagType::SINGLE, $tag->getType());
|
||||
self::assertEquals('00000000', $tag->getColor());
|
||||
self::assertEquals('', $tag->getTitle());
|
||||
self::assertEquals(
|
||||
[
|
||||
'id' => 0,
|
||||
'title' => '',
|
||||
'color' => '00000000',
|
||||
],
|
||||
$tag->toArray()
|
||||
);
|
||||
self::assertEquals(
|
||||
[
|
||||
'id' => 0,
|
||||
'title' => '',
|
||||
'color' => '00000000',
|
||||
],
|
||||
$tag->jsonSerialize()
|
||||
);
|
||||
self::assertEquals(0, $this->tag->getId());
|
||||
self::assertInstanceOf(NullAccount::class, $this->tag->getOwner());
|
||||
self::assertEquals(TagType::SINGLE, $this->tag->getType());
|
||||
self::assertEquals('00000000', $this->tag->getColor());
|
||||
self::assertEquals('', $this->tag->getTitle());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -60,10 +50,24 @@ class TagTest extends \PHPUnit\Framework\TestCase
|
|||
*/
|
||||
public function testTitleInputOutput() : void
|
||||
{
|
||||
$tag = new Tag();
|
||||
$this->tag->setTitle('Test');
|
||||
self::assertEquals('Test', $this->tag->getTitle());
|
||||
|
||||
$tag->setTitle('Test');
|
||||
self::assertEquals('Test', $tag->getTitle());
|
||||
$this->tag->setTitle(new L11nTag('Test2'));
|
||||
self::assertEquals('Test2', $this->tag->getTitle());
|
||||
|
||||
$this->tag->setTitle('Test3');
|
||||
self::assertEquals('Test3', $this->tag->getTitle());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Modules\Tag\Models\Tag
|
||||
* @group module
|
||||
*/
|
||||
public function testOwnerInputOutput() : void
|
||||
{
|
||||
$this->tag->setOwner(new NullAccount(2));
|
||||
self::assertEquals(2, $this->tag->getOwner()->getId());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -72,10 +76,8 @@ class TagTest extends \PHPUnit\Framework\TestCase
|
|||
*/
|
||||
public function testColorInputOutput() : void
|
||||
{
|
||||
$tag = new Tag();
|
||||
|
||||
$tag->setColor('ffffffff');
|
||||
self::assertEquals('ffffffff', $tag->getColor());
|
||||
$this->tag->setColor('ffffffff');
|
||||
self::assertEquals('ffffffff', $this->tag->getColor());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -84,9 +86,30 @@ class TagTest extends \PHPUnit\Framework\TestCase
|
|||
*/
|
||||
public function testTypeInputOutput() : void
|
||||
{
|
||||
$tag = new Tag();
|
||||
$this->tag->setType(TagType::SHARED);
|
||||
self::assertEquals(TagType::SHARED, $this->tag->getType());
|
||||
}
|
||||
|
||||
$tag->setType(TagType::SHARED);
|
||||
self::assertEquals(TagType::SHARED, $tag->getType());
|
||||
/**
|
||||
* @covers Modules\Tag\Models\Tag
|
||||
* @group module
|
||||
*/
|
||||
public function testSerialize() : void
|
||||
{
|
||||
$this->tag->setTitle($t = new L11nTag('Test'));
|
||||
$this->tag->setOwner($a = new NullAccount(2));
|
||||
$this->tag->setColor('ffffffff');
|
||||
$this->tag->setType(TagType::SHARED);
|
||||
|
||||
self::assertEquals(
|
||||
[
|
||||
'id' => 0,
|
||||
'title' => $t,
|
||||
'color' => 'ffffffff',
|
||||
'type' => TagType::SHARED,
|
||||
'owner' => $a,
|
||||
],
|
||||
$this->tag->jsonSerialize()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user