diff --git a/test/bootstrap.php b/test/bootstrap.php index c80344fc..7c5ee6be 100644 --- a/test/bootstrap.php +++ b/test/bootstrap.php @@ -13,14 +13,11 @@ exec($dropDBCommand); echo "Create DB Command:".$createDBCommand."\r\n"; exec($createDBCommand); - - //Run create table script - $scripts = array( APP_BASE_PATH."scripts/icehrmdb.sql", APP_BASE_PATH."scripts/icehrm_master_data.sql", - APP_BASE_PATH."scripts/icehrm_sample_data.sql", + //APP_BASE_PATH."scripts/icehrm_sample_data.sql", ); foreach ($scripts as $insql){ diff --git a/test/helper/EmployeeTestDataHelper.php b/test/helper/EmployeeTestDataHelper.php new file mode 100644 index 00000000..fb3148d9 --- /dev/null +++ b/test/helper/EmployeeTestDataHelper.php @@ -0,0 +1,43 @@ +employee_id = self::randomString(4).time(); + $emp->first_name = self::randomString(); + $emp->last_name = self::randomString(); + $emp->birthday = '1984-12-19'; + $emp->gender = 'Male'; + $emp->marital_status = 'Married'; + $emp->job_title = NULL; + $emp->joined_date = '2005-08-03'; + $emp->job_title = NULL; + $emp->department = NULL; + $emp->Save(); + return $emp->id; + } + + public static function randomString($length = 6) { + $str = ""; + $characters = array_merge(range('A','Z'), range('a','z'), range('0','9')); + $max = count($characters) - 1; + for ($i = 0; $i < $length; $i++) { + $rand = mt_rand(0, $max); + $str .= $characters[$rand]; + } + return $str; + } +} diff --git a/test/integration/ApprovalStatusIntegration.php b/test/integration/ApprovalStatusIntegration.php index 5d417539..f43a421f 100644 --- a/test/integration/ApprovalStatusIntegration.php +++ b/test/integration/ApprovalStatusIntegration.php @@ -3,32 +3,37 @@ namespace Test\Integration; use Classes\Approval\ApprovalStatus; use Employees\Common\Model\Employee; +use Test\Helper\EmployeeTestDataHelper; use Travel\Common\Model\EmployeeTravelRecord; class ApprovalStatusIntegration extends \TestTemplate{ var $travelRec = null; + var $ids = null; protected function setUp(){ parent::setUp(); + $ids = []; + for ($i = 1; $i <= 7; $i++) { + $ids[] = EmployeeTestDataHelper::insertRandomEmployee(); + } + $emp = new Employee(); - $emp->Load("id = ?",array(1)); - $emp->supervisor = 2; - $emp->indirect_supervisors = json_encode(array(3,4)); - $emp->approver1 = 5; - $emp->approver2 = 6; - $emp->approver3 = 7; + $emp->Load("id = ?",array($ids[0])); + $emp->supervisor = $ids[1]; + $emp->indirect_supervisors = json_encode(array($ids[2],$ids[3])); + $emp->approver1 = $ids[4]; + $emp->approver2 = $ids[5]; + $emp->approver3 = $ids[6]; $emp->Save(); $this->travelRec = new EmployeeTravelRecord(); - $this->travelRec->DB()->execute("delete from EmployeeTravelRecords"); - - $this->travelRec->employee = 1; + $this->travelRec->employee = $ids[0]; $this->travelRec->type = 'International'; $this->travelRec->purpose = 'Testing'; $this->travelRec->travel_from = 'Colombo'; @@ -37,58 +42,70 @@ class ApprovalStatusIntegration extends \TestTemplate{ $this->travelRec->return_date = date("Y-m-d H:i:s"); $this->travelRec->status = 'Pending'; $this->travelRec->Save(); + + $this->ids = $ids; } protected function tearDown(){ parent::tearDown(); + foreach ($this->ids as $id) { + $employee = new Employee(); + $employee->Load("id = ?", array($id)); + $employee->Delete(); + } + + $this->travelRec->DB()->execute("delete from EmployeeTravelRecords"); + $this->travelRec->DB()->execute("delete from EmployeeApprovals"); } public function testInitializeApprovalChain(){ $id = $this->travelRec->id; - //$this->initializeObjects(); $as = ApprovalStatus::getInstance(); $as->initializeApprovalChain('EmployeeTravelRecord',$id); $status = $as->getAllStatuses('EmployeeTravelRecord',$id); $this->assertEquals(3, count($status)); + $this->assertEquals($this->ids[4], $status[0]->approver); + $this->assertEquals($this->ids[5], $status[1]->approver); + $this->assertEquals($this->ids[6], $status[2]->approver); } public function testUpdateApprovalStatus(){ $id = $this->travelRec->id; - //$this->initializeObjects(); $as = ApprovalStatus::getInstance(); $as->initializeApprovalChain('EmployeeTravelRecord',$id); - $resp = $as->updateApprovalStatus('EmployeeTravelRecord',$id,2,1); + // Supervisor should approve first + $resp = $as->updateApprovalStatus('EmployeeTravelRecord',$id,$this->ids[1],1); $this->assertNull($resp->getObject()[0]); $this->assertEquals(1, $resp->getObject()[1]->active); $this->assertEquals(1, $resp->getObject()[1]->level); - - $resp = $as->updateApprovalStatus('EmployeeTravelRecord',$id,3,1); + // Now if a an indirect supervisor try to approve it should fail + $resp = $as->updateApprovalStatus('EmployeeTravelRecord',$id,$this->ids[2],1); $this->assertEquals(\Classes\IceResponse::ERROR, $resp->getStatus()); - $resp = $as->updateApprovalStatus('EmployeeTravelRecord',$id,5,1); + // First approver approves + $resp = $as->updateApprovalStatus('EmployeeTravelRecord',$id,$this->ids[4],1); $this->assertEquals(0, $resp->getObject()[0]->active); $this->assertEquals(1, $resp->getObject()[0]->level); $this->assertEquals(1, $resp->getObject()[1]->active); $this->assertEquals(2, $resp->getObject()[1]->level); - $resp = $as->updateApprovalStatus('EmployeeTravelRecord',$id,6,1); + // Second approver approves + $resp = $as->updateApprovalStatus('EmployeeTravelRecord',$id,$this->ids[5],1); $this->assertEquals(0, $resp->getObject()[0]->active); $this->assertEquals(2, $resp->getObject()[0]->level); $this->assertEquals(1, $resp->getObject()[1]->active); $this->assertEquals(3, $resp->getObject()[1]->level); - $resp = $as->updateApprovalStatus('EmployeeTravelRecord',$id,7,1); + // Third approver approves + $resp = $as->updateApprovalStatus('EmployeeTravelRecord',$id,$this->ids[6],1); $this->assertEquals(1, $resp->getObject()[0]->active); $this->assertEquals(3, $resp->getObject()[0]->level); $this->assertNull($resp->getObject()[1]); - - - fwrite(STDOUT, __METHOD__ . " End\n"); } } diff --git a/test/test.includes.php b/test/test.includes.php index c87392af..b151ce60 100644 --- a/test/test.includes.php +++ b/test/test.includes.php @@ -30,6 +30,7 @@ if (!class_exists('SessionUtils')) { } if (!class_exists('TestTemplate')) { include(dirname(__FILE__).'/TestTemplate.php'); + include(dirname(__FILE__).'/helper/EmployeeTestDataHelper.php'); include(APP_BASE_PATH."/includes.inc.php"); } diff --git a/test/unit/BaseServiceUnit.php b/test/unit/BaseServiceUnit.php new file mode 100644 index 00000000..7a55d672 --- /dev/null +++ b/test/unit/BaseServiceUnit.php @@ -0,0 +1,22 @@ +