Line 0
Link Here
|
|
|
1 |
#!/usr/bin/env perl |
2 |
|
3 |
use Modern::Perl; |
4 |
use Test::More tests => 22; |
5 |
|
6 |
use Test::MockModule; |
7 |
use DBD::Mock; |
8 |
|
9 |
use_ok('C4::Members'); |
10 |
|
11 |
my $module_context = new Test::MockModule('C4::Context'); |
12 |
$module_context->mock( |
13 |
'_new_dbh', |
14 |
sub { |
15 |
my $dbh = DBI->connect( 'DBI:Mock:', '', '' ) |
16 |
|| die "Cannot create handle: $DBI::errstr\n"; |
17 |
return $dbh; |
18 |
} |
19 |
); |
20 |
|
21 |
my $dbh = C4::Context->dbh; |
22 |
my $rs = []; |
23 |
|
24 |
my $pref = "10"; |
25 |
set_pref( $module_context, $pref ); |
26 |
is_deeply( [ C4::Members::get_cardnumber_length() ], [ 10, 10 ], '10 => min=10 and max=10'); |
27 |
$dbh->{mock_add_resultset} = $rs; |
28 |
is( C4::Members::checkcardnumber( q{123456789} ), 2, "123456789 is shorter than $pref"); |
29 |
$dbh->{mock_add_resultset} = $rs; |
30 |
is( C4::Members::checkcardnumber( q{1234567890123456} ), 2, "1234567890123456 is longer than $pref"); |
31 |
$dbh->{mock_add_resultset} = $rs; |
32 |
is( C4::Members::checkcardnumber( q{1234567890} ), 0, "1234567890 is equal to $pref"); |
33 |
|
34 |
$pref = q|10,10|; # Same as before ! |
35 |
set_pref( $module_context, $pref ); |
36 |
is_deeply( [ C4::Members::get_cardnumber_length() ], [ 10, 10 ], '10,10 => min=10 and max=10'); |
37 |
$dbh->{mock_add_resultset} = $rs; |
38 |
is( C4::Members::checkcardnumber( q{123456789} ), 2, "123456789 is shorter than $pref"); |
39 |
$dbh->{mock_add_resultset} = $rs; |
40 |
is( C4::Members::checkcardnumber( q{1234567890123456} ), 2, "1234567890123456 is longer than $pref"); |
41 |
$dbh->{mock_add_resultset} = $rs; |
42 |
is( C4::Members::checkcardnumber( q{1234567890} ), 0, "1234567890 is equal to $pref"); |
43 |
|
44 |
$pref = q|8,10|; # between 8 and 10 chars |
45 |
set_pref( $module_context, $pref ); |
46 |
is_deeply( [ C4::Members::get_cardnumber_length() ], [ 8, 10 ], '8,10 => min=8 and max=10'); |
47 |
$dbh->{mock_add_resultset} = $rs; |
48 |
is( C4::Members::checkcardnumber( q{12345678} ), 0, "12345678 matches $pref"); |
49 |
$dbh->{mock_add_resultset} = $rs; |
50 |
is( C4::Members::checkcardnumber( q{1234567890123456} ), 2, "1234567890123456 is longer than $pref"); |
51 |
$dbh->{mock_add_resultset} = $rs; |
52 |
is( C4::Members::checkcardnumber( q{1234567} ), 2, "1234567 is shorter than $pref"); |
53 |
$dbh->{mock_add_resultset} = $rs; |
54 |
is( C4::Members::checkcardnumber( q{1234567890} ), 0, "1234567890 matches $pref"); |
55 |
|
56 |
$pref = q|8,|; # At least 8 chars |
57 |
set_pref( $module_context, $pref ); |
58 |
is_deeply( [ C4::Members::get_cardnumber_length() ], [ 8, 16 ], '8, => min=8 and max=16'); |
59 |
$dbh->{mock_add_resultset} = $rs; |
60 |
is( C4::Members::checkcardnumber( q{1234567} ), 2, "1234567 is shorter than $pref"); |
61 |
$dbh->{mock_add_resultset} = $rs; |
62 |
is( C4::Members::checkcardnumber( q{1234567890123456} ), 0, "1234567890123456 matches $pref"); |
63 |
$dbh->{mock_add_resultset} = $rs; |
64 |
is( C4::Members::checkcardnumber( q{1234567890} ), 0, "1234567890 matches $pref"); |
65 |
|
66 |
$pref = q|,8|; # max 8 chars |
67 |
set_pref( $module_context, $pref ); |
68 |
is_deeply( [ C4::Members::get_cardnumber_length() ], [ 1, 8 ], ',8 => min=1 and max=8'); |
69 |
$dbh->{mock_add_resultset} = $rs; |
70 |
is( C4::Members::checkcardnumber( q{1234567} ), 0, "1234567 matches $pref"); |
71 |
$dbh->{mock_add_resultset} = $rs; |
72 |
is( C4::Members::checkcardnumber( q{1234567890123456} ), 2, "1234567890123456 is longer than $pref"); |
73 |
$dbh->{mock_add_resultset} = $rs; |
74 |
is( C4::Members::checkcardnumber( q{1234567890} ), 2, "1234567890 is longer than $pref"); |
75 |
|
76 |
|
77 |
sub set_pref { |
78 |
my ( $module, $value ) = @_; |
79 |
$module->mock('preference', sub { return $value } ); |
80 |
} |