2 # checkout: test Checkout Response
10 use Sip::Constants qw(:all);
13 $user_barcode $item_barcode $item_title
17 my $patron_enable_template = {
18 id => 'Renew All: prep: enable patron permissions',
19 msg => "2520060102 084238AO$instid|AA$user_barcode|",
20 pat => qr/^26 {4}[ Y]{10}000$datepat/o,
24 my $patron_disable_template = {
25 id => 'Checkout: block patron (prep to test checkout denied)',
26 msg => "01N20060102 084238AO$instid|ALFees overrun|AA$user_barcode|",
27 # response to block patron is a patron status message
28 pat => qr/^24Y{4}[ Y]{10}000$datepat/o,
32 my $checkin_template = {
33 id => 'Checkout: cleanup: check in item',
34 msg => "09N20050102 08423620060113 084235APUnder the bed|AO$instid|AB$item_barcode|ACterminal password|",
35 pat => qr/^101YNN$datepat/o,
39 my $checkout_test_template = {
40 id => 'Checkout: valid item, valid patron',
41 msg => "11YN20060329 203000 AO$instid|AA$user_barcode|AB$item_barcode|AC|",
42 pat => qr/^121NNY$datepat/,
44 $SIPtest::field_specs{(FID_INST_ID)},
45 $SIPtest::field_specs{(FID_SCREEN_MSG)},
46 $SIPtest::field_specs{(FID_PRINT_LINE)},
47 { field => FID_PATRON_ID,
48 pat => qr/^$user_barcode$/o,
50 { field => FID_ITEM_ID,
51 pat => qr/^$item_barcode$/o,
53 { field => FID_TITLE_ID,
54 pat => qr/^$item_title\s*$/o,
56 { field => FID_DUE_DATE,
59 { field => FID_FEE_TYPE,
62 { field => FID_SECURITY_INHIBIT,
65 { field => FID_CURRENCY,
66 pat => qr/^$currency$/o,
68 { field => FID_FEE_AMT,
71 { field => FID_MEDIA_TYPE,
74 { field => FID_ITEM_PROPS,
77 { field => FID_TRANSACTION_ID,
84 $SIPtest::sc_status_test,
85 clone($checkout_test_template),
86 # Don't check the item in, because we're about to test renew
92 ## Test this by checking out exactly the same book a second time.
93 ## The only difference should be that the "Renewal OK" flag should now
95 #$test = clone($checkout_test_template);
96 #$test->{id} = 'Checkout: patron renewal';
97 #$test->{pat} = qr/^121YNY$datepat/;
103 push @tests, $checkin_template;
105 # Valid Patron, item with diacritical in the title
106 #$test = clone($checkout_test_template);
108 #$test->{id} = 'Checkout: valid patron, diacritical character in title';
109 #$test->{msg} =~ s/AB$item_barcode/AB$item_diacritic_barcode/;
111 #foreach my $i (0 .. (scalar @{$test->{fields}})-1) {
112 # my $field = $test->{fields}[$i];
114 # if ($field->{field} eq FID_ITEM_ID) {
115 # $field->{pat} = qr/^$item_diacritic_barcode$/;
116 # } elsif ($field->{field} eq FID_TITLE_ID) {
117 # $field->{pat} = qr/^$item_diacritic_title\s*$/;
118 # } elsif ($field->{field} eq FID_OWNER) {
119 # $field->{pat} = qr/^$item_diacritic_owner$/;
125 #$test = clone($checkin_template);
126 #$test->{msg} =~ s/AB$item_barcode/AB$item_diacritic_barcode/;
129 # Valid Patron, Invalid Item_id
130 $test = clone($checkout_test_template);
132 $test->{id} = 'Checkout: valid patron, invalid item';
133 $test->{msg} =~ s/AB$item_barcode/ABno-barcode/o;
134 $test->{pat} = qr/^120NUN$datepat/;
135 delete $test->{fields};
137 $SIPtest::field_specs{(FID_INST_ID)},
138 $SIPtest::field_specs{(FID_SCREEN_MSG)},
139 $SIPtest::field_specs{(FID_PRINT_LINE)},
140 { field => FID_PATRON_ID,
141 pat => qr/^$user_barcode$/o,
143 { field => FID_ITEM_ID,
144 pat => qr/^no-barcode$/,
146 { field => FID_TITLE_ID,
149 { field => FID_DUE_DATE,
152 { field => FID_VALID_PATRON,
159 # Invalid patron, valid item
160 $test = clone($checkout_test_template);
161 $test->{id} = 'Checkout: invalid patron, valid item';
162 $test->{msg} =~ s/AA$user_barcode/AAberick/;
163 $test->{pat} = qr/^120NUN$datepat/;
164 delete $test->{fields};
166 $SIPtest::field_specs{(FID_INST_ID)},
167 $SIPtest::field_specs{(FID_SCREEN_MSG)},
168 $SIPtest::field_specs{(FID_PRINT_LINE)},
169 { field => FID_PATRON_ID,
172 { field => FID_ITEM_ID,
173 pat => qr/^$item_barcode$/o,
175 { field => FID_TITLE_ID,
176 pat => qr/^$item_title\s*$/o,
178 { field => FID_DUE_DATE,
181 { field => FID_VALID_PATRON,
188 # Needed: tests for blocked patrons, patrons with excessive
189 # fines/fees, magnetic media, charging fees to borrow items.
192 #$test = clone($checkout_test_template);
193 #$test->{id} = 'Checkout: Blocked patron';
194 #$test->{pat} = qr/^120NUN$datepat/;
195 #delete $test->{fields};
197 # $SIPtest::field_specs{(FID_INST_ID)},
198 # $SIPtest::field_specs{(FID_SCREEN_MSG)},
199 # $SIPtest::field_specs{(FID_PRINT_LINE)},
200 # { field => FID_PATRON_ID,
201 # pat => qr/^$user_barcode$/,
203 # { field => FID_VALID_PATRON,
208 #push @tests, $patron_disable_template, $test, $patron_enable_template;
210 SIPtest::run_sip_tests(@tests);