From a1533ce2a6ff02f665838b0c7137c8506a3c6934 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 13 Sep 2016 15:43:50 +0100 Subject: [PATCH] Bug 15690: CardnumberLength should not be bigger than 16 borrowers.cardnumber is a varchar(16), so CardnumberLength should not have a max > 16 Test plan: Test different value in CardnumberLength ("20", "20,30", "40,") Edit a patron a make sure the text display under the cardnumber input is correct Signed-off-by: Mark Tompsett Signed-off-by: Marc --- C4/Members.pm | 1 + .../prog/en/modules/admin/preferences/patrons.pref | 2 +- t/Members/cardnumber.t | 10 +++++++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/C4/Members.pm b/C4/Members.pm index 4b2d7ff..aa309e4 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -1156,6 +1156,7 @@ sub get_cardnumber_length { } } + $min = 16 if $min > 16; return ( $min, $max ); } diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref index 2f2faa0..a867849 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref @@ -160,7 +160,7 @@ Patrons: - Card numbers for patrons must be - pref: CardnumberLength - "characters long. The length can be a single number to specify an exact length, a range separated by a comma (i.e., 'Min,Max'), or a maximum with no minimum (i.e., ',Max')." - - "If 'cardnumber' is included in the BorrowerMandatoryField list, the minimum length, if not specified here, defaults to one." + - "If 'cardnumber' is included in the BorrowerMandatoryField list, the minimum length, if not specified here, defaults to one. Maximum cannot be bigger than 16." - - pref: useDischarge choices: diff --git a/t/Members/cardnumber.t b/t/Members/cardnumber.t index b2ec79f..deb76de 100644 --- a/t/Members/cardnumber.t +++ b/t/Members/cardnumber.t @@ -1,7 +1,7 @@ #!/usr/bin/env perl use Modern::Perl; -use Test::More tests => 23; +use Test::More tests => 25; use t::lib::Mocks; @@ -67,5 +67,13 @@ is( C4::Members::checkcardnumber( q{1234567890123456} ), 2, "1234567890123456 is $dbh->{mock_add_resultset} = $rs; is( C4::Members::checkcardnumber( q{1234567890} ), 2, "1234567890 is longer than $pref"); +$pref = q|,40|; # max 40 chars, not allowed +t::lib::Mocks::mock_preference('CardnumberLength', $pref); +is_deeply( [ C4::Members::get_cardnumber_length() ], [ 0, 16 ], ',40 => min=0 and max=16'); +$dbh->{mock_add_resultset} = $rs; +is( C4::Members::checkcardnumber( q{12345678901234567890} ), 2, "12345678901234567890 is longer than $pref => 16 is max!"); + +$pref = q|,8|; # max 8 chars +t::lib::Mocks::mock_preference('CardnumberLength', $pref); t::lib::Mocks::mock_preference('BorrowerMandatoryField', 'cardnumber'); is_deeply( [ C4::Members::get_cardnumber_length() ], [ 1, 8 ], ',8 => min=1 and max=8 if cardnumber is mandatory'); -- 2.1.4