diff --git a/workflow/engine/src/Tests/BusinessModel/DepartmentTest.php b/workflow/engine/src/Tests/BusinessModel/DepartmentTest.php index 68fc950b9..588f677de 100644 --- a/workflow/engine/src/Tests/BusinessModel/DepartmentTest.php +++ b/workflow/engine/src/Tests/BusinessModel/DepartmentTest.php @@ -16,244 +16,294 @@ if (!class_exists("Propel")) { */ class DepartmentTest extends \PHPUnit_Framework_TestCase { + protected $oDepartment; + + /** + * Set class for test + * + * @coversNothing + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ + public function setUp() + { + $this->oDepartment = new \BusinessModel\Department(); + return true; + } + + /** + * Test error for type in first field the function + * + * @covers \BusinessModel\Department::saveDepartment + * @expectedException Exception + * @expectedExceptionMessage The field '$dep_data' is not an array. + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ public function testCreateDepartmentErrorArray() { - try { - $oDepartment = new \BusinessModel\Department(); - $oDepartment->saveDepartment(true); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "The field '". '$dep_data' . "' is not an array."); - } + $this->oDepartment->saveDepartment(true); } + /** + * Test error for type in second field the function + * + * @covers \BusinessModel\Department::saveDepartment + * @expectedException Exception + * @expectedExceptionMessage The field '$create' is not a boolean. + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ public function testCreateDepartmentErrorBoolean() { - try { - $oDepartment = new \BusinessModel\Department(); - $oDepartment->saveDepartment(array('1'),array()); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "The field '". '$create' . "' is not a boolean."); - } + $this->oDepartment->saveDepartment(array('1'),array()); } + /** + * Test error for empty array in first field the function + * + * @covers \BusinessModel\Department::saveDepartment + * @expectedException Exception + * @expectedExceptionMessage The field '$dep_data' is empty. + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ public function testCreateDepartmentErrorArrayEmpty() { - try { - $oDepartment = new \BusinessModel\Department(); - $oDepartment->saveDepartment(array()); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "The field '". '$dep_data' . "' is empty."); - } - } - - public function testCreateDepartmentErrorArrayDepUidExist() - { - try { - $data = array('dep_uid' => 'testUidDepartment'); - $oDepartment = new \BusinessModel\Department(); - $oDepartment->saveDepartment($data); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "The departament with dep_uid: 'testUidDepartment' does not exist."); - } + $this->oDepartment->saveDepartment(array()); } + /** + * Test error for create department with nonexistent dep_parent + * + * @covers \BusinessModel\Department::saveDepartment + * @expectedException Exception + * @expectedExceptionMessage The departament with dep_parent: 'testUidDepartment' does not exist. + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ public function testCreateDepartmentErrorArrayDepParentExist() { - try { - $data = array('dep_parent' => 'testUidDepartment'); - $oDepartment = new \BusinessModel\Department(); - $oDepartment->saveDepartment($data); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "The departament with dep_parent: 'testUidDepartment' does not exist."); - } + $data = array('dep_parent' => 'testUidDepartment'); + $this->oDepartment->saveDepartment($data); } + /** + * Test error for create department with nonexistent dep_manager + * + * @covers \BusinessModel\Department::saveDepartment + * @expectedException Exception + * @expectedExceptionMessage The user with dep_manager: 'testUidUser' does not exist. + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ public function testCreateDepartmentErrorArrayDepManagerExist() { - try { - $data = array('dep_manager' => 'testUidUser'); - $oDepartment = new \BusinessModel\Department(); - $oDepartment->saveDepartment($data); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "The user with dep_manager: 'testUidUser' does not exist."); - } + $data = array('dep_manager' => 'testUidUser'); + $this->oDepartment->saveDepartment($data); } + /** + * Test error for create department with incorrect dep_status + * + * @covers \BusinessModel\Department::saveDepartment + * @expectedException Exception + * @expectedExceptionMessage The departament with dep_status: 'SUPER ACTIVO' is incorrect. + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ public function testCreateDepartmentErrorArrayDepStatus() { - try { - $data = array('dep_status' => 'SUPER ACTIVO'); - $oDepartment = new \BusinessModel\Department(); - $oDepartment->saveDepartment($data); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "The departament with dep_status: 'SUPER ACTIVO' is incorrect."); - } + $data = array('dep_status' => 'SUPER ACTIVO'); + $this->oDepartment->saveDepartment($data); } + /** + * Test error for create department untitled + * + * @covers \BusinessModel\Department::saveDepartment + * @expectedException Exception + * @expectedExceptionMessage The field dep_title is required. + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ public function testCreateDepartmentErrorArrayDepTitleEmpty() { - try { - $data = array('dep_status' => 'ACTIVE'); - $oDepartment = new \BusinessModel\Department(); - $oDepartment->saveDepartment($data); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "The field dep_title is required."); - } + $data = array('dep_status' => 'ACTIVE'); + $this->oDepartment->saveDepartment($data); } - public function testCreateDepartmentErrorArrayDepTitleRepeated() + /** + * Save department parent + * + * @covers \BusinessModel\Department::saveDepartment + * @return array + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ + public function testCreateDepartmentParent() { - $oDepartment = new \BusinessModel\Department(); - - ////////// Create department parent - $dep1 = array ( - 'dep_title' => 'departamento padre' - ); - $arrayDepartments = $oDepartment->saveDepartment($dep1); - $this->assertTrue(isset($arrayDepartments['dep_uid'])); - - try { - $arrayDepartments = $oDepartment->saveDepartment($dep1); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "The departament with dep_title: 'departamento padre' exist."); - } - - $oDepartment->deleteDepartment($arrayDepartments['dep_uid']); + $data = array('dep_title' => 'Departamento Padre'); + $dep_data = $this->oDepartment->saveDepartment($data); + $this->assertTrue(is_array($dep_data)); + $this->assertTrue(isset($dep_data['dep_uid'])); + $this->assertEquals($dep_data['dep_parent'], ''); + $this->assertEquals($dep_data['dep_title'], 'Departamento Padre'); + $this->assertEquals($dep_data['dep_status'], 'ACTIVE'); + $this->assertEquals($dep_data['dep_manager'], ''); + $this->assertEquals($dep_data['has_children'], 0); + return $dep_data; } - public function testCreateDepartmentNormal() + /** + * Test error for create department with title exist + * + * @depends testCreateDepartmentParent + * @param array $dep_data, Data for parent department + * @covers \BusinessModel\Department::saveDepartment + * @expectedException Exception + * @expectedExceptionMessage The departament with dep_title: 'Departamento Padre' exist. + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ + public function testCreateDepartmentErrorArrayDepTitleRepeated(array $dep_data) { - $oDepartment = new \BusinessModel\Department(); - - ////////// Create department parent - $dep1 = array ( - 'dep_title' => 'departamento padre' - ); - $arrayDepartments = $oDepartment->saveDepartment($dep1); - $this->assertTrue(isset($arrayDepartments['dep_uid'])); - $this->assertEquals($arrayDepartments['dep_parent'], ''); - $this->assertEquals($arrayDepartments['dep_title'], 'departamento padre'); - $this->assertEquals($arrayDepartments['dep_status'], 'ACTIVE'); - $this->assertEquals($arrayDepartments['dep_manager'], ''); - $this->assertEquals($arrayDepartments['has_children'], 0); - - - $oDepartment->deleteDepartment($arrayDepartments['dep_uid']); + $data = array('dep_title' => 'Departamento Padre'); + $this->oDepartment->saveDepartment($data); } - public function testUpdateDepartmentErrorArrayDepTitleRepeated() + /** + * Test error for create department untitled + * + * @covers \BusinessModel\Department::saveDepartment + * @expectedException Exception + * @expectedExceptionMessage The departament with dep_uid: 'testUidDepartment' does not exist. + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ + public function testUpdateDepartmentErrorArrayDepUidExist() { - $oDepartment = new \BusinessModel\Department(); - - ////////// Create department parent - $dep1 = array ( - 'dep_title' => 'dep1' - ); - $dep2 = array ( - 'dep_title' => 'dep2' - ); - $dataDep1 = $oDepartment->saveDepartment($dep1); - $this->assertTrue(isset($dataDep1['dep_uid'])); - $dataDep2 = $oDepartment->saveDepartment($dep2); - $this->assertTrue(isset($dataDep2['dep_uid'])); - - $dep2Update = array ( - 'dep_uid' => $dataDep2['dep_uid'], - 'dep_title' => 'dep1' - ); - try { - $oDepartment->saveDepartment($dep2Update, false); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "The departament with dep_title: 'dep1' exist."); - } - - $oDepartment->deleteDepartment($dataDep1['dep_uid']); - $oDepartment->deleteDepartment($dataDep2['dep_uid']); + $data = array('dep_uid' => 'testUidDepartment'); + $this->oDepartment->saveDepartment($data); } - public function testGetDepartments() + /** + * Save department child + * + * @depends testCreateDepartmentParent + * @param array $dep_data, Data for parent department + * @covers \BusinessModel\Department::saveDepartment + * @return array + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ + public function testCreateDepartmentChild(array $dep_data) { - $oDepartment = new \BusinessModel\Department(); - - ////////// Create department parent - $dep1 = array ( - 'dep_title' => 'departamento padre' - ); - $arrayDepartments = $oDepartment->saveDepartment($dep1); - $this->assertTrue(isset($arrayDepartments['dep_uid'])); - $this->assertEquals($arrayDepartments['dep_parent'], ''); - $this->assertEquals($arrayDepartments['dep_title'], 'departamento padre'); - $this->assertEquals($arrayDepartments['dep_status'], 'ACTIVE'); - $this->assertEquals($arrayDepartments['dep_manager'], ''); - $this->assertEquals($arrayDepartments['has_children'], 0); - - ////////// Create department child - $dep1Uid = $arrayDepartments['dep_uid']; - $dep2 = array ( - 'dep_parent' => $dep1Uid, - 'dep_manager' => '00000000000000000000000000000001', - 'dep_title' => 'departamento hijo1', - 'dep_status' => 'INACTIVE' - ); - $arrayDepartments2 = $oDepartment->saveDepartment($dep2); - $this->assertTrue(isset($arrayDepartments2['dep_uid'])); - $this->assertEquals($arrayDepartments2['dep_parent'], $dep1Uid); - $this->assertEquals($arrayDepartments2['dep_title'], 'departamento hijo1'); - $this->assertEquals($arrayDepartments2['dep_status'], 'INACTIVE'); - $this->assertEquals($arrayDepartments2['dep_manager'], '00000000000000000000000000000001'); - $this->assertEquals($arrayDepartments2['has_children'], 0); - - ////////// Update department parent - $depUp1 = array ( - 'dep_uid' => $dep1Uid, - 'dep_title' => 'DepPadre', + $data = array( + 'dep_title' => 'Departamento Child', + 'dep_parent' => $dep_data['dep_uid'], + 'dep_status' => 'INACTIVE', 'dep_manager' => '00000000000000000000000000000001' ); - $oDepartment->saveDepartment($depUp1, false); + $child_data = $this->oDepartment->saveDepartment($data); + $this->assertTrue(is_array($child_data)); + $this->assertTrue(isset($child_data['dep_uid'])); + $this->assertEquals($child_data['dep_parent'], $dep_data['dep_uid']); + $this->assertEquals($child_data['dep_title'], 'Departamento Child'); + $this->assertEquals($child_data['dep_status'], 'INACTIVE'); + $this->assertEquals($child_data['dep_manager'], '00000000000000000000000000000001'); + $this->assertEquals($child_data['has_children'], 0); + return $child_data; + } - $dep2Uid = $arrayDepartments2['dep_uid']; - $depUp2 = array ( - 'dep_uid' => $dep2Uid, - 'dep_title' => 'DepHijo', - 'dep_manager' => '', + /** + * Test error for update department with title exist + * + * @depends testCreateDepartmentParent + * @depends testCreateDepartmentChild + * @param array $dep_data, Data for parent department + * @param array $child_data, Data for child department + * @covers \BusinessModel\Department::saveDepartment + * @expectedException Exception + * @expectedExceptionMessage The departament with dep_title: 'Departamento Padre' exist. + * @return array + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ + public function testUpdateDepartmentErrorArrayDepTitleRepeated(array $dep_data, array $child_data) + { + $dataUpdate = array ( + 'dep_uid' => $child_data['dep_uid'], + 'dep_title' => 'Departamento Padre' ); - $oDepartment->saveDepartment($depUp2, false); + $this->oDepartment->saveDepartment($dataUpdate, false); + } - $oDepartment = new \BusinessModel\Department(); - $arrayDepartments = $oDepartment->getDepartments(); + /** + * Test get departments array + * + * @depends testCreateDepartmentParent + * @depends testCreateDepartmentChild + * @param array $dep_data, Data for parent department + * @param array $child_data, Data for child department + * @covers \BusinessModel\Department::getDepartments + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ + public function testGetDepartments(array $dep_data, array $child_data) + { + $arrayDepartments = $this->oDepartment->getDepartments(); $this->assertTrue(is_array($arrayDepartments)); $this->assertEquals(count($arrayDepartments), 1); $this->assertTrue(is_array($arrayDepartments[0]['dep_children'])); $this->assertEquals(count($arrayDepartments[0]['dep_children']), 1); + $dataParent = $arrayDepartments[0]; + $this->assertEquals($dep_data['dep_parent'], $dataParent['dep_parent']); + $this->assertEquals($dep_data['dep_title'], $dataParent['dep_title']); + $this->assertEquals($dep_data['dep_status'], $dataParent['dep_status']); + $this->assertEquals($dep_data['dep_manager'], $dataParent['dep_manager']); - $oDepartment = new \BusinessModel\Department(); - $arrayDepartments = $oDepartment->getDepartments(); - $depIdPadre = $arrayDepartments[0]['dep_uid']; - $depIdChild = $arrayDepartments[0]['dep_children'][0]['dep_uid']; - $oDepartment = new \BusinessModel\Department(); - $dataPadre = $oDepartment->getDepartment($depIdPadre); - $dataChild = $oDepartment->getDepartment($depIdChild); + $dataChild = $arrayDepartments[0]['dep_children'][0]; + $this->assertEquals($child_data['dep_parent'], $dataChild['dep_parent']); + $this->assertEquals($child_data['dep_title'], $dataChild['dep_title']); + $this->assertEquals($child_data['dep_status'], $dataChild['dep_status']); + $this->assertEquals($child_data['dep_manager'], $dataChild['dep_manager']); + } - $this->assertTrue(is_array($dataPadre)); - $this->assertEquals($dataPadre['dep_title'], 'DepPadre'); - $this->assertEquals($dataPadre['dep_manager'], '00000000000000000000000000000001'); - $this->assertTrue(is_array($dataChild)); - $this->assertEquals($dataChild['dep_title'], 'DepHijo'); - $this->assertEquals($dataChild['dep_manager'], ''); + /** + * Test get department array + * + * @depends testCreateDepartmentParent + * @param array $dep_data, Data for parent department + * @covers \BusinessModel\Department::getDepartment + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ + public function testGetDepartment(array $dep_data) + { + $dataParent = $this->oDepartment->getDepartment($dep_data['dep_uid']); + $this->assertTrue(is_array($dataParent)); - $oDepartment->deleteDepartment($depIdChild); - $oDepartment->deleteDepartment($depIdPadre); + $this->assertEquals($dep_data['dep_parent'], $dataParent['dep_parent']); + $this->assertEquals($dep_data['dep_title'], $dataParent['dep_title']); + $this->assertEquals($dep_data['dep_status'], $dataParent['dep_status']); + $this->assertEquals($dep_data['dep_manager'], $dataParent['dep_manager']); } // TODO: Assigned Users to department @@ -262,32 +312,43 @@ class DepartmentTest extends \PHPUnit_Framework_TestCase } - public function testDeleteDepartmentErrorDepartmentParent() + /** + * Test error for delete department with children + * + * @depends testCreateDepartmentParent + * @depends testCreateDepartmentChild + * @param array $dep_data, Data for parent department + * @param array $child_data, Data for child department + * @covers \BusinessModel\Department::deleteDepartment + * @expectedException Exception + * @expectedExceptionMessage Can not delete the department. The department has children + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ + public function testDeleteDepartmentErrorDepartmentParent(array $dep_data, array $child_data) { - $oDepartment = new \BusinessModel\Department(); + $this->oDepartment->deleteDepartment($dep_data['dep_uid']); + } - ////////// Create department parent - $dep1 = array ( - 'dep_title' => 'dep1' - ); - $dataDep1 = $oDepartment->saveDepartment($dep1); - $this->assertTrue(isset($dataDep1['dep_uid'])); - $dep2 = array ( - 'dep_title' => 'dep2', - 'dep_parent' => $dataDep1['dep_uid'] - ); - $dataDep2 = $oDepartment->saveDepartment($dep2); - $this->assertTrue(isset($dataDep2['dep_uid'])); - - try { - $oDepartment->deleteDepartment($dataDep1['dep_uid']); - } catch (\Exception $e) { - $res = $e->getMessage(); - $this->assertEquals($res, "Can not delete the department. The department has children"); - } - - $oDepartment->deleteDepartment($dataDep2['dep_uid']); - $oDepartment->deleteDepartment($dataDep1['dep_uid']); + /** + * Test get departments array + * + * @depends testCreateDepartmentParent + * @depends testCreateDepartmentChild + * @param array $dep_data, Data for parent department + * @param array $child_data, Data for child department + * @covers \BusinessModel\Department::deleteDepartment + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + */ + public function testDeleteDepartments(array $dep_data, array $child_data) + { + $this->oDepartment->deleteDepartment($child_data['dep_uid']); + $this->oDepartment->deleteDepartment($dep_data['dep_uid']); + $dataParent = $this->oDepartment->getDepartments(); + $this->assertTrue(empty($dataParent)); } }