logaction( "CATALOGUING", "MODIFY", $biblionumber, "BEFORE=>" . $newrecord->as_formatted );
}
+ # Cleaning up invalid fields must be done early or SetUTF8Flag is liable to
+ # throw an exception which probably won't be handled.
+ foreach my $field ($record->fields()) {
+ if (! $field->is_control_field()) {
+ if (scalar($field->subfields()) == 0 || (scalar($field->subfields()) == 1 && $field->subfield('9'))) {
+ $record->delete_field($field);
+ }
+ }
+ }
+
SetUTF8Flag($record);
my $dbh = C4::Context->dbh;
_strip_item_fields($record, $frameworkcode);
- foreach my $field ($record->fields()) {
- if (! $field->is_control_field()) {
- if (scalar($field->subfields()) == 0) {
- $record->delete_fields($field);
- }
- }
- }
-
# update biblionumber and biblioitemnumber in MARC
# FIXME - this is assuming a 1 to 1 relationship between
# biblios and biblioitems
use strict;
use warnings;
-use Test::More tests => 6;
+use Test::More tests => 9;
use MARC::Record;
use C4::Biblio;
is($itemdata->{title},$title,'First test of GetBiblioItemData to get same result of previous two GetBiblioData tests.');
is($itemdata->{isbn},$isbn,'Second test checking it returns the correct isbn.');
+my $success = 0;
+$field = MARC::Field->new(
+ 655, ' ', ' ',
+ 'a' => 'Auction catalogs',
+ '9' => '1'
+ );
+eval {
+ $marc_record->append_fields($field);
+ $success = ModBiblio($marc_record,$biblionumber,'');
+} or do {
+ diag($@);
+ $success = 0;
+};
+ok($success, "ModBiblio handles authority-linked 655");
+
+eval {
+ $field->delete_subfields('a');
+ $marc_record->append_fields($field);
+ $success = ModBiblio($marc_record,$biblionumber,'');
+} or do {
+ diag($@);
+ $success = 0;
+};
+ok($success, "ModBiblio handles 655 with authority link but no heading");
+
+eval {
+ $field->delete_subfields('9');
+ $marc_record->append_fields($field);
+ $success = ModBiblio($marc_record,$biblionumber,'');
+} or do {
+ diag($@);
+ $success = 0;
+};
+ok($success, "ModBiblio handles 655 with no subfields");
# clean up after ourselves
DelBiblio($biblionumber);