From f3c1d27b0a942b4c98c0b5cb83d663719cadad16 Mon Sep 17 00:00:00 2001 From: Lucas Gass Date: Thu, 11 Jul 2024 17:16:32 +0000 Subject: [PATCH] BWS-PKG - Bug 37316 - Cannot add items to basket via file if barcodes not supplied Bug 37316: Add tests Signed-off-by: Martin Renvoize Bug 37316: Treat empty string barcodes as undef To test: 1.Add the following to MarcItemFieldsToOrder: homebranch: 949$a holdingbranch: 949$b itype: 949$y nonpublic_note: 949$x public_note: 949$z loc: 949$c ccode: 949$8 notforloan: 949$7 uri: 949$u copyno: 949$t price: 949$g|949$j replacementprice: 949$v itemcallnumber: 949$o quantity: 949$k budget_code: 949$l coded_location_qualifier: 949$f enumchron: 949$h 2. Add the following to MarcFieldsToOrder: price: 949$g quantity: 949$k budget_code: 949$l discount: 949$m sort1: 949$n sort2: 949$q 3. Acquisitions > Find a vendor 4. Create a new basket -> Add to basket -> From new file 5. Use the file uplodaded in this bug report. 6. Set format to MARCXML and stage for import. 7. Add staged files to basket 8. Select all, make sure you add an item type, and choose 'Do not look for matching records' 9. Save and kaboom. 10. APPLY PATCH and restart_all 11. Follow the steps again, this time no kaboom. Signed-off-by: Martin Renvoize Bug 37316: Adjust tests Signed-off-by: Eric Garcia Signed-off-by: Martin Renvoize --- Koha/Item.pm | 3 +++ t/db_dependent/Koha/Item.t | 29 ++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Koha/Item.pm b/Koha/Item.pm index 91c15b22d5..247fae7cde 100644 --- a/Koha/Item.pm +++ b/Koha/Item.pm @@ -98,6 +98,9 @@ sub store { $self->itype($self->biblio->biblioitem->itemtype); } + # Ensure barcode is either defined or undef + $self->barcode(undef) if $self->barcode eq ''; + $self->barcode( C4::Circulation::barcodedecode( $self->barcode ) ); my $today = dt_from_string; diff --git a/t/db_dependent/Koha/Item.t b/t/db_dependent/Koha/Item.t index 5df382edf5..bd4748bb86 100755 --- a/t/db_dependent/Koha/Item.t +++ b/t/db_dependent/Koha/Item.t @@ -20,7 +20,7 @@ use Modern::Perl; use utf8; -use Test::More tests => 34; +use Test::More tests => 35; use Test::Exception; use Test::MockModule; @@ -843,6 +843,33 @@ subtest 'request_transfer' => sub { $schema->storage->txn_rollback; }; +subtest 'store check barcodes' => sub { + + plan tests => 3; + + $schema->storage->txn_begin; + + my $biblio = $builder->build_sample_biblio(); + + my $item = $builder->build_sample_item( + { + biblionumber => $biblio->biblionumber, + } + ); + + $item->barcode("")->store(); + $item->discard_changes; + is( $item->barcode, undef, 'Empty string barcodes are treated as undef' ); + + $item->barcode("123456789")->store(); + $item->discard_changes; + is( $item->barcode, "123456789", 'Non-empty string barcodes are unchanged' ); + + $item->barcode(undef)->store(); + $item->discard_changes; + is( $item->barcode, undef, 'undef barcodes remain undef' ); +}; + subtest 'deletion' => sub { plan tests => 15;