Bug 32394: [22.05.x] Regression tests
authorTomas Cohen Arazi <tomascohen@theke.io>
Wed, 14 Dec 2022 17:30:18 +0000 (14:30 -0300)
committerLucas Gass <lucas@bywatersolutions.com>
Wed, 1 Feb 2023 18:19:34 +0000 (18:19 +0000)
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
t/db_dependent/Koha/BackgroundJob/BatchCancelHold.t [new file with mode: 0755]
t/db_dependent/Koha/BackgroundJob/BatchDeleteAuthority.t [new file with mode: 0755]
t/db_dependent/Koha/BackgroundJob/BatchDeleteBiblio.t [new file with mode: 0755]
t/db_dependent/Koha/BackgroundJob/BatchDeleteItem.t [new file with mode: 0755]
t/db_dependent/Koha/BackgroundJob/BatchUpdateAuthority.t [new file with mode: 0755]
t/db_dependent/Koha/BackgroundJob/BatchUpdateBiblio.t [new file with mode: 0755]
t/db_dependent/Koha/BackgroundJob/BatchUpdateBiblioHoldsQueue.t [new file with mode: 0755]
t/db_dependent/Koha/BackgroundJob/BatchUpdateItem.t [new file with mode: 0755]
t/db_dependent/Koha/BackgroundJob/UpdateElasticIndex.t [new file with mode: 0755]

diff --git a/t/db_dependent/Koha/BackgroundJob/BatchCancelHold.t b/t/db_dependent/Koha/BackgroundJob/BatchCancelHold.t
new file mode 100755 (executable)
index 0000000..da9e4ca
--- /dev/null
@@ -0,0 +1,49 @@
+#!/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 => 1;
+
+use Koha::Database;
+use Koha::BackgroundJobs;
+use Koha::BackgroundJob::BatchCancelHold;
+
+use t::lib::Mocks;
+use t::lib::TestBuilder;
+
+my $schema  = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'enqueue() tests' => sub {
+
+    plan tests => 3;
+
+    $schema->storage->txn_begin;
+
+    my $reason   = 'Some reason';
+    my $hold_ids = [ 1, 2 ];
+
+    my $job_id = Koha::BackgroundJob::BatchCancelHold->new->enqueue( { hold_ids => $hold_ids }, reason => $reason );
+    my $job    = Koha::BackgroundJobs->find($job_id)->_derived_class;
+
+    is( $job->size,   scalar @{$hold_ids}, 'Size is correct' );
+    is( $job->status, 'new',               'Initial status set correctly' );
+    is( $job->queue,  'long_tasks',        'BatchUpdateItem should use the long_tasks queue' );
+
+    $schema->storage->txn_rollback;
+};
diff --git a/t/db_dependent/Koha/BackgroundJob/BatchDeleteAuthority.t b/t/db_dependent/Koha/BackgroundJob/BatchDeleteAuthority.t
new file mode 100755 (executable)
index 0000000..87302cf
--- /dev/null
@@ -0,0 +1,48 @@
+#!/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 => 1;
+
+use Koha::Database;
+use Koha::BackgroundJobs;
+use Koha::BackgroundJob::BatchDeleteAuthority;
+
+use t::lib::Mocks;
+use t::lib::TestBuilder;
+
+my $schema  = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'enqueue() tests' => sub {
+
+    plan tests => 3;
+
+    $schema->storage->txn_begin;
+
+    my $record_ids = [ 1, 2 ];
+
+    my $job_id = Koha::BackgroundJob::BatchDeleteAuthority->new->enqueue( { record_ids => $record_ids } );
+    my $job    = Koha::BackgroundJobs->find($job_id)->_derived_class;
+
+    is( $job->size,   scalar @{$record_ids}, 'Size is correct' );
+    is( $job->status, 'new',                 'Initial status set correctly' );
+    is( $job->queue,  'long_tasks',          'BatchUpdateItem should use the long_tasks queue' );
+
+    $schema->storage->txn_rollback;
+};
diff --git a/t/db_dependent/Koha/BackgroundJob/BatchDeleteBiblio.t b/t/db_dependent/Koha/BackgroundJob/BatchDeleteBiblio.t
new file mode 100755 (executable)
index 0000000..30e26bf
--- /dev/null
@@ -0,0 +1,48 @@
+#!/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 => 1;
+
+use Koha::Database;
+use Koha::BackgroundJobs;
+use Koha::BackgroundJob::BatchDeleteBiblio;
+
+use t::lib::Mocks;
+use t::lib::TestBuilder;
+
+my $schema  = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'enqueue() tests' => sub {
+
+    plan tests => 3;
+
+    $schema->storage->txn_begin;
+
+    my $record_ids = [ 1, 2 ];
+
+    my $job_id = Koha::BackgroundJob::BatchDeleteBiblio->new->enqueue( { record_ids => $record_ids } );
+    my $job    = Koha::BackgroundJobs->find($job_id)->_derived_class;
+
+    is( $job->size,   scalar @{$record_ids}, 'Size is correct' );
+    is( $job->status, 'new',                 'Initial status set correctly' );
+    is( $job->queue,  'long_tasks',          'BatchUpdateItem should use the long_tasks queue' );
+
+    $schema->storage->txn_rollback;
+};
diff --git a/t/db_dependent/Koha/BackgroundJob/BatchDeleteItem.t b/t/db_dependent/Koha/BackgroundJob/BatchDeleteItem.t
new file mode 100755 (executable)
index 0000000..1a45510
--- /dev/null
@@ -0,0 +1,48 @@
+#!/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 => 1;
+
+use Koha::Database;
+use Koha::BackgroundJobs;
+use Koha::BackgroundJob::BatchDeleteItem;
+
+use t::lib::Mocks;
+use t::lib::TestBuilder;
+
+my $schema  = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'enqueue() tests' => sub {
+
+    plan tests => 3;
+
+    $schema->storage->txn_begin;
+
+    my $record_ids = [ 1, 2 ];
+
+    my $job_id = Koha::BackgroundJob::BatchDeleteItem->new->enqueue( { record_ids => $record_ids } );
+    my $job    = Koha::BackgroundJobs->find($job_id)->_derived_class;
+
+    is( $job->size,   scalar @{$record_ids}, 'Size is correct' );
+    is( $job->status, 'new',                 'Initial status set correctly' );
+    is( $job->queue,  'long_tasks',          'BatchUpdateItem should use the long_tasks queue' );
+
+    $schema->storage->txn_rollback;
+};
diff --git a/t/db_dependent/Koha/BackgroundJob/BatchUpdateAuthority.t b/t/db_dependent/Koha/BackgroundJob/BatchUpdateAuthority.t
new file mode 100755 (executable)
index 0000000..9e9c223
--- /dev/null
@@ -0,0 +1,56 @@
+#!/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 => 1;
+
+use Koha::Database;
+use Koha::BackgroundJobs;
+use Koha::BackgroundJob::BatchUpdateAuthority;
+
+use t::lib::Mocks;
+use t::lib::TestBuilder;
+
+my $schema  = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'enqueue() tests' => sub {
+
+    plan tests => 5;
+
+    $schema->storage->txn_begin;
+
+    # FIXME: Should be an exception
+    my $job_id = Koha::BackgroundJob::BatchUpdateAuthority->new->enqueue();
+    is( $job_id, undef, 'Nothing enqueued if missing params' );
+
+    # FIXME: Should be an exception
+    $job_id = Koha::BackgroundJob::BatchUpdateAuthority->new->enqueue( { record_ids => undef } );
+    is( $job_id, undef, "Nothing enqueued if missing 'mmtid' param" );
+
+    my $record_ids = [ 1, 2 ];
+
+    $job_id = Koha::BackgroundJob::BatchUpdateAuthority->new->enqueue( { record_ids => $record_ids, mmtid => 'thing' } );
+    my $job = Koha::BackgroundJobs->find($job_id)->_derived_class;
+
+    is( $job->size,   scalar @{$record_ids}, 'Size is correct' );
+    is( $job->status, 'new',                 'Initial status set correctly' );
+    is( $job->queue,  'long_tasks',          'BatchUpdateItem should use the long_tasks queue' );
+
+    $schema->storage->txn_rollback;
+};
diff --git a/t/db_dependent/Koha/BackgroundJob/BatchUpdateBiblio.t b/t/db_dependent/Koha/BackgroundJob/BatchUpdateBiblio.t
new file mode 100755 (executable)
index 0000000..9a21b3b
--- /dev/null
@@ -0,0 +1,56 @@
+#!/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 => 1;
+
+use Koha::Database;
+use Koha::BackgroundJobs;
+use Koha::BackgroundJob::BatchUpdateBiblio;
+
+use t::lib::Mocks;
+use t::lib::TestBuilder;
+
+my $schema  = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'enqueue() tests' => sub {
+
+    plan tests => 5;
+
+    $schema->storage->txn_begin;
+
+    # FIXME: Should be an exception
+    my $job_id = Koha::BackgroundJob::BatchUpdateBiblio->new->enqueue();
+    is( $job_id, undef, 'Nothing enqueued if missing params' );
+
+    # FIXME: Should be an exception
+    $job_id = Koha::BackgroundJob::BatchUpdateBiblio->new->enqueue( { record_ids => undef } );
+    is( $job_id, undef, "Nothing enqueued if missing 'mmtid' param" );
+
+    my $record_ids = [ 1, 2 ];
+
+    $job_id = Koha::BackgroundJob::BatchUpdateBiblio->new->enqueue( { record_ids => $record_ids, mmtid => 'thing' } );
+    my $job = Koha::BackgroundJobs->find($job_id)->_derived_class;
+
+    is( $job->size,   scalar @{$record_ids}, 'Size is correct' );
+    is( $job->status, 'new',                 'Initial status set correctly' );
+    is( $job->queue,  'long_tasks',          'BatchUpdateItem should use the long_tasks queue' );
+
+    $schema->storage->txn_rollback;
+};
diff --git a/t/db_dependent/Koha/BackgroundJob/BatchUpdateBiblioHoldsQueue.t b/t/db_dependent/Koha/BackgroundJob/BatchUpdateBiblioHoldsQueue.t
new file mode 100755 (executable)
index 0000000..17e948a
--- /dev/null
@@ -0,0 +1,56 @@
+#!/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 => 1;
+use Test::Exception;
+
+use Koha::Database;
+use Koha::BackgroundJobs;
+use Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue;
+
+use t::lib::Mocks;
+use t::lib::TestBuilder;
+
+my $schema  = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'enqueue() tests' => sub {
+
+    plan tests => 5;
+
+    $schema->storage->txn_begin;
+
+    my $biblio_ids = [ 1, 2 ];
+
+    throws_ok
+        { Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue->new->enqueue() }
+        'Koha::Exceptions::MissingParameter',
+        "Exception thrown if 'biblio_ids' param is missing";
+
+    like( "$@", qr/Missing biblio_ids parameter is mandatory/, 'Expected exception message' );
+
+    my $job_id = Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue->new->enqueue( { biblio_ids => $biblio_ids } );
+    my $job    = Koha::BackgroundJobs->find($job_id)->_derived_class;
+
+    is( $job->size,   scalar @{$biblio_ids}, 'Size is correct' );
+    is( $job->status, 'new',                 'Initial status set correctly' );
+    is( $job->queue,  'default',             'BatchUpdateItem should use the default queue' );
+
+    $schema->storage->txn_rollback;
+};
diff --git a/t/db_dependent/Koha/BackgroundJob/BatchUpdateItem.t b/t/db_dependent/Koha/BackgroundJob/BatchUpdateItem.t
new file mode 100755 (executable)
index 0000000..83b38b0
--- /dev/null
@@ -0,0 +1,48 @@
+#!/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 => 1;
+
+use Koha::Database;
+use Koha::BackgroundJobs;
+use Koha::BackgroundJob::BatchUpdateItem;
+
+use t::lib::Mocks;
+use t::lib::TestBuilder;
+
+my $schema  = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'enqueue() tests' => sub {
+
+    plan tests => 3;
+
+    $schema->storage->txn_begin;
+
+    my $record_ids = [ 1, 2 ];
+
+    my $job_id = Koha::BackgroundJob::BatchUpdateItem->new->enqueue( { record_ids => $record_ids } );
+    my $job    = Koha::BackgroundJobs->find($job_id)->_derived_class;
+
+    is( $job->size,   scalar @{$record_ids}, 'Size is correct' );
+    is( $job->status, 'new',                 'Initial status set correctly' );
+    is( $job->queue,  'long_tasks',          'BatchUpdateItem should use the long_tasks queue' );
+
+    $schema->storage->txn_rollback;
+};
diff --git a/t/db_dependent/Koha/BackgroundJob/UpdateElasticIndex.t b/t/db_dependent/Koha/BackgroundJob/UpdateElasticIndex.t
new file mode 100755 (executable)
index 0000000..ee8fd38
--- /dev/null
@@ -0,0 +1,56 @@
+#!/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 => 1;
+
+use Koha::Database;
+use Koha::BackgroundJobs;
+use Koha::BackgroundJob::UpdateElasticIndex;
+
+use t::lib::Mocks;
+use t::lib::TestBuilder;
+
+my $schema  = Koha::Database->new->schema;
+my $builder = t::lib::TestBuilder->new;
+
+subtest 'enqueue() tests' => sub {
+
+    plan tests => 5;
+
+    $schema->storage->txn_begin;
+
+    # FIXME: Should be an exception
+    my $job_id = Koha::BackgroundJob::UpdateElasticIndex->new->enqueue();
+    is( $job_id, undef, 'Nothing enqueued if missing params' );
+
+    # FIXME: Should be an exception
+    $job_id = Koha::BackgroundJob::UpdateElasticIndex->new->enqueue( { record_ids => undef } );
+    is( $job_id, undef, "Nothing enqueued if missing 'record_server' param" );
+
+    my $record_ids = [ 1, 2 ];
+
+    $job_id = Koha::BackgroundJob::UpdateElasticIndex->new->enqueue( { record_ids => $record_ids, record_server => 'thing' } );
+    my $job = Koha::BackgroundJobs->find($job_id)->_derived_class;
+
+    is( $job->size,   1,         'Size is correct' );
+    is( $job->status, 'new',     'Initial status set correctly' );
+    is( $job->queue,  'default', 'BatchUpdateItem should use the default queue' );
+
+    $schema->storage->txn_rollback;
+};