d24d147831
Implement the optional fields: CR CS CT CV CY and DA. Also silenced some outstanding debugging print statements. Consolidated similar accesseor subs in Patron.pm to use x_items. Adjust SIP tests to specify correct AP (location). Add a 3rd item to SIPtext.pm for later use. Note CT (destination) is currently populated with destination branch code. We can adjust that to be destination branch name, or some combination in a subsequent patch if necessary. This work was sponsored by the Northeast Kansas Library system. Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
153 lines
4.3 KiB
Perl
153 lines
4.3 KiB
Perl
#!/usr/bin/perl
|
|
# renew: test Renew Response
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Clone qw(clone);
|
|
|
|
use Sip::Constants qw(:all);
|
|
|
|
use SIPtest qw(:basic :user1 :item1);
|
|
|
|
my $checkout_template = {
|
|
id => "Renew: prep: check out item ($item_barcode) to patron ($user_barcode)",
|
|
msg => "11YN20060329 203000 AO$instid|AA$user_barcode|AB$item_barcode|AC|",
|
|
pat => qr/^121NNY$datepat/,
|
|
fields => [],
|
|
};
|
|
|
|
my $checkin_template = {
|
|
id => "Renew: cleanup: check in item ($item_barcode)",
|
|
msg => "09N20060102 08423620060113 084235AP$item_owner|AO$instid|AB$item_barcode|AC$password|",
|
|
pat => qr/^101YNN$datepat/,
|
|
fields => [],
|
|
};
|
|
|
|
# my $hold_template = {
|
|
# id => 'Renew: prep: place hold on item',
|
|
# msg =>"15+20060415 110158BW20060815 110158|BSTaylor|BY2|AO$instid|AAmiker|AB$item_barcode|",
|
|
# pat => qr/^161N$datepat/,
|
|
# fields => [],
|
|
# };
|
|
#
|
|
# my $cancel_hold_template = {
|
|
# id => 'Renew: cleanup: cancel hold on item',
|
|
# msg =>"15-20060415 110158BW20060815 110158|BSTaylor|BY2|AO$instid|AAmiker|AB$item_barcode|",
|
|
# pat => qr/^161[NY]$datepat/,
|
|
# fields => [],
|
|
# };
|
|
#
|
|
|
|
my $renew_test_template = {
|
|
id => "Renew: RENEW 1, item ($item_barcode) to patron ($user_barcode), renewal OK, no 3rd party, no fees",
|
|
msg => "29NN20060102 084236 AO$instid|AA$user_barcode|AB$item_barcode|",
|
|
pat => qr/^301Y[UN][UN]$datepat/,
|
|
fields => [
|
|
$SIPtest::field_specs{(FID_INST_ID)},
|
|
$SIPtest::field_specs{(FID_SCREEN_MSG)},
|
|
$SIPtest::field_specs{(FID_PRINT_LINE)},
|
|
{ field => FID_PATRON_ID,
|
|
pat => qr/^$user_barcode$/,
|
|
required => 1, },
|
|
{ field => FID_ITEM_ID,
|
|
pat => qr/^$item_barcode$/,
|
|
required => 1, },
|
|
{ field => FID_TITLE_ID,
|
|
pat => qr/^$item_title\s*$/,
|
|
required => 1, },
|
|
{ field => FID_DUE_DATE,
|
|
pat => qr/^$datepat$/,
|
|
required => 1, },
|
|
{ field => FID_SECURITY_INHIBIT,
|
|
pat => qr/^[YN]$/,
|
|
required => 0, },
|
|
],
|
|
};
|
|
|
|
my @tests = (
|
|
$SIPtest::login_test,
|
|
$SIPtest::sc_status_test,
|
|
$checkout_template,
|
|
$renew_test_template,
|
|
);
|
|
|
|
SIPtest::run_sip_tests(@tests); exit; # debug hack
|
|
|
|
my $test;
|
|
|
|
# Renew: item checked out, identify by title
|
|
#$test = clone($renew_test_template);
|
|
#$test->{id} = 'Renew: identify item by title';
|
|
#$test->{msg} =~ s/AB$item_barcode\|/AJ$item_title|/;
|
|
## Everything else should be the same
|
|
#push @tests, $test;
|
|
#
|
|
## Renew: Item checked out, but another patron has placed a hold
|
|
#$test = clone($renew_test_template);
|
|
#$test->{id} = 'Renew: Item has outstanding hold';
|
|
#$test->{pat} = qr/^300NUN$datepat/;
|
|
#foreach my $field (@{$test->{fields}}) {
|
|
# if ($field->{field} eq FID_DUE_DATE || $field->{field} eq FID_TITLE_ID) {
|
|
# $field->{pat} = qr/^$/;
|
|
# }
|
|
#}
|
|
#
|
|
#push @tests, $hold_template, $test, $cancel_hold_template;
|
|
#
|
|
#
|
|
# Tests for impossible renewals.
|
|
#
|
|
# Renew: item not checked out. Basically the same, except
|
|
# for the leader test.
|
|
|
|
$test = clone($renew_test_template);
|
|
$test->{id} = 'Renew: item not checked out at all';
|
|
$test->{pat} = qr/^300NUN$datepat/;
|
|
foreach my $field (@{$test->{fields}}) {
|
|
if ($field->{field} eq FID_DUE_DATE) {
|
|
$field->{pat} = qr/^$/;
|
|
} elsif ($field->{field} eq FID_TITLE_ID) {
|
|
$field->{pat} = qr/^($item_title\s*|)$/;
|
|
}
|
|
}
|
|
|
|
push @tests, $checkin_template, $test;
|
|
|
|
$test = clone($renew_test_template);
|
|
$test->{id} = 'Renew: Invalid item (bad-item)';
|
|
$test->{msg} =~ s/AB[^|]+/ABbad-item/;
|
|
$test->{pat} = qr/^300NUN$datepat/;
|
|
foreach my $field (@{$test->{fields}}) {
|
|
if ($field->{field} eq FID_TITLE_ID || $field->{field} eq FID_DUE_DATE) {
|
|
$field->{pat} = qr/^$/;
|
|
} elsif ($field->{field} eq FID_ITEM_ID) {
|
|
$field->{pat} = qr/^bad-item$/;
|
|
}
|
|
}
|
|
|
|
push @tests, $test;
|
|
|
|
$test = clone($renew_test_template);
|
|
$test->{id} = 'Renew: Invalid user (bad_barcode)';
|
|
$test->{msg} =~ s/AA$user_barcode/AAbad_barcode/;
|
|
$test->{pat} = qr/^300NUN$datepat/;
|
|
foreach my $field (@{$test->{fields}}) {
|
|
if ($field->{field} eq FID_DUE_DATE) {
|
|
$field->{pat} = qr/^$/;
|
|
} elsif ($field->{field} eq FID_PATRON_ID) {
|
|
$field->{pat} = qr/^bad_barcode$/;
|
|
} elsif ($field->{field} eq FID_TITLE_ID) {
|
|
$field->{pat} = qr/^($item_title\s*|)$/;
|
|
}
|
|
}
|
|
|
|
push @tests, $test;
|
|
|
|
# Still need tests for
|
|
# - renewing a for-fee item
|
|
# - patrons that are not permitted to renew
|
|
# - renewing item that has reached limit on number of renewals
|
|
|
|
SIPtest::run_sip_tests(@tests);
|
|
|
|
1;
|