Bugzilla – Attachment 145992 Details for
Bug 32781
CreateEHoldingsFromBiblios not dealing with non-existent package correcly
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 32781: Prevent import from list to fail if package does not exist
Bug-32781-Prevent-import-from-list-to-fail-if-pack.patch (text/plain), 5.16 KB, created by
Pedro Amorim
on 2023-02-02 09:21:39 UTC
(
hide
)
Description:
Bug 32781: Prevent import from list to fail if package does not exist
Filename:
MIME Type:
Creator:
Pedro Amorim
Created:
2023-02-02 09:21:39 UTC
Size:
5.16 KB
patch
obsolete
>From 555597463597735b2de05fc5a4b413e84b594c1e Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Wed, 1 Feb 2023 16:23:59 +0100 >Subject: [PATCH] Bug 32781: Prevent import from list to fail if package does > not exist > >This is theorical (caught when writting tests) but we need to deal with >it. > >Can't call method "resources" on an undefined value at /kohadevbox/koha/Koha/BackgroundJob/CreateEHoldingsFromBiblios.pm line 94. > >Test plan: > prove t/db_dependent/Koha/BackgroundJob/CreateEHoldingsFromBiblios.t >must return green > >Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com> >--- > .../CreateEHoldingsFromBiblios.pm | 15 +++- > .../CreateEHoldingsFromBiblios.t | 89 ++++++++++++++----- > 2 files changed, 76 insertions(+), 28 deletions(-) > >diff --git a/Koha/BackgroundJob/CreateEHoldingsFromBiblios.pm b/Koha/BackgroundJob/CreateEHoldingsFromBiblios.pm >index 807b85fdab..3f071281a3 100644 >--- a/Koha/BackgroundJob/CreateEHoldingsFromBiblios.pm >+++ b/Koha/BackgroundJob/CreateEHoldingsFromBiblios.pm >@@ -66,6 +66,11 @@ sub process { > my @record_ids = @{ $args->{record_ids} }; > my $package_id = $args->{package_id}; > >+ my $report = { >+ total_records => scalar @record_ids, >+ total_success => 0, >+ }; >+ > my $package = Koha::ERM::EHoldings::Packages->find($package_id); > unless ( $package ) { > push @messages, { >@@ -73,12 +78,14 @@ sub process { > code => 'package_do_not_exist', > package_id => $package_id, > }; >+ >+ my $data = $self->decoded_data; >+ $data->{messages} = \@messages; >+ $data->{report} = $report; >+ >+ return $self->finish( $data ); > } > >- my $report = { >- total_records => scalar @record_ids, >- total_success => 0, >- }; > my $fix_coverage = sub { > my $coverage = shift || q{}; > my @coverages = split '-', $coverage; >diff --git a/t/db_dependent/Koha/BackgroundJob/CreateEHoldingsFromBiblios.t b/t/db_dependent/Koha/BackgroundJob/CreateEHoldingsFromBiblios.t >index d39a204079..aa829aa708 100755 >--- a/t/db_dependent/Koha/BackgroundJob/CreateEHoldingsFromBiblios.t >+++ b/t/db_dependent/Koha/BackgroundJob/CreateEHoldingsFromBiblios.t >@@ -49,31 +49,72 @@ subtest 'enqueue' => sub { > }; > > subtest 'process' => sub { >- plan tests => 1; >- >- $schema->storage->txn_begin; >+ plan tests => 2; > >- my $biblio = $builder->build_sample_biblio; >- >- my $package = >- Koha::ERM::EHoldings::Package->new( { name => 'a package' } )->store; >- >- my $job = Koha::BackgroundJob::CreateEHoldingsFromBiblios->new( >- { >- status => 'new', >- type => 'create_eholdings_from_biblios', >- size => 1, >- } >- )->store; >- $job = Koha::BackgroundJobs->find( $job->id ); >- my $data = { >- record_ids => [ $biblio->biblionumber ], >- package_id => $package->package_id, >+ subtest 'package_do_not_exist' => sub { >+ plan tests => 2; >+ >+ $schema->storage->txn_begin; >+ >+ my $biblio = $builder->build_sample_biblio; >+ my $package = >+ Koha::ERM::EHoldings::Package->new( { name => 'a package' } )->store; >+ >+ my $job = Koha::BackgroundJob::CreateEHoldingsFromBiblios->new( >+ { >+ status => 'new', >+ type => 'create_eholdings_from_biblios', >+ size => 1, >+ } >+ )->store; >+ $job = Koha::BackgroundJobs->find( $job->id ); >+ my $data = { >+ record_ids => [ $biblio->biblionumber ], >+ package_id => $package->package_id, >+ }; >+ my $json = $job->json->encode($data); >+ $job->data($json)->store; >+ $package->delete; # Delete the package >+ $job->process($data); >+ is( $job->report->{total_success}, 0 ); >+ is_deeply( >+ $job->messages, >+ [ >+ { >+ code => "package_do_not_exist", >+ package_id => $package->package_id, >+ type => "error" >+ } >+ ] >+ ); > }; >- my $json = $job->json->encode($data); >- $job->data($json)->store; >- $job->process($data); >- is( $job->report->{total_success}, 1 ); > >- $schema->storage->txn_rollback; >+ subtest 'all good' => sub { >+ plan tests => 1; >+ >+ $schema->storage->txn_begin; >+ >+ my $biblio = $builder->build_sample_biblio; >+ my $package = >+ Koha::ERM::EHoldings::Package->new( { name => 'a package' } )->store; >+ >+ my $job = Koha::BackgroundJob::CreateEHoldingsFromBiblios->new( >+ { >+ status => 'new', >+ type => 'create_eholdings_from_biblios', >+ size => 1, >+ } >+ )->store; >+ $job = Koha::BackgroundJobs->find( $job->id ); >+ my $data = { >+ record_ids => [ $biblio->biblionumber ], >+ package_id => $package->package_id, >+ }; >+ my $json = $job->json->encode($data); >+ $job->data($json)->store; >+ $job->process($data); >+ is( $job->report->{total_success}, 1 ); >+ >+ $schema->storage->txn_rollback; >+ }; > }; >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 32781
:
145959
|
145992
|
148077