Bug 18072: Add deprecation warning to C4::Circulation Branch Transfer Limit functions
[koha.git] / t / Members / cardnumber.t
blob47902f8a0bc5f4bbc1f69309f9306dff664fe79d
1 #!/usr/bin/env perl
3 use Modern::Perl;
4 use Module::Load::Conditional qw/check_install/;
5 use Test::More;
6 use Test::MockModule;
8 use t::lib::Mocks;
10 use Koha::Schema;
11 use_ok('C4::Members');
13 BEGIN {
14 if ( check_install( module => 'Test::DBIx::Class' ) ) {
15 plan tests => 25;
16 } else {
17 plan skip_all => "Need Test::DBIx::Class"
21 use Test::DBIx::Class;
23 my $db = Test::MockModule->new('Koha::Database');
24 $db->mock( _new_schema => sub { return Schema(); } );
26 my $dbh = C4::Context->dbh;
27 my $rs = [];
29 my $borrower = Koha::Schema->resultset('Borrower');
30 my $cardnumber_size = $borrower->result_source->column_info('cardnumber')->{size};
32 t::lib::Mocks::mock_preference('BorrowerMandatoryField', '');
33 my $pref = "10";
34 t::lib::Mocks::mock_preference('CardnumberLength', $pref);
35 is_deeply( [ C4::Members::get_cardnumber_length() ], [ 10, 10 ], '10 => min=10 and max=10');
36 $dbh->{mock_add_resultset} = $rs;
37 is( C4::Members::checkcardnumber( q{123456789} ), 2, "123456789 is shorter than $pref");
38 $dbh->{mock_add_resultset} = $rs;
39 is( C4::Members::checkcardnumber( q{1234567890123456} ), 2, "1234567890123456 is longer than $pref");
40 $dbh->{mock_add_resultset} = $rs;
41 is( C4::Members::checkcardnumber( q{1234567890} ), 0, "1234567890 is equal to $pref");
43 $pref = q|10,10|; # Same as before !
44 t::lib::Mocks::mock_preference('CardnumberLength', $pref);
45 is_deeply( [ C4::Members::get_cardnumber_length() ], [ 10, 10 ], '10,10 => min=10 and max=10');
46 $dbh->{mock_add_resultset} = $rs;
47 is( C4::Members::checkcardnumber( q{123456789} ), 2, "123456789 is shorter than $pref");
48 $dbh->{mock_add_resultset} = $rs;
49 is( C4::Members::checkcardnumber( q{1234567890123456} ), 2, "1234567890123456 is longer than $pref");
50 $dbh->{mock_add_resultset} = $rs;
51 is( C4::Members::checkcardnumber( q{1234567890} ), 0, "1234567890 is equal to $pref");
53 $pref = q|8,10|; # between 8 and 10 chars
54 t::lib::Mocks::mock_preference('CardnumberLength', $pref);
55 is_deeply( [ C4::Members::get_cardnumber_length() ], [ 8, 10 ], '8,10 => min=8 and max=10');
56 $dbh->{mock_add_resultset} = $rs;
57 is( C4::Members::checkcardnumber( q{12345678} ), 0, "12345678 matches $pref");
58 $dbh->{mock_add_resultset} = $rs;
59 is( C4::Members::checkcardnumber( q{1234567890123456} ), 2, "1234567890123456 is longer than $pref");
60 $dbh->{mock_add_resultset} = $rs;
61 is( C4::Members::checkcardnumber( q{1234567} ), 2, "1234567 is shorter than $pref");
62 $dbh->{mock_add_resultset} = $rs;
63 is( C4::Members::checkcardnumber( q{1234567890} ), 0, "1234567890 matches $pref");
65 $pref = q|8,|; # At least 8 chars
66 t::lib::Mocks::mock_preference('CardnumberLength', $pref);
67 is_deeply( [ C4::Members::get_cardnumber_length() ], [ 8, $cardnumber_size ], "8, => min=8 and max=$cardnumber_size");
68 $dbh->{mock_add_resultset} = $rs;
69 is( C4::Members::checkcardnumber( q{1234567} ), 2, "1234567 is shorter than $pref");
70 $dbh->{mock_add_resultset} = $rs;
71 is( C4::Members::checkcardnumber( q{1234567890123456} ), 0, "1234567890123456 matches $pref");
72 $dbh->{mock_add_resultset} = $rs;
73 is( C4::Members::checkcardnumber( q{1234567890} ), 0, "1234567890 matches $pref");
75 $pref = q|,8|; # max 8 chars
76 t::lib::Mocks::mock_preference('CardnumberLength', $pref);
77 is_deeply( [ C4::Members::get_cardnumber_length() ], [ 0, 8 ], ',8 => min=0 and max=8');
78 $dbh->{mock_add_resultset} = $rs;
79 is( C4::Members::checkcardnumber( q{1234567} ), 0, "1234567 matches $pref");
80 $dbh->{mock_add_resultset} = $rs;
81 is( C4::Members::checkcardnumber( q{1234567890123456} ), 2, "1234567890123456 is longer than $pref");
82 $dbh->{mock_add_resultset} = $rs;
83 is( C4::Members::checkcardnumber( q{1234567890} ), 2, "1234567890 is longer than $pref");
85 $pref = sprintf(',%d', $cardnumber_size+1);
86 t::lib::Mocks::mock_preference('CardnumberLength', $pref);
87 is_deeply( [ C4::Members::get_cardnumber_length() ], [ 0, $cardnumber_size ],
88 sprintf(",%d => min=0 and max=%d",$cardnumber_size+1,$cardnumber_size) );
89 $dbh->{mock_add_resultset} = $rs;
91 my $generated_cardnumber = sprintf("%s1234567890",q|9|x$cardnumber_size);
92 is( C4::Members::checkcardnumber( $generated_cardnumber ), 2, "$generated_cardnumber is longer than $pref => $cardnumber_size is max!");
94 $pref = q|,8|; # max 8 chars
95 t::lib::Mocks::mock_preference('CardnumberLength', $pref);
96 t::lib::Mocks::mock_preference('BorrowerMandatoryField', 'cardnumber');
97 is_deeply( [ C4::Members::get_cardnumber_length() ], [ 1, 8 ], ',8 => min=1 and max=8 if cardnumber is mandatory');