|
Lines 1-25
Link Here
|
| 1 |
#!/usr/bin/perl |
1 |
#!/usr/bin/perl |
| 2 |
# |
|
|
| 3 |
# This Koha test module is a stub! |
| 4 |
# Add more tests here!!! |
| 5 |
|
| 6 |
use strict; |
| 7 |
use warnings; |
| 8 |
|
2 |
|
|
|
3 |
use Modern::Perl; |
| 4 |
use Test::More tests => 3; |
| 9 |
use Test::NoWarnings; |
5 |
use Test::NoWarnings; |
| 10 |
use Test::More tests => 4; |
6 |
use Test::Warn; |
|
|
7 |
use t::lib::Mocks; |
| 8 |
use C4::ClassSortRoutine::Generic qw( get_class_sort_key ); |
| 9 |
|
| 10 |
subtest 'class_sort_key' => sub { |
| 11 |
t::lib::Mocks::mock_preference( 'ClassSortGenericFormats', q{} ); |
| 12 |
|
| 13 |
my $cn_class = "My class "; |
| 14 |
my $cn_item = " hellO"; |
| 15 |
|
| 16 |
my $cn_sort = C4::ClassSortRoutine::Generic::get_class_sort_key( $cn_class, $cn_item ); |
| 17 |
is( $cn_sort, "MY_CLASS_HELLO", "testing cnsort" ); |
| 18 |
|
| 19 |
$cn_sort = C4::ClassSortRoutine::Generic::get_class_sort_key(); |
| 20 |
is( $cn_sort, "", "Testing with undef" ); |
| 21 |
|
| 22 |
$cn_sort = C4::ClassSortRoutine::Generic::get_class_sort_key(' 1 A 2 '); |
| 23 |
is( $cn_sort, '1_A_2', 'Removed leading and trailing whitespace' ); |
| 24 |
}; |
| 25 |
|
| 26 |
subtest '_zero_pad_callnum' => sub { |
| 27 |
t::lib::Mocks::mock_preference( 'ClassSortGenericFormats', '\s[A-Z]\s:1,4;1,3' ); |
| 28 |
|
| 29 |
# Trivial tests |
| 30 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum(), undef ); |
| 31 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum(q{}), q{} ); |
| 32 |
|
| 33 |
# Filter does not match |
| 34 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('1 @ 2'), '1 @ 2' ); |
| 11 |
|
35 |
|
| 12 |
BEGIN { |
36 |
# Format does not match (no two digit groups) |
| 13 |
use_ok('C4::ClassSortRoutine::Generic'); |
37 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('2 T (a)'), '2 T (a)' ); |
| 14 |
} |
|
|
| 15 |
|
38 |
|
| 16 |
my $cn_class = "My class "; |
39 |
# Matching (two) digit groups |
| 17 |
my $cn_item = " hellO"; |
40 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('0 A 23 test 45'), '0000 A 023 test 45' ); |
|
|
41 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('12 A 234 test 456'), '0012 A 234 test 456' ); |
| 42 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('123 A 1234 test 3456'), '0123 A 1234 test 3456' ); |
| 43 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('1234 A 12345 test 34567'), '1234 A 12345 test 34567' ); |
| 44 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('12345 A 12345 test 34567'), '12345 A 12345 test 34567' ); |
| 18 |
|
45 |
|
| 19 |
my $cn_sort = C4::ClassSortRoutine::Generic::get_class_sort_key( $cn_class, $cn_item ); |
46 |
# Invalid filter, invalid format (zero or empty string, no semicolon) |
|
|
47 |
t::lib::Mocks::mock_preference( 'ClassSortGenericFormats', '^BC):1,4;1,3' ); |
| 48 |
my $result; |
| 49 |
warning_like { $result = C4::ClassSortRoutine::Generic::_zero_pad_callnum('BC 11 A 2') } |
| 50 |
qr/bad filter/, 'Got a warn about bad filter'; |
| 51 |
is( $result, 'BC 11 A 2' ); |
| 52 |
t::lib::Mocks::mock_preference( 'ClassSortGenericFormats', '^BC:1,4;0,3' ); |
| 53 |
warning_like { $result = C4::ClassSortRoutine::Generic::_zero_pad_callnum('BC 11 A 2') } |
| 54 |
qr/bad format/, 'Got a warn about bad format'; |
| 55 |
is( $result, 'BC 11 A 2' ); |
| 56 |
t::lib::Mocks::mock_preference( 'ClassSortGenericFormats', '^BC:1,4;,3' ); |
| 57 |
warning_like { $result = C4::ClassSortRoutine::Generic::_zero_pad_callnum('BC 11 A 2') } |
| 58 |
qr/bad format/, 'Got a warn about bad format'; |
| 59 |
is( $result, 'BC 11 A 2' ); |
| 60 |
t::lib::Mocks::mock_preference( 'ClassSortGenericFormats', '^BC:2,4,1,3' ); |
| 61 |
warning_like { $result = C4::ClassSortRoutine::Generic::_zero_pad_callnum('BC 11 A 2') } |
| 62 |
qr/bad format/, 'Got a warn about bad format'; |
| 63 |
is( $result, 'BC 11 A 2' ); |
| 20 |
|
64 |
|
| 21 |
is( $cn_sort, "MY_CLASS_HELLO", "testing cnsort" ); |
65 |
# Correct the format |
|
|
66 |
t::lib::Mocks::mock_preference( 'ClassSortGenericFormats', '^BC: 2,4; 1,3' ); |
| 67 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('BC 11 A 2'), 'BC 0011 A 002' ); |
| 22 |
|
68 |
|
| 23 |
$cn_sort = C4::ClassSortRoutine::Generic::get_class_sort_key( undef, undef ); |
69 |
# First digit group too short, last group not included in format |
|
|
70 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('BC 1 22 A 3 4'), 'BC 1 0022 A 003 4' ); |
| 24 |
|
71 |
|
| 25 |
is( $cn_sort, "", "Testing blank cnsort" ); |
72 |
# More formats (hitting each one once, and finally no one) |
|
|
73 |
t::lib::Mocks::mock_preference( 'ClassSortGenericFormats', '^BC:2,4;2,3;;^B:2,3;;1,2;1,2;1,2' ); |
| 74 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('BC 11 A 22'), 'BC 0011 A 022' ); |
| 75 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('BC 11 A 2'), 'BC 011 A 2' ); |
| 76 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('BC 1 A 2 3'), 'BC 01 A 02 03' ); |
| 77 |
is( C4::ClassSortRoutine::Generic::_zero_pad_callnum('BC 1 A 2 X'), 'BC 1 A 2 X' ); |
| 78 |
}; |
| 26 |
- |
|
|