2 # renew: test Renew Response
8 use Sip::Constants qw(:all);
10 use SIPtest qw($datepat $textpat $instid $currency $user_barcode
11 $item_barcode $item_title);
13 my $checkout_template = {
14 id => 'Renew: prep: check out item',
15 msg => "11YN20060329 203000 AO$instid|AA$user_barcode|AB$item_barcode|AC|",
16 pat => qr/^121NNY$datepat/,
20 my $checkin_template = {
21 id => 'Renew: prep: check in item',
22 msg => "09N20060102 08423620060113 084235APUnder the bed|AO$instid|AB$item_barcode|ACterminal password|",
23 pat => qr/^101YNN$datepat/,
27 #my $hold_template = {
28 # id => 'Renew: prep: place hold on item',
29 # msg =>"15+20060415 110158BW20060815 110158|BSTaylor|BY2|AO$instid|AAmiker|AB$item_barcode|",
30 # pat => qr/^161N$datepat/,
34 #my $cancel_hold_template = {
35 # id => 'Renew: cleanup: cancel hold on item',
36 # msg =>"15-20060415 110158BW20060815 110158|BSTaylor|BY2|AO$instid|AAmiker|AB$item_barcode|",
37 # pat => qr/^161[NY]$datepat/,
42 my $renew_test_template = {
43 id => 'Renew: item id checked out to patron, renewal permitted, no 3rd party, no fees',
44 msg => "29NN20060102 084236 AO$instid|AA$user_barcode|AB$item_barcode|",
45 pat => qr/^301YNN$datepat/,
47 $SIPtest::field_specs{(FID_INST_ID)},
48 $SIPtest::field_specs{(FID_SCREEN_MSG)},
49 $SIPtest::field_specs{(FID_PRINT_LINE)},
50 { field => FID_PATRON_ID,
51 pat => qr/^$user_barcode$/,
53 { field => FID_ITEM_ID,
54 pat => qr/^$item_barcode$/,
56 { field => FID_TITLE_ID,
57 pat => qr/^$item_title\s*$/,
59 { field => FID_DUE_DATE,
60 pat => qr/^$datepat$/,
62 { field => FID_SECURITY_INHIBIT,
69 $SIPtest::sc_status_test,
76 # Renew: item checked out, identify by title
77 #$test = clone($renew_test_template);
78 #$test->{id} = 'Renew: identify item by title';
79 #$test->{msg} =~ s/AB$item_barcode\|/AJ$item_title|/;
80 ## Everything else should be the same
83 ## Renew: Item checked out, but another patron has placed a hold
84 #$test = clone($renew_test_template);
85 #$test->{id} = 'Renew: Item has outstanding hold';
86 #$test->{pat} = qr/^300NUN$datepat/;
87 #foreach my $field (@{$test->{fields}}) {
88 # if ($field->{field} eq FID_DUE_DATE || $field->{field} eq FID_TITLE_ID) {
89 # $field->{pat} = qr/^$/;
93 #push @tests, $hold_template, $test, $cancel_hold_template;
95 # Renew: item not checked out. Basically the same, except
96 # for the leader test.
97 $test = clone($renew_test_template);
98 $test->{id} = 'Renew: item not checked out at all';
99 $test->{pat} = qr/^300NUN$datepat/;
100 foreach my $field (@{$test->{fields}}) {
101 if ($field->{field} eq FID_DUE_DATE) {
102 $field->{pat} = qr/^$/;
103 } elsif ($field->{field} eq FID_TITLE_ID) {
104 $field->{pat} = qr/^($item_title\s*|)$/;
108 push @tests, $checkin_template, $test;
110 $test = clone($renew_test_template);
111 $test->{id} = 'Renew: Invalid item';
112 $test->{msg} =~ s/AB[^|]+/ABbad-item/;
113 $test->{pat} = qr/^300NUN$datepat/;
114 foreach my $field (@{$test->{fields}}) {
115 if ($field->{field} eq FID_TITLE_ID || $field->{field} eq FID_DUE_DATE) {
116 $field->{pat} = qr/^$/;
117 } elsif ($field->{field} eq FID_ITEM_ID) {
118 $field->{pat} = qr/^bad-item$/;
124 $test = clone($renew_test_template);
125 $test->{id} = 'Renew: Invalid user';
126 $test->{msg} =~ s/AA$user_barcode/AAberick/;
127 $test->{pat} = qr/^300NUN$datepat/;
128 foreach my $field (@{$test->{fields}}) {
129 if ($field->{field} eq FID_DUE_DATE) {
130 $field->{pat} = qr/^$/;
131 } elsif ($field->{field} eq FID_PATRON_ID) {
132 $field->{pat} = qr/^berick$/;
133 } elsif ($field->{field} eq FID_TITLE_ID) {
134 $field->{pat} = qr/^($item_title\s*|)$/;
140 # Still need tests for
141 # - renewing a for-fee item
142 # - patrons that are not permitted to renew
143 # - renewing item that has reached limit on number of renewals
145 SIPtest::run_sip_tests(@tests);