first set of explicit extension testing
authorJason Etheridge <jason@EquinoxOLI.org>
Thu, 24 Nov 2022 15:08:24 +0000 (10:08 -0500)
committerJason Etheridge <jason@EquinoxOLI.org>
Thu, 24 Nov 2022 15:08:24 +0000 (10:08 -0500)
t/17extensions.t [new file with mode: 0755]

diff --git a/t/17extensions.t b/t/17extensions.t
new file mode 100755 (executable)
index 0000000..f8ba156
--- /dev/null
@@ -0,0 +1,101 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Clone qw(clone);
+
+use Sip::Constants qw(:all);
+
+use SIPtest qw($datepat $textpat $instid $currency $user_barcode $user_pin
+           $user_fullname $user_homeaddr $user_email $user_phone
+           $user_birthday $user_ptype $user_inet $user_homelib);
+
+my $patron_info_test_template = {
+    id => 'valid Patron Info no details',
+    msg => "6300020060329    201700          AO$instid|AA$user_barcode|",
+    pat => qr/^64 [ Y]{13}\d{3}$datepat(\d{4}){6}/,
+    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$/o,
+            required => 1, },
+        { field    => FID_PERSONAL_NAME,
+            pat      => qr/^$user_fullname$/o,
+            required => 1, },
+        $SIPtest::field_specs{(FID_HOLD_ITEMS_LMT)   },
+        $SIPtest::field_specs{(FID_OVERDUE_ITEMS_LMT)},
+        $SIPtest::field_specs{(FID_CHARGED_ITEMS_LMT)},
+        { field    => FID_VALID_PATRON,
+            pat      => qr/^Y$/,
+            # Not required by the spec, but by the test
+            required => 1, },
+        $SIPtest::field_specs{(FID_CURRENCY)},
+        { field    => FID_FEE_AMT,
+            pat      => $textpat,
+            required => 0, },
+        { field    => FID_FEE_LMT,
+            pat      => $textpat,
+            required => 0, },
+        # field    => FID_HOME_ADDR,
+        #   pat      => qr/^$user_homeaddr$/o,
+        #   required => 1, }, # required by this test case
+        { field    => FID_EMAIL,
+            pat      => qr/^$user_email$/o,
+            required => 1, },
+        { field    => FID_HOME_PHONE,
+            pat      => qr/^$user_phone$/o,
+            required => 1, },
+        { field    => FID_PATRON_BIRTHDATE,
+            pat      => qr/^$user_birthday$/o,
+            required => 1, },
+        { field    => FID_PATRON_CLASS,
+            pat      => qr/^$user_ptype$/o,
+            required => 1, },
+        #{ field    => FID_INET_PROFILE,
+        #   pat      => qr/^$user_inet$/,
+        #   required => 1, },
+        # field    => FID_HOME_LIBRARY,
+        #   pat      => qr/^$user_homelib$/,
+        #   required => 1, }, # Required for this test
+], };
+
+my @tests = (
+    $SIPtest::login_test,
+    $SIPtest::sc_status_test,
+    clone($patron_info_test_template),
+);
+
+
+sub create_patron_info_extension_tests {
+    my $test = clone($patron_info_test_template);
+
+    $test->{id} = "Patron Info home address extension";
+    push @{$test->{fields}}, {
+        field    => FID_HOME_ADDR,
+        pat      => qr/^$user_homeaddr$/o,
+        required => 1, };
+    push @tests, $test;
+
+    $test = clone($patron_info_test_template);
+    $test->{id} = "Patron Info internet profile extension";
+    push @{$test->{fields}}, {
+        field    => FID_INET_PROFILE,
+        pat      => qr/^$user_inet$/,
+        required => 1, };
+    push @tests, $test;
+
+    $test = clone($patron_info_test_template);
+    $test->{id} = "Patron Info home library extension";
+    push @{$test->{fields}}, {
+        field    => FID_HOME_LIBRARY,
+        pat      => qr/^$user_homelib$/,
+        required => 1, };
+    push @tests, $test;
+}
+
+create_patron_info_extension_tests();
+
+SIPtest::run_sip_tests(@tests);
+
+1;