3 use Test::More tests => 12;
5 diag("Test checking for, creating, and restricting patron opt-in.");
7 use constant WORKSTATION_NAME => 'BR1-test-12-lp1533329-opt-in.t';
8 use constant WORKSTATION_LIB => 4; # BR1, a branch of SYS1
9 use constant PATRON_LIB => 6; # BR3, a branch of SYS2
10 use constant PATRON_SYS => 3; # SYS2
11 use constant SYS_DEPTH => 1; # depth of "System" org type
12 use constant PATRON_BARCODE => '99999359616';
14 use strict; use warnings;
16 use OpenILS::Utils::TestUtils;
17 use OpenILS::Utils::CStoreEditor qw/:funcs/;
18 use OpenILS::Utils::Fieldmapper;
20 my $script = OpenILS::Utils::TestUtils->new();
23 our $U = "OpenILS::Application::AppUtils";
25 my $e = new_editor(xact => 1);
28 # initialize a new aous object for insertion into the db
30 my ($org_unit, $name, $value) = @_;
31 my $set = Fieldmapper::actor::org_unit_setting->new();
32 $set->org_unit($org_unit);
40 my ($authtoken, $usr_id) = @_;
41 my $resp = $U->simplereq(
43 'open-ils.actor.user.org_unit_opt_in.check',
48 #----------------------------------------------------------------
49 # 1. Login, register workstation, get authtoken.
50 #----------------------------------------------------------------
51 $script->authenticate({
53 password => 'demo123',
59 my $ws = $script->register_workstation(WORKSTATION_NAME,WORKSTATION_LIB);
62 'Registered a new workstation'
65 $script->authenticate({
67 password => 'demo123',
69 workstation => WORKSTATION_NAME});
72 'Have an authtoken associated with the workstation'
75 #----------------------------------------------------------------
76 # 2. Set org.patron_opt_boundary for SYS2, so that BR1 is outside
78 #----------------------------------------------------------------
80 my $boundary = new_org_setting(PATRON_SYS, 'org.patron_opt_boundary', SYS_DEPTH);
81 my $boundary_stat = $e->create_actor_org_unit_setting($boundary);
82 ok($boundary_stat, 'Opt boundary setting created successfully');
85 #----------------------------------------------------------------
86 # 3. Check opt-in for test patron. It should return 0.
87 #----------------------------------------------------------------
88 my $patron = $U->fetch_user_by_barcode(PATRON_BARCODE);
90 opt_in_check($script->authtoken, $patron->id),
92 'Opt-in check for non-opted-in patron correctly returned 0'
95 #----------------------------------------------------------------
96 # 4. Set org.restrict_opt_to_depth at SYS2, so that BR1 is
97 # outside SYS2's section of the tree at the specified depth (thus
99 #----------------------------------------------------------------
101 my $restrict = new_org_setting(PATRON_SYS, 'org.restrict_opt_to_depth', SYS_DEPTH);
102 my $restrict_stat = $e->create_actor_org_unit_setting($restrict);
103 ok($restrict_stat, 'Opt restrict depth setting created successfully');
106 #----------------------------------------------------------------
107 # 5. Check opt-in for test patron. It should return 2.
108 #----------------------------------------------------------------
110 opt_in_check($script->authtoken, $patron->id),
112 'Opt-in check for patron at restricted opt-in library correctly returned 2'
115 #----------------------------------------------------------------
116 # 6. Remove the org.restrict_opt_to_depth setting for SYS2.
117 #----------------------------------------------------------------
119 my $delete_restrict_stat = $e->delete_actor_org_unit_setting($restrict);
120 ok($delete_restrict_stat, 'Opt restrict depth setting deleted successfully');
123 #----------------------------------------------------------------
124 # 7. Create opt-in for test patron.
125 #----------------------------------------------------------------
126 my $opt_id = $U->simplereq(
128 'open-ils.actor.user.org_unit_opt_in.create',
129 $script->authtoken, $patron->id, WORKSTATION_LIB);
130 ok($opt_id, 'Patron successfully opted in');
132 #----------------------------------------------------------------
133 # 8. Check opt-in for test patron. It should return 1.
134 #----------------------------------------------------------------
136 opt_in_check($script->authtoken, $patron->id),
138 'Opt-in check for opted-in patron correctly returned 1'
141 #----------------------------------------------------------------
143 #----------------------------------------------------------------
144 my $opt = $U->simplereq(
146 'open-ils.cstore.direct.actor.usr_org_unit_opt_in.retrieve',
150 my $delete_opt_stat = $e->delete_actor_usr_org_unit_opt_in($opt);
151 ok($delete_opt_stat, 'Opt-in deleted successfully');
154 #----------------------------------------------------------------
155 # 10. Remove opt boundary setting.
156 #----------------------------------------------------------------
158 my $delete_setting_stat = $e->delete_actor_org_unit_setting($boundary);
159 ok($delete_setting_stat, 'Opt boundary setting deleted successfully');