Bug 29346: Avoid duplicate actions tests
authorTomas Cohen Arazi <tomascohen@theke.io>
Tue, 26 Apr 2022 19:28:14 +0000 (16:28 -0300)
committerFridolin Somers <fridolin.somers@biblibre.com>
Thu, 5 May 2022 21:17:36 +0000 (11:17 -1000)
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
t/db_dependent/Biblio.t
t/db_dependent/Biblio_holdsqueue.t [new file with mode: 0755]
t/db_dependent/Circulation_holdsqueue.t

index 1287aa5..1ffa014 100755 (executable)
@@ -639,8 +639,8 @@ subtest 'IsMarcStructureInternal' => sub {
 subtest 'deletedbiblio_metadata' => sub {
     plan tests => 2;
 
-    my $mock = Test::MockModule->new('Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue');
-    $mock->mock( 'enqueue', undef );
+    my $bgj_mock = Test::MockModule->new('Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue');
+    $bgj_mock->mock( 'enqueue', undef );
 
     my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, '');
     my $biblio_metadata = C4::Biblio::GetXmlBiblio( $biblionumber );
@@ -653,10 +653,10 @@ subtest 'deletedbiblio_metadata' => sub {
 
 subtest 'DelBiblio' => sub {
 
-    plan tests => 6;
+    plan tests => 5;
 
-    my $mock = Test::MockModule->new('Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue');
-    $mock->mock( 'enqueue', undef );
+    my $bgj_mock = Test::MockModule->new('Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue');
+    $bgj_mock->mock( 'enqueue', undef );
 
     my ($biblionumber, $biblioitemnumber) = C4::Biblio::AddBiblio(MARC::Record->new, '');
     my $deleted = C4::Biblio::DelBiblio( $biblionumber );
@@ -694,39 +694,6 @@ subtest 'DelBiblio' => sub {
     is( $subscription->get_from_storage, undef, 'subscription should be deleted on biblio deletion' );
     is( $serial->get_from_storage, undef, 'serial should be deleted on biblio deletion' );
     is( $subscription_history->get_from_storage, undef, 'subscription history should be deleted on biblio deletion' );
-
-    subtest 'holds_queue update tests' => sub {
-
-        plan tests => 1;
-
-        $schema->storage->txn_begin;
-
-        my $biblio = $builder->build_sample_biblio;
-
-        my $mock = Test::MockModule->new('Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue');
-        $mock->mock( 'enqueue', sub {
-            my ( $self, $args ) = @_;
-            is_deeply(
-                $args->{biblio_ids},
-                [ $biblio->id ],
-                '->cancel triggers a holds queue update for the related biblio'
-            );
-        } );
-
-        # add a hold
-        $builder->build_object(
-            {
-                class => 'Koha::Holds',
-                value => {
-                    biblionumber   => $biblio->id,
-                }
-            }
-        );
-
-        C4::Biblio::DelBiblio( $biblio->id );
-
-        $schema->storage->txn_rollback;
-    };
 };
 
 subtest 'MarcFieldForCreatorAndModifier' => sub {
diff --git a/t/db_dependent/Biblio_holdsqueue.t b/t/db_dependent/Biblio_holdsqueue.t
new file mode 100755 (executable)
index 0000000..5753a3c
--- /dev/null
@@ -0,0 +1,106 @@
+#!/usr/bin/perl
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
+
+use Modern::Perl;
+
+use Test::More tests => 2;
+use Test::MockModule;
+
+use t::lib::Mocks;
+use t::lib::TestBuilder;
+
+use Koha::Database;
+
+my $schema = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'ModBiblio() + holds_queue update tests' => sub {
+
+    plan tests => 1;
+
+    $schema->storage->txn_begin;
+
+    my $biblio = $builder->build_sample_biblio;
+
+    my $mock = Test::MockModule->new('Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue');
+    $mock->mock( 'enqueue', sub {
+        my ( $self, $args ) = @_;
+        my ($package, $filename, $line) = caller;
+        is_deeply(
+            $args->{biblio_ids},
+            [ $biblio->id ],
+            'ModBiblio triggers a holds queue update for the related biblio'
+        );
+    } );
+
+    # add a hold
+    $builder->build_object(
+        {
+            class => 'Koha::Holds',
+            value => {
+                biblionumber   => $biblio->id,
+            }
+        }
+    );
+
+    # this call will trigger the mocked 'enqueue'
+    C4::Biblio::ModBiblio(
+        $biblio->metadata->record, $biblio->id,
+        $biblio->frameworkcode, { skip_holds_queue => 0 }
+    );
+
+    # this call will not trigger the mocked 'enqueue', so the test count is 1
+    C4::Biblio::ModBiblio(
+        $biblio->metadata->record, $biblio->id,
+        $biblio->frameworkcode, { skip_holds_queue => 1 }
+    );
+
+    $schema->storage->txn_rollback;
+};
+
+subtest 'DelBiblio + holds_queue update tests' => sub {
+
+    plan tests => 1;
+
+    $schema->storage->txn_begin;
+
+    my $biblio = $builder->build_sample_biblio;
+
+    my $mock = Test::MockModule->new('Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue');
+    $mock->mock( 'enqueue', sub {
+        my ( $self, $args ) = @_;
+        is_deeply(
+            $args->{biblio_ids},
+            [ $biblio->id ],
+            'DelBiblio triggers a holds queue update for the related biblio'
+        );
+    } );
+
+    # add a hold
+    $builder->build_object(
+        {
+            class => 'Koha::Holds',
+            value => {
+                biblionumber   => $biblio->id,
+            }
+        }
+    );
+
+    C4::Biblio::DelBiblio( $biblio->id );
+
+    $schema->storage->txn_rollback;
+};
index 45b5a73..3b542f9 100755 (executable)
@@ -52,7 +52,7 @@ subtest 'AddIssue() and AddReturn() real-time holds queue tests' => sub {
         is_deeply(
             $args->{biblio_ids},
             [ $item->biblionumber ],
-            "$action triggers a holds queue update for the related biblio from $package"
+            "$action triggers a holds queue update for the related biblio from $package at line $line"
         );
     } );