/** * Test creation of XML document. * * @return void */ public function testAsXML() { $record = $this->getMockForAbstractClass('VuFindSearch\\Backend\\Solr\\Record\\SerializableRecordInterface'); $record->expects($this->once())->method('getFields')->will($this->returnValue(['id' => 'ID', 'field' => 'FIELD'])); $document = new UpdateDocument(); $document->addRecord($record, ['boost' => '2.0']); $xml = $document->asXML(); $this->assertXmlStringEqualsXmlString('<add><doc boost="2.0"><field name="id">ID</field><field name="field">FIELD</field></doc></add>', $xml); }
/** * Build the reserves index from date returned by the ILS driver, * specifically: getInstructors, getDepartments, getCourses, findReserves * * @param array $instructors Array of instructors $instructor_id => $instructor * @param array $courses Array of courses $course_id => $course * @param array $departments Array of department $dept_id => $department * @param array $reserves Array of reserves records from driver's * findReserves. * * @return UpdateDocument */ protected function buildReservesIndex($instructors, $courses, $departments, $reserves) { foreach ($reserves as $record) { if (!isset($record['INSTRUCTOR_ID']) || !isset($record['COURSE_ID']) || !isset($record['DEPARTMENT_ID'])) { throw new \Exception('INSTRUCTOR_ID and/or COURSE_ID and/or DEPARTMENT_ID fields ' . 'not present in reserve records. Please update ILS driver.'); } $instructor_id = $record['INSTRUCTOR_ID']; $course_id = $record['COURSE_ID']; $department_id = $record['DEPARTMENT_ID']; $id = $course_id . '|' . $instructor_id . '|' . $department_id; if (!isset($index[$id])) { $index[$id] = ['id' => $id, 'bib_id' => [], 'instructor_id' => $instructor_id, 'instructor' => isset($instructors[$instructor_id]) ? $instructors[$instructor_id] : '', 'course_id' => $course_id, 'course' => isset($courses[$course_id]) ? $courses[$course_id] : '', 'department_id' => $department_id, 'department' => isset($departments[$department_id]) ? $departments[$department_id] : '']; } $index[$id]['bib_id'][] = $record['BIB_ID']; } $updates = new UpdateDocument(); foreach ($index as $id => $data) { if (!empty($data['bib_id'])) { $updates->addRecord(new SerializableRecord($data)); } } return $updates; }