Bug 24276: Add unit tests for mandatory parameter of FillWithDefaultValues
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Fri, 20 Dec 2019 08:20:23 +0000 (08:20 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 24 Mar 2020 11:23:11 +0000 (11:23 +0000)
Test plan:
Run t/db_dependent/Acquisition/FillWithDefaultValues.t

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
t/db_dependent/Acquisition/FillWithDefaultValues.t

index 0bba1be..96969e0 100755 (executable)
@@ -1,5 +1,5 @@
 use Modern::Perl;
-use Test::More tests => 6;
+use Test::More tests => 12;
 use Test::MockModule;
 
 use MARC::Record;
@@ -26,7 +26,7 @@ $biblio_module->mock(
 
             # default value for an existing field
             '245' => {
-                c          => { defaultvalue => $default_author },
+                c          => { defaultvalue => $default_author, mandatory => 1 },
                 mandatory  => 0,
                 repeatable => 0,
                 tab        => 0,
@@ -37,6 +37,11 @@ $biblio_module->mock(
             '099' => {
                 x => { defaultvalue => $default_x },
             },
+            '942' => {
+                c => { defaultvalue => 'BK', mandatory => 1 },
+                d => { defaultvalue => '942d_val' },
+                f => { defaultvalue => '942f_val' },
+            },
         };
     }
 );
@@ -96,4 +101,20 @@ $record->field('008')->update( undef );
 C4::Acquisition::FillWithDefaultValues($record);
 is( $record->field('008')->data, $default_x, 'Controlfield got default' );
 
+is( $record->subfield('942','d'), '942d_val', 'Check 942d' );
+
+# Now test only_mandatory parameter
+$record->delete_fields( $record->field('245') );
+$record->delete_fields( $record->field('942') );
+$record->append_fields( MARC::Field->new('942','','','f'=>'f val') );
+# We deleted 245 and replaced 942. If we only apply mandatories, we should get
+# back 245c again and 942c but not 942d. 942f should be left alone.
+C4::Acquisition::FillWithDefaultValues($record, { only_mandatory => 1 });
+@fields_245 = $record->field(245);
+is( scalar @fields_245, 1, 'Only one 245 expected' );
+is( $record->subfield('245','c'), $default_author, '245c restored' );
+is( $record->subfield('942','c'), 'BK', '942c also restored' );
+is( $record->subfield('942','d'), undef, '942d should not be there' );
+is( $record->subfield('942','f'), 'f val', '942f untouched' );
+
 $schema->storage->txn_rollback;