From fb8d22e52dfb8bbf0dba4845fd171b3872ceaf6f Mon Sep 17 00:00:00 2001 From: Demian Katz <demian.katz@villanova.edu> Date: Wed, 3 Jul 2013 08:47:58 -0400 Subject: [PATCH] Fixed bug: first_indexed value in change_tracker updated inappropriately. Resolves VUFIND-835; thanks to Luke O'Sullivan for the fix. --- module/VuFind/src/VuFind/Db/Table/ChangeTracker.php | 2 +- .../src/VuFindTest/Db/Table/ChangeTrackerTest.php | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/module/VuFind/src/VuFind/Db/Table/ChangeTracker.php b/module/VuFind/src/VuFind/Db/Table/ChangeTracker.php index f2020fa7c86..f9a957d7123 100644 --- a/module/VuFind/src/VuFind/Db/Table/ChangeTracker.php +++ b/module/VuFind/src/VuFind/Db/Table/ChangeTracker.php @@ -203,7 +203,7 @@ class ChangeTracker extends Gateway // If first indexed is null, we're restoring a deleted record, so // we need to treat it as new -- we'll use the current time. - if (empty($this->first_indexed)) { + if (empty($row->first_indexed)) { $row->first_indexed = $row->last_indexed; } diff --git a/module/VuFind/tests/integration-tests/src/VuFindTest/Db/Table/ChangeTrackerTest.php b/module/VuFind/tests/integration-tests/src/VuFindTest/Db/Table/ChangeTrackerTest.php index 10f3900a30d..799335d1fb7 100644 --- a/module/VuFind/tests/integration-tests/src/VuFindTest/Db/Table/ChangeTrackerTest.php +++ b/module/VuFind/tests/integration-tests/src/VuFindTest/Db/Table/ChangeTrackerTest.php @@ -77,6 +77,10 @@ class ChangeTrackerTest extends \VuFindTest\Unit\DbTestCase $this->assertTrue(empty($row->deleted)); $this->assertEquals($row->first_indexed, $row->last_indexed); $this->assertEquals($row->last_record_change, '2012-01-17 20:46:10'); + $previousFirstIndexed = $row->first_indexed; + + // Sleep two seconds to be sure timestamps change: + sleep(2); // Index a later record version -- this should lead to changes: $tracker->index($core, 'test1', 1326833176); @@ -89,6 +93,9 @@ class ChangeTrackerTest extends \VuFindTest\Unit\DbTestCase ); $this->assertEquals($row->last_record_change, '2012-01-17 20:46:16'); + // Make sure the "first indexed" date hasn't changed! + $this->assertEquals($row->first_indexed, $previousFirstIndexed); + // Delete the record: $tracker->markDeleted($core, 'test1'); $row = $tracker->retrieve($core, 'test1'); @@ -108,6 +115,7 @@ class ChangeTrackerTest extends \VuFindTest\Unit\DbTestCase $this->assertTrue(is_object($row)); $this->assertTrue(empty($row->deleted)); $this->assertEquals($row->last_record_change, '2012-01-17 20:46:10'); + $this->assertEquals($row->first_indexed, $row->last_indexed); // Clean up after ourselves: $tracker->delete(array('core' => $core)); -- GitLab