diff --git a/tests/Admin/AdminTest.php b/tests/Admin/AdminTest.php new file mode 100644 index 0000000..e235d93 --- /dev/null +++ b/tests/Admin/AdminTest.php @@ -0,0 +1,26 @@ +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()); + } +} diff --git a/tests/Models/DepartmentMapperTest.php b/tests/Models/DepartmentMapperTest.php new file mode 100644 index 0000000..9cefabd --- /dev/null +++ b/tests/Models/DepartmentMapperTest.php @@ -0,0 +1,118 @@ +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); + } +} diff --git a/tests/Models/DepartmentTest.php b/tests/Models/DepartmentTest.php new file mode 100644 index 0000000..0f4c72e --- /dev/null +++ b/tests/Models/DepartmentTest.php @@ -0,0 +1,58 @@ +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()); + } +} diff --git a/tests/Models/PositionMapperTest.php b/tests/Models/PositionMapperTest.php new file mode 100644 index 0000000..7df0d2c --- /dev/null +++ b/tests/Models/PositionMapperTest.php @@ -0,0 +1,106 @@ +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); + } +} diff --git a/tests/Models/PositionTest.php b/tests/Models/PositionTest.php new file mode 100644 index 0000000..a147fd6 --- /dev/null +++ b/tests/Models/PositionTest.php @@ -0,0 +1,58 @@ +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()); + } +} diff --git a/tests/Models/UnitMapperTest.php b/tests/Models/UnitMapperTest.php new file mode 100644 index 0000000..00dc6a0 --- /dev/null +++ b/tests/Models/UnitMapperTest.php @@ -0,0 +1,41 @@ +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()); + } +} diff --git a/tests/Models/UnitTest.php b/tests/Models/UnitTest.php new file mode 100644 index 0000000..91f4e9c --- /dev/null +++ b/tests/Models/UnitTest.php @@ -0,0 +1,53 @@ +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()); + } +}