Bug 18070: Deleting an authority should update the linked biblio records
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Tue, 31 Jan 2017 10:46:21 +0000 (11:46 +0100)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 3 Mar 2017 18:12:08 +0000 (18:12 +0000)
Adding a test where we delete an authority and prove that the linked
biblio still contains a reference to it.

Note: Currently, you can only delete a used authority from Tools,
batch record deletion. If you do, the biblio records will still
contain references to the deleted authority.

Test plan:
[1] Run t/db_dependent/Authorities/Merge.t
    Last test should fail: not ok 1 - Field 609 should be gone too

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
t/db_dependent/Authorities/Merge.t

index 726bad6..32c1903 100755 (executable)
@@ -4,7 +4,7 @@
 
 use Modern::Perl;
 
-use Test::More tests => 4;
+use Test::More tests => 5;
 
 use Getopt::Long;
 use MARC::Record;
@@ -216,6 +216,26 @@ subtest 'Test merge A1 to B1 (changing authtype)' => sub {
         'Check 612x' );
 };
 
+subtest 'Merging authorities should handle deletes (BZ 18070)' => sub {
+    plan tests => 1;
+
+    # Add authority and linked biblio, delete authority
+    my $auth1 = MARC::Record->new;
+    $auth1->append_fields( MARC::Field->new( '109', '', '', 'a' => 'DEL'));
+    my $authid1 = AddAuthority( $auth1, undef, $authtype1 );
+    my $bib1 = MARC::Record->new;
+    $bib1->append_fields(
+        MARC::Field->new( '245', '', '', a => 'test DEL' ),
+        MARC::Field->new( '609', '', '', a => 'DEL', 9 => "$authid1" ),
+    );
+    my ( $biblionumber ) = C4::Biblio::AddBiblio( $bib1, '' );
+    DelAuthority( $authid1 );
+
+    # See what happened
+    my $marc1 = C4::Biblio::GetMarcBiblio( $biblionumber );
+    is( $marc1->field('609'), undef, 'Field 609 should be gone too' );
+};
+
 sub set_mocks {
     # Mock ZOOM objects: They do nothing actually
     # Get new_record_from_zebra to return the records