add tests

This commit is contained in:
Dennis Eichhorn 2020-03-14 14:16:21 +01:00
parent cc2e69af57
commit 3523d79411
8 changed files with 764 additions and 0 deletions

26
tests/Admin/AdminTest.php Normal file
View File

@ -0,0 +1,26 @@
<?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\tests\Organization\Admin;
/**
* @internal
*/
class AdminTest extends \PHPUnit\Framework\TestCase
{
protected const MODULE_NAME = 'Organization';
protected const URI_LOAD = 'http://127.0.0.1/en/backend/organization';
use \Modules\tests\ModuleTestTrait;
}

304
tests/ControllerTest.php Normal file
View File

@ -0,0 +1,304 @@
<?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\tests\Organization;
require_once __DIR__ . '/../Autoloader.php';
use Model\CoreSettings;
use Modules\Admin\Models\AccountPermission;
use Modules\Organization\Models\Status;
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;
/**
* @internal
*/
class ControllerTest extends \PHPUnit\Framework\TestCase
{
protected $app = null;
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->appName = 'Backend';
$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('Organization');
TestUtils::setMember($this->module, 'app', $this->app);
}
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiUnitGet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', '1');
$this->module->apiUnitGet($request, $response);
self::assertEquals('Orange-Management', $response->get('')['response']->getName());
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiUnitSet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', '1');
$request->setData('name', 'OMS');
$this->module->apiUnitSet($request, $response);
$this->module->apiUnitGet($request, $response);
self::assertEquals('OMS', $response->get('')['response']->getName());
}
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiUnitCreateDelete() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('name', 'test');
$request->setData('status', Status::INACTIVE);
$request->setData('description', 'test description');
$this->module->apiUnitCreate($request, $response);
self::assertEquals('test', $response->get('')['response']->getName());
self::assertGreaterThan(0, $response->get('')['response']->getId());
// test delete
$request->setData('id', $response->get('')['response']->getId());
$this->module->apiUnitDelete($request, $response);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
protected static $departmentId = 0;
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiDepartmentCreate() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('name', 'test');
$request->setData('status', Status::INACTIVE);
$request->setData('unit', 1);
$request->setData('description', 'test description');
$this->module->apiDepartmentCreate($request, $response);
self::assertEquals('test', $response->get('')['response']->getName());
self::assertGreaterThan(0, $response->get('')['response']->getId());
self::$departmentId = $response->get('')['response']->getId();
}
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiDepartmentGet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', self::$departmentId);
$this->module->apiDepartmentGet($request, $response);
self::assertEquals('test', $response->get('')['response']->getName());
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiDepartmentSet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', self::$departmentId);
$request->setData('name', 'Production');
$this->module->apiDepartmentSet($request, $response);
$this->module->apiDepartmentGet($request, $response);
self::assertEquals('Production', $response->get('')['response']->getName());
}
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiDepartmentDelete() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', self::$departmentId);
$this->module->apiDepartmentDelete($request, $response);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
protected static $positionId = 0;
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiPositionCreate() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('name', 'test');
$request->setData('status', Status::INACTIVE);
$request->setData('description', 'test description');
$this->module->apiPositionCreate($request, $response);
self::assertEquals('test', $response->get('')['response']->getName());
self::assertGreaterThan(0, $response->get('')['response']->getId());
self::$positionId = $response->get('')['response']->getId();
}
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiPositionGet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', self::$positionId);
$this->module->apiPositionGet($request, $response);
self::assertEquals('test', $response->get('')['response']->getName());
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiPositionSet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', self::$positionId);
$request->setData('name', 'Test');
$this->module->apiPositionSet($request, $response);
$this->module->apiPositionGet($request, $response);
self::assertEquals('Test', $response->get('')['response']->getName());
}
/**
* @covers Modules\Organization\Controller\ApiController
* @group module
*/
public function testApiPositionDelete() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', self::$positionId);
$this->module->apiPositionDelete($request, $response);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
}

View File

@ -0,0 +1,118 @@
<?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\tests\Organization\Models;
use Modules\Organization\Models\Department;
use Modules\Organization\Models\DepartmentMapper;
use Modules\Organization\Models\NullDepartment;
use Modules\Organization\Models\NullUnit;
/**
* @internal
*/
class DepartmentMapperTest extends \PHPUnit\Framework\TestCase
{
public function testCRUD() : void
{
$department = new Department();
$department->setName('Management');
$department->setDescription('Description');
$department->setUnit(new NullUnit(1));
$id = DepartmentMapper::create($department);
$departmentR = DepartmentMapper::get($id);
self::assertEquals($id, $departmentR->getId());
self::assertEquals($department->getName(), $departmentR->getName());
self::assertEquals($department->getDescription(), $departmentR->getDescription());
self::assertInstanceOf('Modules\Organization\Models\NullDepartment', $departmentR->getParent());
self::assertEquals($department->getUnit()->getId(), $departmentR->getUnit()->getId());
}
/**
* @group volume
* @slowThreshold 15000
* @group module
*/
public function testVolume() : void
{
$first = 2;
/* 2 */
$department = new Department();
$department->setName('HR');
$department->setDescription('Description');
$department->setParent(new NullDepartment($first));
$department->setUnit(new NullUnit(1));
DepartmentMapper::create($department);
/* 3 */
$department = new Department();
$department->setName('QM');
$department->setDescription('Description');
$department->setParent(new NullDepartment($first));
$department->setUnit(new NullUnit(1));
DepartmentMapper::create($department);
/* 4 */
$department = new Department();
$department->setName('Sales');
$department->setDescription('Description');
$department->setParent(new NullDepartment($first));
$department->setUnit(new NullUnit(1));
DepartmentMapper::create($department);
/* 5 */
$department = new Department();
$department->setName('Shipping');
$department->setDescription('Description');
$department->setParent(new NullDepartment($first + 3));
$department->setUnit(new NullUnit(1));
DepartmentMapper::create($department);
/* 6 */
$department = new Department();
$department->setName('Purchase');
$department->setDescription('Description');
$department->setParent(new NullDepartment($first));
$department->setUnit(new NullUnit(1));
DepartmentMapper::create($department);
/* 7 */
$department = new Department();
$department->setName('Arrival');
$department->setDescription('Description');
$department->setParent(new NullDepartment($first + 5));
$department->setUnit(new NullUnit(1));
DepartmentMapper::create($department);
/* 8 */
$department = new Department();
$department->setName('Accounting');
$department->setDescription('Description');
$department->setParent(new NullDepartment($first));
$department->setUnit(new NullUnit(1));
DepartmentMapper::create($department);
/* 9 */
$department = new Department();
$department->setName('Production');
$department->setDescription('Description');
$department->setParent(new NullDepartment($first));
$department->setUnit(new NullUnit(1));
DepartmentMapper::create($department);
}
}

View File

@ -0,0 +1,58 @@
<?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\tests\Organization\Models;
use Modules\Organization\Models\Department;
use Modules\Organization\Models\NullDepartment;
use Modules\Organization\Models\NullUnit;
use Modules\Organization\Models\Status;
/**
* @internal
*/
class DepartmentTest extends \PHPUnit\Framework\TestCase
{
public function testDefault() : void
{
$department = new Department();
self::assertEquals(0, $department->getId());
self::assertEquals('', $department->getName());
self::assertEquals('', $department->getDescription());
self::assertInstanceOf('Modules\Organization\Models\NullDepartment', $department->getParent());
self::assertEquals(0, $department->getUnit()->getId());
self::assertEquals(Status::INACTIVE, $department->getStatus());
}
public function testSetGet() : void
{
$department = new Department();
$department->setName('Name');
self::assertEquals('Name', $department->getName());
$department->setStatus(Status::ACTIVE);
self::assertEquals(Status::ACTIVE, $department->getStatus());
$department->setDescription('Description');
self::assertEquals('Description', $department->getDescription());
$department->setParent(new NullDepartment(1));
self::assertEquals(1, $department->getParent()->getId());
$department->setUnit(new NullUnit(1));
self::assertEquals(1, $department->getUnit()->getId());
}
}

View File

@ -0,0 +1,106 @@
<?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\tests\Organization\Models;
use Modules\Organization\Models\NullPosition;
use Modules\Organization\Models\Position;
use Modules\Organization\Models\PositionMapper;
/**
* @internal
*/
class PositionMapperTest extends \PHPUnit\Framework\TestCase
{
public function testCRUD() : void
{
$position = new Position();
$position->setName('CEO');
$position->setDescription('Description');
$id = PositionMapper::create($position);
$positionR = PositionMapper::get($id);
self::assertEquals($id, $positionR->getId());
self::assertEquals($position->getName(), $positionR->getName());
self::assertEquals($position->getDescription(), $positionR->getDescription());
self::assertInstanceOf('Modules\Organization\Models\NullPosition', $positionR->getParent());
}
/**
* @group volume
* @slowThreshold 15000
* @group module
*/
public function testVolume() : void
{
$first = 2;
/* 4 */
$position = new Position();
$position->setName('CFO');
$position->setDescription('Description');
$position->setParent(new NullPosition($first));
$id = PositionMapper::create($position);
/* 5 */
$position = new Position();
$position->setName('Accountant');
$position->setDescription('Description');
$position->setParent(new NullPosition($id));
PositionMapper::create($position);
/* 6 */
$position = new Position();
$position->setName('Controller');
$position->setDescription('Description');
$position->setParent(new NullPosition($id));
PositionMapper::create($position);
/* 7 */
$position = new Position();
$position->setName('Sales Director');
$position->setDescription('Description');
$position->setParent(new NullPosition($first));
PositionMapper::create($position);
/* 8 */
$position = new Position();
$position->setName('Purchase Director');
$position->setDescription('Description');
$position->setParent(new NullPosition($first));
PositionMapper::create($position);
/* 9 */
$position = new Position();
$position->setName('Territory Manager');
$position->setDescription('Description');
$position->setParent(new NullPosition($first + 4));
PositionMapper::create($position);
/* 10 */
$position = new Position();
$position->setName('Territory Sales Assistant');
$position->setDescription('Description');
$position->setParent(new NullPosition($first + 6));
PositionMapper::create($position);
/* 11 */
$position = new Position();
$position->setName('Domestic Sales Manager');
$position->setDescription('Description');
$position->setParent(new NullPosition($first + 4));
PositionMapper::create($position);
}
}

View File

@ -0,0 +1,58 @@
<?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\tests\Organization\Models;
use Modules\Organization\Models\NullDepartment;
use Modules\Organization\Models\NullPosition;
use Modules\Organization\Models\Position;
use Modules\Organization\Models\Status;
/**
* @internal
*/
class PositionTest extends \PHPUnit\Framework\TestCase
{
public function testDefault() : void
{
$position = new Position();
self::assertEquals(0, $position->getId());
self::assertEquals('', $position->getName());
self::assertEquals('', $position->getDescription());
self::assertInstanceOf('Modules\Organization\Models\NullPosition', $position->getParent());
self::assertEquals(Status::INACTIVE, $position->getStatus());
self::assertInstanceOf('\Modules\Organization\Models\NullDepartment', $position->getDepartment());
}
public function testSetGet() : void
{
$position = new Position();
$position->setName('Name');
self::assertEquals('Name', $position->getName());
$position->setStatus(Status::ACTIVE);
self::assertEquals(Status::ACTIVE, $position->getStatus());
$position->setDepartment(new NullDepartment(2));
self::assertEquals(2, $position->getDepartment()->getId());
$position->setDescription('Description');
self::assertEquals('Description', $position->getDescription());
$position->setParent(new NullPosition(2));
self::assertEquals(2, $position->getParent()->getId());
}
}

View File

@ -0,0 +1,41 @@
<?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\tests\Organization\Models;
use Modules\Organization\Models\NullUnit;
use Modules\Organization\Models\Unit;
use Modules\Organization\Models\UnitMapper;
/**
* @internal
*/
class UnitMapperTest extends \PHPUnit\Framework\TestCase
{
public function testCRUD() : void
{
$unit = new Unit();
$unit->setName('Scrooge Inc.');
$unit->setDescription('Description');
$unit->setParent(new NullUnit(1));
$id = UnitMapper::create($unit);
$unitR = UnitMapper::get($id);
self::assertEquals($id, $unitR->getId());
self::assertEquals($unit->getName(), $unitR->getName());
self::assertEquals($unit->getDescription(), $unitR->getDescription());
self::assertEquals($unit->getParent()->getId(), $unitR->getParent()->getId());
}
}

53
tests/Models/UnitTest.php Normal file
View File

@ -0,0 +1,53 @@
<?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\tests\Organization\Models;
use Modules\Organization\Models\NullUnit;
use Modules\Organization\Models\Status;
use Modules\Organization\Models\Unit;
/**
* @internal
*/
class UnitTest extends \PHPUnit\Framework\TestCase
{
public function testDefault() : void
{
$unit = new Unit();
self::assertEquals(0, $unit->getId());
self::assertEquals('', $unit->getName());
self::assertEquals('', $unit->getDescription());
self::assertInstanceOf('Modules\Organization\Models\NullUnit', $unit->getParent());
self::assertEquals(Status::INACTIVE, $unit->getStatus());
}
public function testSetGet() : void
{
$unit = new Unit();
$unit->setName('Name');
self::assertEquals('Name', $unit->getName());
$unit->setStatus(Status::ACTIVE);
self::assertEquals(Status::ACTIVE, $unit->getStatus());
$unit->setDescription('Description');
self::assertEquals('Description', $unit->getDescription());
$unit->setParent(new NullUnit(1));
self::assertEquals(1, $unit->getParent()->getId());
}
}