3 use Test::More tests => 8;
5 diag("Test juv-to-adult batch updater.");
7 use strict; use warnings;
9 use constant USER_ID => 2;
11 use OpenILS::Utils::TestUtils;
12 use OpenILS::Utils::CStoreEditor qw/:funcs/;
13 use OpenILS::Utils::Fieldmapper;
15 my $script = OpenILS::Utils::TestUtils->new();
18 my $e = new_editor(xact => 1);
22 # User is 19 years old. Juv-to-adult with 18 years should clear the flag.
24 my $user = $e->retrieve_actor_user(USER_ID);
26 my $dt = DateTime->now;
27 $dt->set_year($dt->year - 19);
28 $user->dob($dt->strftime('%F'));
30 my $stat = $e->update_actor_user($user);
31 ok($stat, 'User update succeeded');
34 my $storage = $script->session('open-ils.storage');
35 my $req = $storage->request(
36 'open-ils.storage.actor.user.juvenile_to_adult', '18 years');
40 $user = $e->retrieve_actor_user(USER_ID);
41 is($user->juvenile, 'f', 'Juvenile flag should be false');
44 # User is 17 years old. Juv-to-adult with 18 years should leave the flag.
47 $dt->set_year($dt->year - 17);
48 $user->dob($dt->strftime('%F'));
50 $stat = $e->update_actor_user($user);
51 ok($stat, 'User update succeeded');
54 $req = $storage->request(
55 'open-ils.storage.actor.user.juvenile_to_adult', '18 years');
59 $user = $e->retrieve_actor_user(USER_ID);
60 is($user->juvenile, 't', 'Juvenile flag should be true');
63 # User is 17 years old, but the juv org unit setting is 16,
64 # so the flag should be cleared.
66 my $aous = Fieldmapper::actor::org_unit_setting->new;
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');
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');
79 $user = $e->retrieve_actor_user(USER_ID);
80 is($user->juvenile, 'f', 'Juvenile flag should be false');
83 # Delete the user. No modification should occur.
87 $stat = $e->update_actor_user($user);
88 ok($stat, 'User successfully deleted');
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');
96 $user = $e->retrieve_actor_user(USER_ID);
97 is($user->juvenile, 't', 'Juvenile flag should be left true after deletion');
99 # for ease of repeating this test, delete the new org setting
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);