Bug 23077: Fix import of cardnumber 0
authorNick Clemens <nick@bywatersolutions.com>
Tue, 2 Jul 2019 10:58:53 +0000 (10:58 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 5 Jul 2019 07:41:48 +0000 (08:41 +0100)
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Koha/Patrons/Import.pm
t/db_dependent/Koha/Patrons/Import.t

index d98e44d..b18db0d 100644 (file)
@@ -132,7 +132,8 @@ sub import_patrons {
                 }
             }
         }
-        $borrower{cardnumber} = undef unless $borrower{cardnumber};
+
+        $borrower{cardnumber} = undef if $borrower{cardnumber} eq "";
 
         # Check if borrower category code exists and if it matches to a known category. Pushing error to missing_criticals otherwise.
         $self->check_borrower_category($borrower{categorycode}, $borrowerline, $line_number, \@missing_criticals);
index 78470cd..b41a265 100644 (file)
@@ -18,7 +18,7 @@
 # along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 use Modern::Perl;
-use Test::More tests => 156;
+use Test::More tests => 157;
 use Test::Warn;
 
 # To be replaced by t::lib::Mock
@@ -397,12 +397,37 @@ subtest 'test_import_without_cardnumber' => sub {
     my $defaults = { cardnumber => "" }; #currently all the defaults come as "" if not filled
 
     my $result = $patrons_import->import_patrons($params_1, $defaults);
-    warn Data::Dumper::Dumper( $result );
     like($result->{feedback}->[1]->{value}, qr/^Squarepants \/ \d+/, 'First borrower imported as expected');
     like($result->{feedback}->[2]->{value}, qr/^Star \/ \d+/, 'Second borrower imported as expected');
 
 };
 
+subtest 'test_import_with_cardnumber_0' => sub {
+    plan tests => 2;
+
+    #Remove possible existing user with a "" as cardnumber
+    my $zero_card = Koha::Patrons->find({ cardnumber => 0 });
+    $zero_card->delete if $zero_card;
+
+    my $branchcode = $builder->build({ source => "Branch"})->{branchcode};
+    my $categorycode = $builder->build({ source => "Category"})->{categorycode};
+    my $csv_headers  = 'cardnumber,surname, branchcode, categorycode';
+    my $res_headers  = 'cardnumber,surname, branchcode, categorycode';
+    my $csv_nocard_1 = "0,Squarepants,$branchcode,$categorycode";
+
+    my $filename_1 = make_csv($temp_dir, $csv_headers, $csv_nocard_1);
+    open(my $handle_1, "<", $filename_1) or die "cannot open < $filename_1: $!";
+    my $params_1 = { file => $handle_1, };
+
+    my $defaults = { cardnumber => "" }; #currently all the defaults come as "" if not filled
+
+    my $result = $patrons_import->import_patrons($params_1, $defaults);
+    like($result->{feedback}->[1]->{value}, qr/^Squarepants \/ \d+/, 'First borrower imported as expected');
+    $zero_card = Koha::Patrons->find({ cardnumber => 0 });
+    is($zero_card->surname.$zero_card->branchcode.$zero_card->categorycode,'Squarepants'.$branchcode.$categorycode,"Patron with cardnumber 0 is the imported patron");
+
+};
+
 
 subtest 'test_prepare_columns' => sub {
     plan tests => 16;