use Modern::Perl;
-use Test::More tests => 6;
+use Test::More tests => 12;
use Test::MockModule;
use MARC::Record;
# default value for an existing field
'245' => {
- c => { defaultvalue => $default_author },
+ c => { defaultvalue => $default_author, mandatory => 1 },
mandatory => 0,
repeatable => 0,
tab => 0,
'099' => {
x => { defaultvalue => $default_x },
},
+ '942' => {
+ c => { defaultvalue => 'BK', mandatory => 1 },
+ d => { defaultvalue => '942d_val' },
+ f => { defaultvalue => '942f_val' },
+ },
};
}
);
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;