]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/live_t/10-lp1251415_update_juv.t
LP1915464 follow-up: use spaces, not tabs; remove extra comma
[Evergreen.git] / Open-ILS / src / perlmods / live_t / 10-lp1251415_update_juv.t
1 #!perl
2
3 use Test::More tests => 8;
4
5 diag("Test juv-to-adult batch updater.");
6
7 use strict; use warnings;
8
9 use constant USER_ID => 2;
10
11 use OpenILS::Utils::TestUtils;
12 use OpenILS::Utils::CStoreEditor qw/:funcs/;
13 use OpenILS::Utils::Fieldmapper;
14
15 my $script = OpenILS::Utils::TestUtils->new();
16 $script->bootstrap;
17
18 my $e = new_editor(xact => 1);
19 $e->init;
20
21 # -------------
22 # User is 19 years old.  Juv-to-adult with 18 years should clear the flag.
23
24 my $user = $e->retrieve_actor_user(USER_ID);
25
26 my $dt = DateTime->now;
27 $dt->set_year($dt->year - 19);
28 $user->dob($dt->strftime('%F'));
29 $user->juvenile('t');
30 my $stat = $e->update_actor_user($user);
31 ok($stat, 'User update succeeded');
32 $e->xact_commit;
33
34 my $storage = $script->session('open-ils.storage');
35 my $req = $storage->request(
36     'open-ils.storage.actor.user.juvenile_to_adult', '18 years');
37 $req->recv;
38
39 $e->xact_begin;
40 $user = $e->retrieve_actor_user(USER_ID);
41 is($user->juvenile, 'f', 'Juvenile flag should be false');
42
43 # -------------
44 # User is 17 years old.  Juv-to-adult with 18 years should leave the flag.
45
46 $dt = DateTime->now;
47 $dt->set_year($dt->year - 17);
48 $user->dob($dt->strftime('%F'));
49 $user->juvenile('t');
50 $stat = $e->update_actor_user($user);
51 ok($stat, 'User update succeeded');
52 $e->xact_commit;
53
54 $req = $storage->request(
55     'open-ils.storage.actor.user.juvenile_to_adult', '18 years');
56 $req->recv;
57
58 $e->xact_begin;
59 $user = $e->retrieve_actor_user(USER_ID);
60 is($user->juvenile, 't', 'Juvenile flag should be true');
61
62 # -------------
63 # User is 17 years old, but the juv org unit setting is 16,
64 # so the flag should be cleared.
65
66 my $aous = Fieldmapper::actor::org_unit_setting->new;
67 $aous->org_unit(1);
68 $aous->name('global.juvenile_age_threshold');
69 $aous->value('"16 years"');
70 $stat = $e->create_actor_org_unit_setting($aous);
71 ok($stat, 'Org unit setting create successfully');
72 $e->xact_commit;
73
74 # passing "18 years", but the org unit setting should supercede it.
75 $req = $storage->request(
76     'open-ils.storage.actor.user.juvenile_to_adult', '18 years');
77 $req->recv;
78
79 $user = $e->retrieve_actor_user(USER_ID);
80 is($user->juvenile, 'f', 'Juvenile flag should be false');
81
82 # -------------
83 # Delete the user.  No modification should occur.
84 $user->juvenile('t');
85 $user->deleted('t');
86 $e->xact_begin;
87 $stat = $e->update_actor_user($user);
88 ok($stat, 'User successfully deleted');
89 $e->xact_commit;
90
91 # passing "18 years", but the org unit setting should supercede it.
92 $req = $storage->request(
93     'open-ils.storage.actor.user.juvenile_to_adult', '18 years');
94 $req->recv;
95
96 $user = $e->retrieve_actor_user(USER_ID);
97 is($user->juvenile, 't', 'Juvenile flag should be left true after deletion');
98
99 # for ease of repeating this test, delete the new org setting
100 $e->xact_begin;
101 $aous = $e->search_actor_org_unit_setting(
102     {name => 'global.juvenile_age_threshold', org_unit => 1})->[0];
103 $e->delete_actor_org_unit_setting($aous);
104 $e->commit;
105