diff --git a/module/VuFind/src/VuFind/RecordDriver/AbstractBase.php b/module/VuFind/src/VuFind/RecordDriver/AbstractBase.php
index 539e9f6ae41fea3b4650a0f985b47a3ec43a4a3a..c834ad362c7d69741457961ff45938829d04b961 100644
--- a/module/VuFind/src/VuFind/RecordDriver/AbstractBase.php
+++ b/module/VuFind/src/VuFind/RecordDriver/AbstractBase.php
@@ -334,25 +334,20 @@ abstract class AbstractBase implements \VuFind\Db\Table\DbTableAwareInterface,
      */
     public function getCitationFormats()
     {
+        $formatSetting = $this->mainConfig->Record->citation_formats ?? true;
+
         // Default behavior: use all supported options.
-        if (!isset($this->mainConfig->Record->citation_formats)
-            || $this->mainConfig->Record->citation_formats === true
-            || $this->mainConfig->Record->citation_formats === 'true'
-        ) {
+        if ($formatSetting === true || $formatSetting === 'true') {
             return $this->getSupportedCitationFormats();
         }
 
         // Citations disabled:
-        if ($this->mainConfig->Record->citation_formats === false
-            || $this->mainConfig->Record->citation_formats === 'false'
-        ) {
+        if ($formatSetting === false || $formatSetting === 'false') {
             return [];
         }
 
         // Whitelist:
-        $whitelist = array_map(
-            'trim', explode(',', $this->mainConfig->Record->citation_formats)
-        );
+        $whitelist = array_map('trim', explode(',', $formatSetting));
         return array_intersect($whitelist, $this->getSupportedCitationFormats());
     }
 
diff --git a/module/VuFind/tests/unit-tests/src/VuFindTest/RecordDriver/DefaultRecordTest.php b/module/VuFind/tests/unit-tests/src/VuFindTest/RecordDriver/DefaultRecordTest.php
index a119ecf76c682d7192ba99ef8ef95ad16494033b..06a655e8230b5eb5eb5e3656e4d42671fc714112 100644
--- a/module/VuFind/tests/unit-tests/src/VuFindTest/RecordDriver/DefaultRecordTest.php
+++ b/module/VuFind/tests/unit-tests/src/VuFindTest/RecordDriver/DefaultRecordTest.php
@@ -30,6 +30,7 @@ namespace VuFindTest\RecordDriver;
 
 use VuFind\RecordDriver\DefaultRecord;
 use VuFind\RecordDriver\Response\PublicationDetails;
+use Zend\Config\Config;
 
 /**
  * DefaultRecord Record Driver Test Class
@@ -383,14 +384,52 @@ class DefaultRecordTest extends \VuFindTest\Unit\TestCase
         $this->assertEquals($breadcrumb, $this->getDriver()->getBreadcrumb());
     }
 
+    /**
+     * Test citation behavior.
+     *
+     * @return void
+     */
+    public function testCitationBehavior()
+    {
+        // The DefaultRecord driver should have some supported formats:
+        $driver = $this->getDriver();
+        $supported = $this->callMethod($driver, 'getSupportedCitationFormats');
+        $this->assertNotEmpty($supported);
+
+        // By default, all supported formats should be enabled:
+        $this->assertEquals($supported, $driver->getCitationFormats());
+
+        // Data table (citation_formats config, expected result):
+        $tests = [
+            // No results:
+            [false, []],
+            ['false', []],
+            // All results:
+            [true, $supported],
+            ['true', $supported],
+            // Filtered results:
+            ['MLA,foo', ['MLA']],
+            ['bar ,     APA,MLA', ['APA', 'MLA']],
+        ];
+        foreach ($tests as $current) {
+            list($input, $output) = $current;
+            $cfg = new Config(['Record' => ['citation_formats' => $input]]);
+            $this->assertEquals(
+                $output,
+                array_values($this->getDriver([], $cfg)->getCitationFormats())
+            );
+        }
+    }
+
     /**
      * Get a record driver with fake data.
      *
-     * @param array $overrides Fixture fields to override.
+     * @param array  $overrides  Fixture fields to override.
+     * @param Config $mainConfig Main configuration (optional).
      *
      * @return SolrDefault
      */
-    protected function getDriver($overrides = [])
+    protected function getDriver($overrides = [], Config $mainConfig = null)
     {
         $fixture = json_decode(
             file_get_contents(
@@ -401,7 +440,7 @@ class DefaultRecordTest extends \VuFindTest\Unit\TestCase
             true
         );
 
-        $record = new DefaultRecord();
+        $record = new DefaultRecord($mainConfig);
         $record->setRawData($overrides + $fixture['response']['docs'][0]);
         return $record;
     }