From e7115ab7a09adc2b29f3db9fcd97be2e40bcf8e5 Mon Sep 17 00:00:00 2001 From: David Maus <maus@hab.de> Date: Wed, 12 Aug 2015 15:09:37 +0200 Subject: [PATCH] Properly handle record w/o local record fields * src/HAB/Pica/Record/TitleRecord.php (setFields): Properly handle record w/o local record fields. --- src/HAB/Pica/Record/TitleRecord.php | 8 +++++++- .../unit-tests/src/HAB/Pica/Record/TitleRecordTest.php | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/HAB/Pica/Record/TitleRecord.php b/src/HAB/Pica/Record/TitleRecord.php index 94660b1..71cf43f 100644 --- a/src/HAB/Pica/Record/TitleRecord.php +++ b/src/HAB/Pica/Record/TitleRecord.php @@ -75,7 +75,13 @@ class TitleRecord extends NestedRecord $this->addLocalRecord($localRecord); } else { $records = $this->getLocalRecords(); - $localRecord = end($records); + // Handle malformed Pica record w/ missing local record field + if (empty($records)) { + $localRecord = new LocalRecord(); + $this->addLocalRecord($localRecord); + } else { + $localRecord = end($records); + } if ($level === 1) { $localRecord->append($field); } else { diff --git a/tests/unit-tests/src/HAB/Pica/Record/TitleRecordTest.php b/tests/unit-tests/src/HAB/Pica/Record/TitleRecordTest.php index 9753e11..8a06fcb 100644 --- a/tests/unit-tests/src/HAB/Pica/Record/TitleRecordTest.php +++ b/tests/unit-tests/src/HAB/Pica/Record/TitleRecordTest.php @@ -121,4 +121,14 @@ class TitleRecordTest extends PHPUnit_FrameWork_TestCase $r->addLocalRecord($l); $this->assertTrue($r->containsLocalRecord($l)); } + + public function testTitleRecordWithNoLocalRecordIndicator () + { + $record = new TitleRecord(); + $fields = array(); + $fields []= new Field('003@', 0); + $fields []= new Field('200@', 0); + $record->setFields($fields); + $this->assertNotEmpty($record->getLocalRecords()); + } } -- GitLab