Esempio n. 1
0
 /**
  * View list of vacancies
  * @param SearchObject Object with search parameters
  */
 private function _viewVacancies($searchObject)
 {
     if ($this->authorizeObj->isAdmin()) {
         $list = JobVacancy::getListForView($searchObject->getPageNumber(), $searchObject->getSearchString(), $searchObject->getSearchField(), $searchObject->getSortField(), $searchObject->getSortOrder());
         $count = Jobvacancy::getCount($searchObject->getSearchString(), $searchObject->getSearchField());
         $this->_viewList($searchObject->getPageNumber(), $count, $list);
     } else {
         $this->_notAuthorized();
     }
 }
 /**
  * Test the getListForView function
  */
 public function testGetListForView()
 {
     // Get all
     $list = JobVacancy::getListForView();
     $this->assertTrue(is_array($list));
     $this->assertEquals(4, count($list));
     $this->_compareVacanciesWithOrder($this->jobVacancies, $list);
     // Get all in reverse order by job title name
     $list = JobVacancy::getListForView(0, '', JobVacancy::SORT_FIELD_NONE, JobVacancy::SORT_FIELD_JOBTITLE_NAME, 'DESC');
     $this->assertTrue(is_array($list));
     $this->assertEquals(4, count($list));
     $expected = array($this->jobVacancies[3], $this->jobVacancies[4], $this->jobVacancies[1], $this->jobVacancies[2]);
     $this->_compareVacanciesWithOrder($expected, $list);
     // Search by job title name with exact match
     $list = JobVacancy::getListForView(0, 'Typist', JobVacancy::SORT_FIELD_JOBTITLE_NAME, JobVacancy::SORT_FIELD_JOBTITLE_NAME, 'DESC');
     $this->assertTrue(is_array($list));
     $this->assertEquals(1, count($list));
     $expected = array($this->jobVacancies[3]);
     $this->_compareVacanciesWithOrder($expected, $list);
     // Search by description with multiple matches
     $list = JobVacancy::getListForView(0, 'Job vacancy', JobVacancy::SORT_FIELD_DESCRIPTION, JobVacancy::SORT_FIELD_DESCRIPTION, 'DESC');
     $this->assertTrue(is_array($list));
     $this->assertEquals(4, count($list));
     $expected = array($this->jobVacancies[4], $this->jobVacancies[3], $this->jobVacancies[2], $this->jobVacancies[1]);
     $this->_compareVacanciesWithOrder($expected, $list);
     // Search by description with one match
     $list = JobVacancy::getListForView(0, 'Job vacancy 2', JobVacancy::SORT_FIELD_DESCRIPTION, JobVacancy::SORT_FIELD_DESCRIPTION, 'ASC');
     $this->assertTrue(is_array($list));
     $this->assertEquals(1, count($list));
     $expected = array($this->jobVacancies[2]);
     $this->_compareVacanciesWithOrder($expected, $list);
     // Search by id with one match
     $list = JobVacancy::getListForView(0, '3', JobVacancy::SORT_FIELD_VACANCY_ID, JobVacancy::SORT_FIELD_VACANCY_ID, 'ASC');
     $this->assertTrue(is_array($list));
     $this->assertEquals(1, count($list));
     $expected = array($this->jobVacancies[3]);
     $this->_compareVacanciesWithOrder($expected, $list);
     // Search by id with no matches
     $list = JobVacancy::getListForView(0, '13', JobVacancy::SORT_FIELD_VACANCY_ID, JobVacancy::SORT_FIELD_VACANCY_ID, 'ASC');
     $this->assertNull($list);
     // Search by manager name with matches
     $list = JobVacancy::getListForView(0, 'Aruna', JobVacancy::SORT_FIELD_MANAGER_NAME, JobVacancy::SORT_FIELD_VACANCY_ID, 'ASC');
     $this->assertTrue(is_array($list));
     $this->assertEquals(2, count($list));
     $expected = array($this->jobVacancies[3], $this->jobVacancies[4]);
     $this->_compareVacanciesWithOrder($expected, $list);
     // Search by manager name with no matches
     $list = JobVacancy::getListForView(0, 'Kamal', JobVacancy::SORT_FIELD_MANAGER_NAME, JobVacancy::SORT_FIELD_VACANCY_ID, 'ASC');
     $this->assertNull($list);
     // Search by active status
     $list = JobVacancy::getListForView(0, JobVacancy::STATUS_ACTIVE, JobVacancy::SORT_FIELD_ACTIVE, JobVacancy::SORT_FIELD_VACANCY_ID, 'ASC');
     $this->assertTrue(is_array($list));
     $this->assertEquals(2, count($list));
     $expected = array($this->jobVacancies[1], $this->jobVacancies[4]);
     $this->_compareVacanciesWithOrder($expected, $list);
     $list = JobVacancy::getListForView(0, JobVacancy::STATUS_INACTIVE, JobVacancy::SORT_FIELD_ACTIVE, JobVacancy::SORT_FIELD_VACANCY_ID, 'ASC');
     $this->assertTrue(is_array($list));
     $this->assertEquals(2, count($list));
     $expected = array($this->jobVacancies[2], $this->jobVacancies[3]);
     $this->_compareVacanciesWithOrder($expected, $list);
     // when no job vacancys available
     $this->assertTrue(mysql_query('DELETE from hs_hr_job_vacancy'), mysql_error());
     $list = JobVacancy::getListForView();
     $this->assertNull($list);
     // Insert data for paging tests
     for ($i = 1; $i < 251; $i++) {
         $inc = 100 + $i;
         if ($i % 2 == 0) {
             $desc = "Even ";
             $even = true;
             $status = true;
         } else {
             $desc = "Odd ";
             $even = false;
             $status = false;
         }
         $vacancy = $this->_getJobVacancy($i, 'JOB001', 11, $status, "{$desc}-{$inc}");
         $vacancy->setJobTitleName('Manager');
         $vacancy->setManagerName('Saman Rajasinghe');
         $vacancys[] = $vacancy;
         if ($even) {
             $evenVacancys[] = $vacancy;
         } else {
             $oddVacancys[] = $vacancy;
         }
     }
     $this->_createJobVacancies($vacancys);
     $sysConf = new sysConf();
     $pageSize = $sysConf->itemsPerPage;
     // check paging - without search
     // page 1
     $list = JobVacancy::getListForView(1, '', JobVacancy::SORT_FIELD_NONE, JobVacancy::SORT_FIELD_VACANCY_ID, 'ASC');
     $this->assertTrue(is_array($list));
     $this->assertEquals($pageSize, count($list));
     $pages = array_chunk($vacancys, $pageSize);
     $this->_compareVacanciesWithOrder($pages[0], $list);
     // page 3
     $list = JobVacancy::getListForView(3, '', JobVacancy::SORT_FIELD_NONE, JobVacancy::SORT_FIELD_VACANCY_ID, 'ASC');
     $this->assertTrue(is_array($list));
     $this->assertEquals($pageSize, count($list));
     $this->_compareVacanciesWithOrder($pages[2], $list);
     // paging with search
     // Separate even rows to pages
     $pages = array_chunk($evenVacancys, $pageSize);
     // Search only for even (status = active) rows and check page 1
     $list = JobVacancy::getListForView(1, JobVacancy::STATUS_ACTIVE, JobVacancy::SORT_FIELD_ACTIVE, JobVacancy::SORT_FIELD_VACANCY_ID, 'ASC');
     $this->assertTrue(is_array($list));
     $this->assertEquals(count($pages[0]), count($list));
     $this->_compareVacanciesWithOrder($pages[0], $list);
     $list = JobVacancy::getListForView(3, JobVacancy::STATUS_ACTIVE, JobVacancy::SORT_FIELD_ACTIVE, JobVacancy::SORT_FIELD_VACANCY_ID, 'ASC');
     $this->assertTrue(is_array($list));
     $this->assertEquals(count($pages[2]), count($list));
     $this->_compareVacanciesWithOrder($pages[2], $list);
 }