Lines 1099-1129
subtest checkin_withdrawn => sub {
Link Here
|
1099 |
}; |
1099 |
}; |
1100 |
|
1100 |
|
1101 |
subtest _get_sort_bin => sub { |
1101 |
subtest _get_sort_bin => sub { |
1102 |
plan tests => 6; |
1102 |
plan tests => 24; |
1103 |
|
1103 |
|
1104 |
my $library = $builder->build_object( { class => 'Koha::Libraries' } ); |
1104 |
my $library = $builder->build_object( { class => 'Koha::Libraries' } ); |
1105 |
my $branch = $library->branchcode; |
1105 |
my $branch = $library->branchcode; |
1106 |
my $library2 = $builder->build_object( { class => 'Koha::Libraries' } ); |
1106 |
my $library2 = $builder->build_object( { class => 'Koha::Libraries' } ); |
1107 |
my $branch2 = $library2->branchcode; |
1107 |
my $branch2 = $library2->branchcode; |
1108 |
|
1108 |
|
1109 |
# Rules starts with malformed line, empty line and a comment to prove they are skipped |
|
|
1110 |
my $rules = <<"RULES"; |
1111 |
$branch:homebranch:ne:\$holdingbranch:X\r |
1112 |
$branch:effective_itemtype:eq:CD:0\r |
1113 |
$branch:itemcallnumber:<:340:1\r |
1114 |
$branch:itemcallnumber:<:370:2\r |
1115 |
$branch:itemcallnumber:<:600:3\r |
1116 |
$branch2:homebranch:ne:\$holdingbranch:X\r |
1117 |
$branch2:effective_itemtype:eq:CD:4\r |
1118 |
$branch2:itemcallnumber:>:600:5\r |
1119 |
$branch2:effective_itemtype:eq:BOOK:ccode:eq:TEEN:6\r |
1120 |
# Comment line to skip\r |
1121 |
\r |
1122 |
$branch:homebranch:Z\r |
1123 |
RULES |
1124 |
|
1125 |
t::lib::Mocks::mock_preference( 'SIP2SortBinMapping', $rules ); |
1126 |
|
1127 |
my $item_cd = $builder->build_sample_item( |
1109 |
my $item_cd = $builder->build_sample_item( |
1128 |
{ |
1110 |
{ |
1129 |
library => $library->branchcode, |
1111 |
library => $library->branchcode, |
Lines 1156-1182
RULES
Link Here
|
1156 |
|
1138 |
|
1157 |
my $bin; |
1139 |
my $bin; |
1158 |
|
1140 |
|
|
|
1141 |
my @line_endings = ( "\n", "\r\n", "\r" ); |
1142 |
my %eol_display = ( "\n" => '\\n', "\r\n" => '\\r\\n', "\r" => '\\r' ); |
1143 |
|
1144 |
foreach my $eol (@line_endings) { |
1145 |
|
1146 |
# Rules contain malformed line, empty line and a comment to prove they are skipped |
1147 |
my $rules = join( |
1148 |
$eol, |
1149 |
( |
1150 |
"$branch:homebranch:ne:\$holdingbranch:X", |
1151 |
"$branch:effective_itemtype:eq:CD:0", |
1152 |
"$branch:itemcallnumber:<:340:1", |
1153 |
"$branch:itemcallnumber:<:370:2", |
1154 |
"$branch:itemcallnumber:<:600:3", |
1155 |
"$branch2:homebranch:ne:\$holdingbranch:X", |
1156 |
"$branch2:effective_itemtype:eq:CD:4", |
1157 |
"$branch2:itemcallnumber:>:600:5", |
1158 |
"$branch2:effective_itemtype:eq:BOOK:ccode:eq:TEEN:6", |
1159 |
"# Comment line to skip", |
1160 |
"", # Empty line |
1161 |
"$branch:homebranch:Z", # Malformed line |
1162 |
) |
1163 |
); |
1164 |
|
1165 |
t::lib::Mocks::mock_preference( 'SIP2SortBinMapping', $rules ); |
1166 |
|
1167 |
# Set holdingbranch as though item returned to library other than homebranch (As AddReturn would) |
1168 |
$item_cd->holdingbranch( $library2->branchcode )->store(); |
1169 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_cd, $library2->branchcode ); |
1170 |
is( $bin, 'X', "Item parameter on RHS of comparison works (ne comparator) with EOL '$eol_display{$eol}'" ); |
1171 |
|
1172 |
# Reset holdingbranch as though item returned to home library |
1173 |
$item_cd->holdingbranch( $library->branchcode )->store(); |
1174 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_cd, $library->branchcode ); |
1175 |
is( $bin, '0', "Fixed value on RHS of comparison works (eq comparator) with EOL '$eol_display{$eol}'" ); |
1176 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_book, $library->branchcode ); |
1177 |
is( $bin, '1', "Rules applied in order (< comparator) with EOL '$eol_display{$eol}'" ); |
1178 |
$item_book->itemcallnumber('350.20')->store(); |
1179 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_book, $library->branchcode ); |
1180 |
is( $bin, '2', "Rules applied in order (< comparator) with EOL '$eol_display{$eol}'" ); |
1181 |
|
1182 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_book2, $library2->branchcode ); |
1183 |
is( $bin, '6', "Rules with multiple field matches with EOL '$eol_display{$eol}'" ); |
1184 |
|
1185 |
warnings_are { $bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_dvd, $library2->branchcode ); } |
1186 |
["Malformed preference line found: '$branch:homebranch:Z'"], |
1187 |
"Comments and blank lines are skipped, Malformed lines are warned and skipped with EOL '$eol_display{$eol}'"; |
1188 |
|
1189 |
# Reset for next loop |
1190 |
$item_book->itemcallnumber('200.01')->store(); |
1191 |
} |
1192 |
|
1193 |
my $mixed_rules = |
1194 |
"$branch:homebranch:ne:\$holdingbranch:X\n$branch:effective_itemtype:eq:CD:0\r\n$branch:itemcallnumber:<:340:1\r$branch:itemcallnumber:<:370:2\r\n$branch:itemcallnumber:<:600:3\n$branch2:homebranch:ne:\$holdingbranch:X\r$branch2:effective_itemtype:eq:CD:4\r\n$branch2:itemcallnumber:>:600:5\n$branch2:effective_itemtype:eq:BOOK:ccode:eq:TEEN:6\r# Comment line to skip\r\n\r\n\n$branch:homebranch:Z"; |
1195 |
t::lib::Mocks::mock_preference( 'SIP2SortBinMapping', $mixed_rules ); |
1196 |
|
1159 |
# Set holdingbranch as though item returned to library other than homebranch (As AddReturn would) |
1197 |
# Set holdingbranch as though item returned to library other than homebranch (As AddReturn would) |
1160 |
$item_cd->holdingbranch( $library2->branchcode )->store(); |
1198 |
$item_cd->holdingbranch( $library2->branchcode )->store(); |
1161 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_cd, $library2->branchcode ); |
1199 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_cd, $library2->branchcode ); |
1162 |
is( $bin, 'X', "Item parameter on RHS of comparison works (ne comparator)" ); |
1200 |
is( $bin, 'X', "Item parameter on RHS of comparison works (ne comparator) with mixed EOL" ); |
1163 |
|
1201 |
|
1164 |
# Reset holdingbranch as though item returned to home library |
1202 |
# Reset holdingbranch as though item returned to home library |
1165 |
$item_cd->holdingbranch( $library->branchcode )->store(); |
1203 |
$item_cd->holdingbranch( $library->branchcode )->store(); |
1166 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_cd, $library->branchcode ); |
1204 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_cd, $library->branchcode ); |
1167 |
is( $bin, '0', "Fixed value on RHS of comparison works (eq comparator)" ); |
1205 |
is( $bin, '0', "Fixed value on RHS of comparison works (eq comparator) with mixed EOL" ); |
1168 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_book, $library->branchcode ); |
1206 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_book, $library->branchcode ); |
1169 |
is( $bin, '1', "Rules applied in order (< comparator)" ); |
1207 |
is( $bin, '1', "Rules applied in order (< comparator) with mixed EOL" ); |
1170 |
$item_book->itemcallnumber('350.20')->store(); |
1208 |
$item_book->itemcallnumber('350.20')->store(); |
1171 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_book, $library->branchcode ); |
1209 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_book, $library->branchcode ); |
1172 |
is( $bin, '2', "Rules applied in order (< comparator)" ); |
1210 |
is( $bin, '2', "Rules applied in order (< comparator) with mixed EOL" ); |
1173 |
|
1211 |
|
1174 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_book2, $library2->branchcode ); |
1212 |
$bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_book2, $library2->branchcode ); |
1175 |
is( $bin, '6', "Rules with multiple field matches" ); |
1213 |
is( $bin, '6', "Rules with multiple field matches with mixed EOL" ); |
1176 |
|
1214 |
|
1177 |
warnings_are { $bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_dvd, $library2->branchcode ); } |
1215 |
warnings_are { $bin = C4::SIP::ILS::Transaction::Checkin::_get_sort_bin( $item_dvd, $library2->branchcode ); } |
1178 |
["Malformed preference line found: '$branch:homebranch:Z'"], |
1216 |
["Malformed preference line found: '$branch:homebranch:Z'"], |
1179 |
"Comments and blank lines are skipped, Malformed lines are warned and skipped"; |
1217 |
"Comments and blank lines are skipped, Malformed lines are warned and skipped with mixed EOL"; |
|
|
1218 |
|
1180 |
}; |
1219 |
}; |
1181 |
|
1220 |
|
1182 |
subtest item_circulation_status => sub { |
1221 |
subtest item_circulation_status => sub { |
1183 |
- |
|
|