📄 projectadmingatewaytest.php
字号:
$this->_deleteAllAdmins(); $this->_insertAdmins(); // Remove two admins, one valid, the other invalid $this->assertEquals(1, $gw->removeAdmins($projectId = 1, $empList = array(2, 12))); $this->assertEquals(2, $this->_countAdmins()); $this->assertEquals(1, $this->_countAdmins("emp_number = 2")); $this->_deleteAllAdmins(); $this->_insertAdmins(); // Remove two admins, both valid admins but invalid project Id $this->assertEquals(0, $gw->removeAdmins($projectId = 14, $empList = array(2, 1))); $this->assertEquals(3, $this->_countAdmins()); $this->assertTrue(mysql_query("INSERT INTO hs_hr_project_admin(emp_number, project_id) " . "VALUES(3, 1)")); $this->assertEquals(1, mysql_affected_rows()); // Remove three admins, both valid admins $this->assertEquals(3, $gw->removeAdmins($projectId = 1, $empList = array(1, 2, 3))); $this->assertEquals(1, $this->_countAdmins()); $this->assertEquals(1, $this->_countAdmins("emp_number = 2 AND project_id = 2")); } /** * Tests getAdmins() method. */ public function testGetAdmins() { $gw = new ProjectAdminGateway(); // Verify that invalid project ids throw exceptions try { $gw->getAdmins(""); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected } try { $gw->getAdmins("xier"); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected } try { $gw->getAdmins(null); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected } // Get admins for invalid project $list = $gw->getAdmins(12); $this->assertTrue(is_array($list)); $this->assertEquals(0, count($list)); mysql_query("INSERT INTO hs_hr_project(project_id, customer_id, name, description, deleted) " . "VALUES(21, 1, 'Test project 1', 'a test proj 1', 0)"); // Get admins for valid project with no admins $list = $gw->getAdmins(21); $this->assertTrue(is_array($list)); $this->assertEquals(0, count($list)); $this->_deleteAllAdmins(); $this->_insertAdmins(); // Get admins for valid project with 1 admin $list = $gw->getAdmins(2); $this->assertTrue(is_array($list)); $this->assertEquals(1, count($list)); $admin = $list[0]; $this->assertTrue($admin instanceof ProjectAdmin); $this->assertEquals(2, $admin->getEmpNumber()); $this->assertEquals('Aruna', $admin->getFirstName()); $this->assertEquals('Jayasinghe', $admin->getLastName()); // Get admin for valid project with 2 admins $list = $gw->getAdmins(1); $this->assertTrue(is_array($list)); $this->assertEquals(2, count($list)); $validResults = array( 1 => array('Saman', 'Rajasinghe'), 2 => array('Aruna', 'Jayasinghe')); foreach ($list as $admin) { $empNo = $admin->getEmpNumber(); $lastName = $admin->getLastName();; $this->assertTrue(array_key_exists($empNo, $validResults)); $this->assertEquals($validResults[$empNo][0], $admin->getFirstName()); $this->assertEquals($validResults[$empNo][1], $admin->getLastName()); unset($validResults[$empNo]); } } /** * Tests the isAdmin() method. */ public function testIsAdmin() { $gw = new ProjectAdminGateway(); // Verify that invalid project id's emp numbers throw exceptions try { $gw->isAdmin($empNumber = 12, $projectId = ""); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected. } try { $gw->isAdmin($empNumber = 12, $projectId = "test"); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected. } try { $gw->isAdmin($empNumber = "", $projectId = 1); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected. } try { $gw->isAdmin($empNumber = "xyz", $projectId = 1); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected. } try { $gw->isAdmin($empNumber = 1, $projectId = null); } catch (ProjectAdminException $e) { $this->fail("null project id should be allowed."); } // valid employee but not admin $this->assertFalse($gw->isAdmin($empNumber = 1, $projectId = 1)); $this->assertFalse($gw->isAdmin($empNumber = 1, $projectId = 11)); $this->assertFalse($gw->isAdmin($empNumber = 1)); // invalid emp number $this->assertFalse($gw->isAdmin($empNumber = 13, $projectId = 1)); $this->assertFalse($gw->isAdmin($empNumber = 188, $projectId = 11)); $this->assertFalse($gw->isAdmin($empNumber = 15)); $this->_insertAdmins(); // valid admin, correct project. $this->assertTrue($gw->isAdmin($empNumber = 1, $projectId = 1)); // valid admin, without giving a project $this->assertTrue($gw->isAdmin($empNumber = 1)); // valid admin, incorrect/invalid project. $this->assertFalse($gw->isAdmin($empNumber = 1, $projectId = 2)); $this->assertFalse($gw->isAdmin($empNumber = 1, $projectId = 12)); // admin with multiple projects $this->assertTrue($gw->isAdmin($empNumber = 2, $projectId = 1)); $this->assertTrue($gw->isAdmin($empNumber = 2, $projectId = 2)); $this->assertTrue($gw->isAdmin($empNumber = 2)); $this->assertFalse($gw->isAdmin($empNumber = 2, $projectId = 21)); // Deleted projects not considered when project Id not given $this->assertTrue(mysql_query("UPDATE hs_hr_project SET deleted = 1 WHERE project_id = 1")); $this->assertEquals(1, mysql_affected_rows()); $this->assertFalse($gw->isAdmin($empNumber = 1)); $this->assertTrue($gw->isAdmin($empNumber = 1, $projectId = 1)); $this->assertTrue(mysql_query("UPDATE hs_hr_project SET deleted = 1 WHERE project_id = 2")); $this->assertEquals(1, mysql_affected_rows()); $this->assertFalse($gw->isAdmin($empNumber = 2)); $this->assertTrue($gw->isAdmin($empNumber = 2, $projectId = 2)); $this->assertTrue($gw->isAdmin($empNumber = 2, $projectId = 1)); } /** * Test for getProjectsForAdmin() method. */ public function testGetProjectsForAdmin() { $gw = new ProjectAdminGateway(); // Verify that invalid emp numbers throw exceptions try { $gw->getProjectsForAdmin(""); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected. } try { $gw->getProjectsForAdmin("aer"); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected. } try { $gw->getProjectsForAdmin(null); $this->fail("Exception not thrown"); } catch (ProjectAdminException $e) { // Expected. } // invalid emp number $list = $gw->getProjectsForAdmin(100); $this->assertTrue(is_array($list)); $this->assertEquals(0, count($list)); // valid emp, not an admin $list = $gw->getProjectsForAdmin(1); $this->assertTrue(is_array($list)); $this->assertEquals(0, count($list)); $this->_insertAdmins(); // valid emp, admin of one project $list = $gw->getProjectsForAdmin(1); $this->assertTrue(is_array($list)); $this->assertEquals(1, count($list)); $proj = $list[0]; $this->assertTrue($proj instanceof Projects); $this->assertEquals(1, $proj->getProjectId()); $this->assertEquals('Test project 1', $proj->getProjectName()); // valid emp, admin of multiple projects $list = $gw->getProjectsForAdmin(2); $this->assertTrue(is_array($list)); $this->assertEquals(2, count($list)); $validResults = array( 1 => 'Test project 1', 2 => 'Test project 2'); foreach ($list as $proj) { $this->assertTrue($proj instanceof Projects); $id = $proj->getProjectId(); $name = $proj->getProjectName(); $this->assertTrue(array_key_exists($id, $validResults)); $this->assertEquals($name, $validResults[$id]); unset($validResults[$id]); } // Verify that deleted projects are not returned by default $this->assertTrue(mysql_query("UPDATE hs_hr_project SET deleted = 1 WHERE project_id = 1")); $this->assertEquals(1, mysql_affected_rows()); $list = $gw->getProjectsForAdmin(1); $this->assertTrue(is_array($list)); $this->assertEquals(0, count($list)); // deleted projects are returned when requested $list = $gw->getProjectsForAdmin(1, true); $this->assertTrue(is_array($list)); $this->assertEquals(1, count($list)); $proj = $list[0]; $this->assertTrue($proj instanceof Projects); $this->assertEquals(1, $proj->getProjectId()); $this->assertEquals('Test project 1', $proj->getProjectName()); } public function errorHandler($errlevel, $errstr, $errfile='', $errline='', $errcontext=''){ $this->errorLevel = $errlevel; $this->errorStr = $errstr; } private function _clearError() { $this->errorLevel = null; $this->errorStr = null; } /** * Counts project admins (with optional condition) * * @param string $where where clause * @return int number of rows */ private function _countAdmins($where = null) { $sql = "SELECT COUNT(*) FROM hs_hr_project_admin"; if (!empty($where)) { $sql .= " WHERE " . $where; } $result = mysql_query($sql); $row = mysql_fetch_array($result, MYSQL_NUM); $count = $row[0]; return $count; } /** * Inserts some admins for use in the tests */ private function _insertAdmins() { $this->assertTrue(mysql_query("INSERT INTO hs_hr_project_admin(emp_number, project_id) " . "VALUES(1, 1)")); $this->assertEquals(1, mysql_affected_rows()); $this->assertTrue(mysql_query("INSERT INTO hs_hr_project_admin(emp_number, project_id) " . "VALUES(2, 1)")); $this->assertEquals(1, mysql_affected_rows()); $this->assertTrue(mysql_query("INSERT INTO hs_hr_project_admin(emp_number, project_id) " . "VALUES(2, 2)")); $this->assertEquals(1, mysql_affected_rows()); } /** * Clears project admin table */ private function _deleteAllAdmins() { mysql_query("TRUNCATE TABLE hs_hr_project_admin"); }}// Call ProjectAdminGatewayTest::main() if this source file is executed directly.if (PHPUnit_MAIN_METHOD == "ProjectAdminGatewayTest::main") { ProjectAdminGatewayTest::main();}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -