📄 projectadmingatewaytest.php
字号:
<?php/** * OrangeHRM is a comprehensive Human Resource Management (HRM) System that captures * all the essential functionalities required for any enterprise. * Copyright (C) 2006 OrangeHRM Inc., http://www.orangehrm.com * * OrangeHRM is free software; you can redistribute it and/or modify it under the terms of * the GNU General Public License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * OrangeHRM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with this program; * if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA * */// Call ProjectAdminGatewayTest::main() if this source file is executed directly.if (!defined("PHPUnit_MAIN_METHOD")) { define("PHPUnit_MAIN_METHOD", "ProjectAdminGatewayTest::main");}require_once "PHPUnit/Framework/TestCase.php";require_once "PHPUnit/Framework/TestSuite.php";require_once "testConf.php";require_once ROOT_PATH."/lib/confs/Conf.php";require_once ROOT_PATH . '/lib/exception/ExceptionHandler.php';require_once ROOT_PATH . "/lib/models/eimadmin/Projects.php";require_once ROOT_PATH . "/lib/models/eimadmin/ProjectAdminGateway.php";/** * Test class for ProjectAdminGateway. * Generated by PHPUnit_Util_Skeleton on 2007-07-11 at 17:15:40. */class ProjectAdminGatewayTest extends PHPUnit_Framework_TestCase { private $errorLevel; private $errorStr; /** * Runs the test methods of this class. * * @access public * @static */ public static function main() { require_once "PHPUnit/TextUI/TestRunner.php"; $suite = new PHPUnit_Framework_TestSuite("ProjectAdminGatewayTest"); $result = PHPUnit_TextUI_TestRunner::run($suite); } /** * Sets up the fixture, for example, open a network connection. * This method is called before a test is executed. * * @access protected */ protected function setUp() { $conf = new Conf(); $this->connection = mysql_connect($conf->dbhost.":".$conf->dbport, $conf->dbuser, $conf->dbpass); mysql_select_db($conf->dbname); mysql_query("TRUNCATE TABLE `hs_hr_project`", $this->connection); mysql_query("TRUNCATE TABLE `hs_hr_project_admin`", $this->connection); mysql_query("TRUNCATE TABLE `hs_hr_customer`", $this->connection); mysql_query("TRUNCATE TABLE `hs_hr_employee`", $this->connection); // Insert a project and customer and employees for use in the test mysql_query("INSERT INTO hs_hr_customer(customer_id, name, description, deleted) " . "VALUES(1, 'Test customer', 'description', 0)"); mysql_query("INSERT INTO hs_hr_project(project_id, customer_id, name, description, deleted) " . "VALUES(1, 1, 'Test project 1', 'a test proj 1', 0)"); mysql_query("INSERT INTO hs_hr_project(project_id, customer_id, name, description, deleted) " . "VALUES(2, 1, 'Test project 2', 'a test proj 2', 0)"); mysql_query("INSERT INTO hs_hr_employee(emp_number, employee_id, emp_lastname, emp_firstname, emp_middle_name) " . "VALUES(1, '0011', 'Rajasinghe', 'Saman', 'Marlon')"); mysql_query("INSERT INTO hs_hr_employee(emp_number, employee_id, emp_lastname, emp_firstname, emp_middle_name) " . "VALUES(2, '0022', 'Jayasinghe', 'Aruna', 'Shantha')"); mysql_query("INSERT INTO hs_hr_employee(emp_number, employee_id, emp_lastname, emp_firstname, emp_middle_name) " . "VALUES(3, '0034', 'Ranasinghe', 'Nimal', 'Bandara')"); } /** * Tears down the fixture, for example, close a network connection. * This method is called after a test is executed. * * @access protected */ protected function tearDown() { mysql_query("TRUNCATE TABLE `hs_hr_project`", $this->connection); mysql_query("TRUNCATE TABLE `hs_hr_project_admin`", $this->connection); mysql_query("TRUNCATE TABLE `hs_hr_customer`", $this->connection); mysql_query("TRUNCATE TABLE `hs_hr_employee`", $this->connection); } /** * @todo Implement testAddAdmin(). */ public function testAddAdmin() { $gw = new ProjectAdminGateway(); // Verify that invalid project id's emp numbers throw exceptions try { $gw->addAdmin($projectId = "", $empNumber = 12); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { $this->assertEquals(0, $this->_countAdmins(), "No rows should be inserted"); } try { $gw->addAdmin($projectId = "test", $empNumber = 12); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { $this->assertEquals(0, $this->_countAdmins(), "No rows should be inserted"); } try { $gw->addAdmin($projectId = 1, $empNumber = ""); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { $this->assertEquals(0, $this->_countAdmins(), "No rows should be inserted"); } try { $gw->addAdmin($projectId = 1, $empNumber = "xyz"); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { $this->assertEquals(0, $this->_countAdmins(), "No rows should be inserted"); } // Verify that add using non existent projects and employee id's throws an error $this->_clearError(); set_error_handler(array($this, 'errorHandler')); $this->assertFalse($gw->addAdmin($projectId = 11, $empNumber = 12)); restore_error_handler(); $this->assertNotNull($this->errorLevel); $this->assertEquals(0, $this->_countAdmins()); // valid project, invalid employee $this->_clearError(); set_error_handler(array($this, 'errorHandler')); $this->assertFalse($gw->addAdmin($projectId = 1, $empNumber = 4)); restore_error_handler(); $this->assertNotNull($this->errorLevel); $this->assertEquals(0, $this->_countAdmins()); // invalid project, valid employee $this->_clearError(); set_error_handler(array($this, 'errorHandler')); $this->assertFalse($gw->addAdmin($projectId = 12, $empNumber = 1)); restore_error_handler(); $this->assertNotNull($this->errorLevel); $this->assertEquals(0, $this->_countAdmins()); // valid admin $gw->addAdmin($projectId = 1, $empNumber = 2); $this->assertEquals(1, $this->_countAdmins()); $this->assertEquals(1, $this->_countAdmins("project_id = 1 AND emp_number = 2")); // adding the same admin again should not change anything $gw->addAdmin($projectId = 1, $empNumber = 2); $this->assertEquals(1, $this->_countAdmins()); $this->assertEquals(1, $this->_countAdmins("project_id = 1 AND emp_number = 2")); // Add the same employee as admin to a different project $gw->addAdmin($projectId = 2, $empNumber = 2); $this->assertEquals(2, $this->_countAdmins()); $this->assertEquals(2, $this->_countAdmins("emp_number = 2")); $this->assertEquals(1, $this->_countAdmins("project_id = 2 AND emp_number = 2")); $this->assertEquals(1, $this->_countAdmins("project_id = 2 AND emp_number = 2")); } /** * Test removeAdmin() method */ public function testRemoveAdmin() { $gw = new ProjectAdminGateway(); $this->_insertAdmins(); // Verify that invalid project id's emp numbers throw exceptions try { $gw->removeAdmin($projectId = "", $empNumber = 12); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { $this->assertEquals(3, $this->_countAdmins(), "No rows should be removed"); } try { $gw->removeAdmin($projectId = "test", $empNumber = 12); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { $this->assertEquals(3, $this->_countAdmins(), "No rows should be removed"); } try { $gw->removeAdmin($projectId = 1, $empNumber = ""); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { $this->assertEquals(3, $this->_countAdmins(), "No rows should be removed"); } try { $gw->removeAdmin($projectId = 1, $empNumber = "xyz"); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { $this->assertEquals(3, $this->_countAdmins(), "No rows should be removed"); } // empNumber invalid, project invalid $this->assertFalse($gw->removeAdmin($projectId = 111, $empNumber = 23)); $this->assertEquals(3, $this->_countAdmins()); // empNumber invalid, project valid $this->assertFalse($gw->removeAdmin($projectId = 2, $empNumber = 9)); $this->assertEquals(3, $this->_countAdmins()); // empNumber valid but not admin, project invalid $this->assertFalse($gw->removeAdmin($projectId = 13, $empNumber = 3)); $this->assertEquals(3, $this->_countAdmins()); // empNumber valid but not admin, project valid $this->assertFalse($gw->removeAdmin($projectId = 1, $empNumber = 3)); $this->assertEquals(3, $this->_countAdmins()); // empNumber valid, admin for different project. $this->assertFalse($gw->removeAdmin($projectId = 2, $empNumber = 1)); $this->assertEquals(3, $this->_countAdmins()); // empNumber valid, admin for given project. $this->assertTrue($gw->removeAdmin($projectId = 1, $empNumber = 1)); $this->assertEquals(2, $this->_countAdmins()); $this->assertEquals(0, $this->_countAdmins("emp_number = 1")); // attempt remove again. $this->assertFalse($gw->removeAdmin($projectId = 1, $empNumber = 1)); $this->assertEquals(2, $this->_countAdmins()); // Remove admin with multiple projects from one project $this->assertTrue($gw->removeAdmin($projectId = 1, $empNumber = 2)); $this->assertEquals(1, $this->_countAdmins()); $this->assertEquals(1, $this->_countAdmins("emp_number = 2 AND project_id = 2")); } /** * Tests removeAdmins() method. */ public function testRemoveAdmins() { $gw = new ProjectAdminGateway(); $this->_insertAdmins(); // Verify that invalid project id's emp numbers throw exceptions try { $gw->removeAdmins($projectId = "", array(12)); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected } try { $gw->removeAdmins($projectId = "test", array(12)); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected } try { $gw->removeAdmins($projectId = null, array(12)); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected } try { $gw->removeAdmins($projectId = 1, array(12, "")); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected } try { $gw->removeAdmins($projectId = 1, array(1, "xyz")); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected } try { $gw->removeAdmins($projectId = 1, null); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected } // Pass empty array, valid project Id $this->assertEquals(0, $gw->removeAdmins($projectId = 1, $empList = array())); $this->assertEquals(3, $this->_countAdmins()); // Remove one admin, invalid empNumber $this->assertEquals(0, $gw->removeAdmins($projectId = 1, $empList = array(12))); $this->assertEquals(3, $this->_countAdmins()); // Remove one admin, valid empNumber but not admin $this->assertEquals(0, $gw->removeAdmins($projectId = 1, $empList = array(3))); $this->assertEquals(3, $this->_countAdmins()); // Remove one admin, valid empNumber and admin but wrong project $this->assertEquals(0, $gw->removeAdmins($projectId = 2, $empList = array(1))); $this->assertEquals(3, $this->_countAdmins()); // Remove one admin, valid empNumber and admin for given project $this->assertEquals(1, $gw->removeAdmins($projectId = 1, $empList = array(1))); $this->assertEquals(2, $this->_countAdmins()); $this->assertEquals(0, $this->_countAdmins("emp_number = 1"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -