/** * 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); }