2 use strict; use warnings;
3 use Test::More tests => 26;
4 use OpenILS::Utils::TestUtils;
5 use OpenILS::Utils::CStoreEditor qw/:funcs/;
6 use OpenILS::Application::Acq::Order;
8 use constant WORKSTATION_LIB => 4;
9 use constant WORKSTATION_NAME => 'BR1-test-22-acq-reqs';
11 diag("Tests ACQ purchase requests");
13 my $script = OpenILS::Utils::TestUtils->new();
18 my $workstation = $e->search_actor_workstation(
19 {name => WORKSTATION_NAME, owning_lib => WORKSTATION_LIB})->[0];
22 $script->authenticate({
24 password => 'demo123',
28 my $ws = $script->register_workstation(WORKSTATION_NAME, WORKSTATION_LIB);
32 $script->authenticate({
34 password => 'demo123',
36 workstation => WORKSTATION_NAME
39 my $ses = $script->session('open-ils.storage');
40 my $req = $ses->request('open-ils.storage.direct.actor.user.retrieve', 87);
41 if (my $resp = $req->recv) {
42 if (my $user = $resp->content) {
43 # -----------------------------------------------------------------------------
44 # 1. We'll use Smith, Sarah (with usrname 99999303411 and home lib SL1)
45 # -----------------------------------------------------------------------------
49 'User with id = 87 is 99999303411'
54 # -----------------------------------------------------------------------------
56 # -----------------------------------------------------------------------------
57 ok($script->authtoken, 'Have an authtoken');
59 $req = $script->session('open-ils.pcrud')->request(
60 'open-ils.pcrud.retrieve.acqcr',
61 $script->authtoken, 1015);
62 if (my $resp = $req->recv) {
63 if (my $new_cr = $resp->content) {
64 # -----------------------------------------------------------------------------
65 # 3. Check for Canceled: Fulfilled
66 # -----------------------------------------------------------------------------
67 is($new_cr->label,'Canceled: Fulfilled','New cancel reason for fulfilled requests');
71 $req = $script->session('open-ils.pcrud')->request(
72 'open-ils.pcrud.retrieve.aurt',
73 $script->authtoken, 1);
74 if (my $resp = $req->recv) {
75 if (my $aurt = $resp->content) {
76 # -----------------------------------------------------------------------------
77 # 4. Check for user request type Books
78 # -----------------------------------------------------------------------------
79 is($aurt->label,'Books','Found user request type Books');
85 $aur_hash->{'request_type'} = 1; # Books
86 $aur_hash->{'usr'} = 87; # Smith
87 $aur_hash->{'pickup_lib'} = 8; # SL1
88 $aur_hash->{'email_notify'} = 'f';
89 $aur_hash->{'hold'} = 'f';
90 $aur_hash->{'title'} = 'test';
92 $req = $script->session('open-ils.acq')->request(
93 'open-ils.acq.user_request.create',
94 $script->authtoken, $aur_hash);
95 if (my $resp = $req->recv) {
96 if ($aur = $resp->content) {
97 # -----------------------------------------------------------------------------
98 # 5. Check for created user request
99 # -----------------------------------------------------------------------------
100 is(ref $aur, 'Fieldmapper::acq::user_request', 'User request created');
101 diag('User Request ID = ' . $aur->id);
105 $req = $script->session('open-ils.pcrud')->request(
106 'open-ils.pcrud.retrieve.aurs',
107 $script->authtoken, $aur->id);
108 if (my $resp = $req->recv) {
109 if (my $aurs = $resp->content) {
110 # -----------------------------------------------------------------------------
111 # 6,7,8. Check for status-enhanced user request
112 # -----------------------------------------------------------------------------
113 is($aurs->id,$aur->id,'Found status-enhanced user request');
114 is($aurs->request_status,1,'Request Status = New');
115 is($aurs->home_ou,8,'Home Lib = SL1');
119 # open-ils.acq.picklist.create
120 # {"__c":"acqpl","__p":[null,1,"4","test",null,null,null,null,1,1]}
121 # {"__c":"acqpl","__p":[1,1,4,"test","2018-07-31T16:33:39-0400","now",null,null,1,1]}
124 my $picklist = Fieldmapper::acq::picklist->new;
126 $picklist->owner(1); # admin
127 $picklist->creator(1); # admin
128 $picklist->editor(1); # admin
129 $picklist->org_unit(8); # SL1
130 $picklist->name( $script->authtoken ); # $picklist->name('22-acq-requests.t');
131 $picklist->create_time('now');
132 $picklist->edit_time('now');
134 $req = $script->session('open-ils.acq')->request(
135 'open-ils.acq.picklist.create',
136 $script->authtoken, $picklist);
137 if (my $resp = $req->recv) {
138 if ($picklist_id = $resp->content) {
139 # -----------------------------------------------------------------------------
140 # 9. Check for created picklist
141 # -----------------------------------------------------------------------------
142 ok($picklist_id > 0,'Created picklist aka selection list');
143 diag('Picklist ID = ' . $picklist_id);
148 my $jub = Fieldmapper::acq::lineitem->new;
149 $jub->selector(1); # admin
150 $jub->picklist($picklist_id);
151 $jub->create_time('now');
152 $jub->edit_time('now');
153 $jub->marc('<record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.loc.gov/MARC21/slim" xmlns:marc="http://www.loc.gov/MARC21/slim" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/ standards/marcxml/schema/MARC21slim.xsd"><leader>00000nam a22000007a 4500</leader><marc:datafield tag="245" ind1=" " ind2=" "><marc:subfield code="a">test </marc:subfield></marc:datafield></record>');
155 $jub->creator(1); # admin
156 $jub->editor(1); # admin
157 $jub->estimated_unit_price(1.00);
160 $req = $script->session('open-ils.acq')->request(
161 'open-ils.acq.lineitem.create',
162 $script->authtoken, $jub);
163 if (my $resp = $req->recv) {
164 if ($jub_id = $resp->content) {
165 # -----------------------------------------------------------------------------
166 # 10. Check for created lineitem
167 # -----------------------------------------------------------------------------
168 ok($jub_id > 0,'Created lineitem');
169 diag('Lineitem ID = ' . $jub_id);
173 $req = $script->session('open-ils.pcrud')->request(
174 'open-ils.pcrud.retrieve.aur',
175 $script->authtoken, $aur->id);
176 if (my $resp = $req->recv) {
177 if ($aur = $resp->content) {
178 # -----------------------------------------------------------------------------
179 # 11. Retrieve bare user request
180 # -----------------------------------------------------------------------------
181 is(ref $aur,'Fieldmapper::acq::user_request','Retrieved bare user request');
186 $aur->lineitem($jub_id);
188 diag('Updating aur->lineitem');
189 my $pcrud_ses = $script->session('open-ils.pcrud');
190 $pcrud_ses->connect();
191 my $xact = $pcrud_ses->request(
192 'open-ils.pcrud.transaction.begin',
195 my $aur_id = $pcrud_ses->request(
196 'open-ils.pcrud.update.aur',
200 # -----------------------------------------------------------------------------
201 # 12. Updated user request with lineitem
202 # -----------------------------------------------------------------------------
203 is($aur_id,$aur->id,'Updated user request with lineitem');
206 'open-ils.pcrud.transaction.commit',
209 $pcrud_ses->disconnect();
212 $req = $script->session('open-ils.acq')->request(
213 'open-ils.acq.lineitem.batch_update',
214 $script->authtoken, { 'lineitems' => [$jub_id] }, {
215 "item_count" => 1, "location" => 118, "owning_lib" => 4, "fund" => 1});
216 if (my $resp = $req->recv) {
217 if (my $return = $resp->content) {
218 # -----------------------------------------------------------------------------
219 # 13. Check adding of copy to line
220 # -----------------------------------------------------------------------------
221 is($return,$jub_id,'Added copy to lineitem');
225 $req = $script->session('open-ils.pcrud')->request(
226 'open-ils.pcrud.retrieve.aurs',
227 $script->authtoken, $aur->id);
228 if (my $resp = $req->recv) {
229 if (my $aurs = $resp->content) {
230 # -----------------------------------------------------------------------------
231 # 14,15,16. Check user request status and lineitem
232 # -----------------------------------------------------------------------------
233 is($aurs->id,$aur->id,'Re-retrieved status-enhanced user request');
234 is($aurs->request_status,2,'Request Status = Pending');
235 is($aurs->lineitem,$jub_id,'Lineitem matches');
239 my $purchase_order_id;
240 my $purchase_order = Fieldmapper::acq::purchase_order->new;
241 $purchase_order->owner(1); # admin
242 $purchase_order->create_time('now');
243 $purchase_order->edit_time('now');
244 $purchase_order->provider(2); # BRODART
245 $purchase_order->state('pending');
246 $purchase_order->ordering_agency(4); # BR1
247 $purchase_order->creator(1); # admin
248 $purchase_order->editor(1); # admin
249 $purchase_order->name( $script->authtoken ); # $purchase_order->name('22-acq-requests.t');
250 $purchase_order->isnew(1);
252 $req = $script->session('open-ils.acq')->request(
253 'open-ils.acq.purchase_order.create',
254 $script->authtoken, $purchase_order, { 'lineitems' => [$jub_id] });
255 if (my $resp = $req->recv) {
256 if (my $return = $resp->content) {
257 #FIXME: open-ils.acq.purchase_order.create docs needs to be updated with correct return value
258 #FIXME: open-ils.acq.purchase_order.create docs needs to be updated for lineitem_ids argument
259 # -----------------------------------------------------------------------------
260 # 17. Check for created purchase_order
261 # -----------------------------------------------------------------------------
262 $purchase_order_id = $$return{'purchase_order'}->id;
263 ok($purchase_order_id > 0,'Created purchase_order');
264 diag('Purchase Order ID = ' . $purchase_order_id);
268 $req = $script->session('open-ils.pcrud')->request(
269 'open-ils.pcrud.retrieve.aurs',
270 $script->authtoken, $aur->id);
271 if (my $resp = $req->recv) {
272 if (my $aurs = $resp->content) {
273 # -----------------------------------------------------------------------------
274 # 18, 19. Check user request status is still Pending
275 # -----------------------------------------------------------------------------
276 is($aurs->id,$aur->id,'Re-retrieved status-enhanced user request');
277 is($aurs->request_status,2,'Request Status = Pending');
282 # open-ils.acq.purchase_order.assets.create
285 'auto_overlay_1match' => 0,
286 'match_quality_ratio' => '0.0',
287 'queue_name' => $script->authtoken, #'queue_name' => '22-acq-requests.t',
288 'import_no_match' => 'on',
290 'fall_through_merge_profile' => '',
291 'merge_profile' => '',
292 'auto_overlay_best_match' => 0,
293 'strip_field_groups' => [],
294 'auto_overlay_exact' => 0,
295 'existing_queue' => '',
299 $req = $script->session('open-ils.acq')->request(
300 'open-ils.acq.purchase_order.assets.create',
301 $script->authtoken, $purchase_order_id, $vlArgs);
302 if (my $resp = $req->recv) {
303 if (my $return = $resp->content) {
304 # -----------------------------------------------------------------------------
305 # 20. Check for created assets
306 # -----------------------------------------------------------------------------
307 is($return->{'complete'},1,'Assets created');
310 $req = $script->session('open-ils.acq')->request(
311 'open-ils.acq.purchase_order.activate',
312 $script->authtoken, $purchase_order_id, {
313 'no_assets' => 0, 'zero_copy_activate' => 0});
314 if (my $resp = $req->recv) {
315 if (my $return = $resp->content) {
316 # -----------------------------------------------------------------------------
317 # 21. Check for activated purchase order
318 # -----------------------------------------------------------------------------
319 is($return,1,'Purchase order activated');
323 $req = $script->session('open-ils.pcrud')->request(
324 'open-ils.pcrud.retrieve.aurs',
325 $script->authtoken, $aur->id);
326 if (my $resp = $req->recv) {
327 if (my $aurs = $resp->content) {
328 # -----------------------------------------------------------------------------
329 # 22, 23. Check user request status Ordered, No Hold Placed
330 # -----------------------------------------------------------------------------
331 is($aurs->id,$aur->id,'Re-retrieved status-enhanced user request');
332 is($aurs->request_status,3,'Request Status = Ordered, Hold Not Placed');
336 $req = $script->session('open-ils.acq')->request(
337 'open-ils.acq.user_request.cancel.batch.atomic',
338 $script->authtoken, [ $aur_id ], 1015); # Canceled: Fulfilled
339 if (my $resp = $req->recv) {
340 if (my $return = $resp->content) {
341 # -----------------------------------------------------------------------------
342 # 24. Check for activated purchase order
343 # -----------------------------------------------------------------------------
344 is($return->[1]->{'complete'},1,'User request canceled with Canceled: Fulfilled');
348 $req = $script->session('open-ils.pcrud')->request(
349 'open-ils.pcrud.retrieve.aurs',
350 $script->authtoken, $aur->id);
351 if (my $resp = $req->recv) {
352 if (my $aurs = $resp->content) {
353 # -----------------------------------------------------------------------------
354 # 25, 26. Check user request status Ordered, No Hold Placed
355 # -----------------------------------------------------------------------------
356 is($aurs->id,$aur->id,'Re-retrieved status-enhanced user request');
357 is($aurs->request_status,7,'Request Status = Canceled');