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 diag("Tests ACQ purchase requests");
10 my $script = OpenILS::Utils::TestUtils->new();
13 $script->authenticate({
15 password => 'demo123',
19 my $ses = $script->session('open-ils.storage');
20 my $req = $ses->request('open-ils.storage.direct.actor.user.retrieve', 87);
21 if (my $resp = $req->recv) {
22 if (my $user = $resp->content) {
23 # -----------------------------------------------------------------------------
24 # 1. We'll use Smith, Sarah (with usrname 99999303411 and home lib SL1)
25 # -----------------------------------------------------------------------------
29 'User with id = 87 is 99999303411'
34 # -----------------------------------------------------------------------------
36 # -----------------------------------------------------------------------------
37 ok($script->authtoken, 'Have an authtoken');
39 $req = $script->session('open-ils.pcrud')->request(
40 'open-ils.pcrud.retrieve.acqcr',
41 $script->authtoken, 1015);
42 if (my $resp = $req->recv) {
43 if (my $new_cr = $resp->content) {
44 # -----------------------------------------------------------------------------
45 # 3. Check for Canceled: Fulfilled
46 # -----------------------------------------------------------------------------
47 is($new_cr->label,'Canceled: Fulfilled','New cancel reason for fulfilled requests');
51 $req = $script->session('open-ils.pcrud')->request(
52 'open-ils.pcrud.retrieve.aurt',
53 $script->authtoken, 1);
54 if (my $resp = $req->recv) {
55 if (my $aurt = $resp->content) {
56 # -----------------------------------------------------------------------------
57 # 4. Check for user request type Books
58 # -----------------------------------------------------------------------------
59 is($aurt->label,'Books','Found user request type Books');
65 $aur_hash->{'request_type'} = 1; # Books
66 $aur_hash->{'usr'} = 87; # Smith
67 $aur_hash->{'pickup_lib'} = 8; # SL1
68 $aur_hash->{'email_notify'} = 'f';
69 $aur_hash->{'hold'} = 'f';
70 $aur_hash->{'title'} = 'test';
72 $req = $script->session('open-ils.acq')->request(
73 'open-ils.acq.user_request.create',
74 $script->authtoken, $aur_hash);
75 if (my $resp = $req->recv) {
76 if ($aur = $resp->content) {
77 # -----------------------------------------------------------------------------
78 # 5. Check for created user request
79 # -----------------------------------------------------------------------------
80 is(ref $aur, 'Fieldmapper::acq::user_request', 'User request created');
81 diag('User Request ID = ' . $aur->id);
85 $req = $script->session('open-ils.pcrud')->request(
86 'open-ils.pcrud.retrieve.aurs',
87 $script->authtoken, $aur->id);
88 if (my $resp = $req->recv) {
89 if (my $aurs = $resp->content) {
90 # -----------------------------------------------------------------------------
91 # 6,7,8. Check for status-enhanced user request
92 # -----------------------------------------------------------------------------
93 is($aurs->id,$aur->id,'Found status-enhanced user request');
94 is($aurs->request_status,1,'Request Status = New');
95 is($aurs->home_ou,8,'Home Lib = SL1');
99 # open-ils.acq.picklist.create
100 # {"__c":"acqpl","__p":[null,1,"4","test",null,null,null,null,1,1]}
101 # {"__c":"acqpl","__p":[1,1,4,"test","2018-07-31T16:33:39-0400","now",null,null,1,1]}
104 my $picklist = Fieldmapper::acq::picklist->new;
106 $picklist->owner(1); # admin
107 $picklist->creator(1); # admin
108 $picklist->editor(1); # admin
109 $picklist->org_unit(8); # SL1
110 $picklist->name( $script->authtoken ); # $picklist->name('22-acq-requests.t');
111 $picklist->create_time('now');
112 $picklist->edit_time('now');
114 $req = $script->session('open-ils.acq')->request(
115 'open-ils.acq.picklist.create',
116 $script->authtoken, $picklist);
117 if (my $resp = $req->recv) {
118 if ($picklist_id = $resp->content) {
119 # -----------------------------------------------------------------------------
120 # 9. Check for created picklist
121 # -----------------------------------------------------------------------------
122 ok($picklist_id > 0,'Created picklist aka selection list');
123 diag('Picklist ID = ' . $picklist_id);
128 my $jub = Fieldmapper::acq::lineitem->new;
129 $jub->selector(1); # admin
130 $jub->picklist($picklist_id);
131 $jub->create_time('now');
132 $jub->edit_time('now');
133 $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>');
135 $jub->creator(1); # admin
136 $jub->editor(1); # admin
137 $jub->estimated_unit_price(1.00);
140 $req = $script->session('open-ils.acq')->request(
141 'open-ils.acq.lineitem.create',
142 $script->authtoken, $jub);
143 if (my $resp = $req->recv) {
144 if ($jub_id = $resp->content) {
145 # -----------------------------------------------------------------------------
146 # 10. Check for created lineitem
147 # -----------------------------------------------------------------------------
148 ok($jub_id > 0,'Created lineitem');
149 diag('Lineitem ID = ' . $jub_id);
153 $req = $script->session('open-ils.pcrud')->request(
154 'open-ils.pcrud.retrieve.aur',
155 $script->authtoken, $aur->id);
156 if (my $resp = $req->recv) {
157 if ($aur = $resp->content) {
158 # -----------------------------------------------------------------------------
159 # 11. Retrieve bare user request
160 # -----------------------------------------------------------------------------
161 is(ref $aur,'Fieldmapper::acq::user_request','Retrieved bare user request');
166 $aur->lineitem($jub_id);
168 diag('Updating aur->lineitem');
169 my $pcrud_ses = $script->session('open-ils.pcrud');
170 $pcrud_ses->connect();
171 my $xact = $pcrud_ses->request(
172 'open-ils.pcrud.transaction.begin',
175 my $aur_id = $pcrud_ses->request(
176 'open-ils.pcrud.update.aur',
180 # -----------------------------------------------------------------------------
181 # 12. Updated user request with lineitem
182 # -----------------------------------------------------------------------------
183 is($aur_id,$aur->id,'Updated user request with lineitem');
186 'open-ils.pcrud.transaction.commit',
189 $pcrud_ses->disconnect();
192 $req = $script->session('open-ils.acq')->request(
193 'open-ils.acq.lineitem.batch_update',
194 $script->authtoken, { 'lineitems' => [$jub_id] }, {
195 "item_count" => 1, "location" => 118, "owning_lib" => 4, "fund" => 1});
196 if (my $resp = $req->recv) {
197 if (my $return = $resp->content) {
198 # -----------------------------------------------------------------------------
199 # 13. Check adding of copy to line
200 # -----------------------------------------------------------------------------
201 is($return,$jub_id,'Added copy to lineitem');
205 $req = $script->session('open-ils.pcrud')->request(
206 'open-ils.pcrud.retrieve.aurs',
207 $script->authtoken, $aur->id);
208 if (my $resp = $req->recv) {
209 if (my $aurs = $resp->content) {
210 # -----------------------------------------------------------------------------
211 # 14,15,16. Check user request status and lineitem
212 # -----------------------------------------------------------------------------
213 is($aurs->id,$aur->id,'Re-retrieved status-enhanced user request');
214 is($aurs->request_status,2,'Request Status = Pending');
215 is($aurs->lineitem,$jub_id,'Lineitem matches');
219 my $purchase_order_id;
220 my $purchase_order = Fieldmapper::acq::purchase_order->new;
221 $purchase_order->owner(1); # admin
222 $purchase_order->create_time('now');
223 $purchase_order->edit_time('now');
224 $purchase_order->provider(2); # BRODART
225 $purchase_order->state('pending');
226 $purchase_order->ordering_agency(4); # BR1
227 $purchase_order->creator(1); # admin
228 $purchase_order->editor(1); # admin
229 $purchase_order->name( $script->authtoken ); # $purchase_order->name('22-acq-requests.t');
230 $purchase_order->isnew(1);
232 $req = $script->session('open-ils.acq')->request(
233 'open-ils.acq.purchase_order.create',
234 $script->authtoken, $purchase_order, { 'lineitems' => [$jub_id] });
235 if (my $resp = $req->recv) {
236 if (my $return = $resp->content) {
237 #FIXME: open-ils.acq.purchase_order.create docs needs to be updated with correct return value
238 #FIXME: open-ils.acq.purchase_order.create docs needs to be updated for lineitem_ids argument
239 # -----------------------------------------------------------------------------
240 # 17. Check for created purchase_order
241 # -----------------------------------------------------------------------------
242 $purchase_order_id = $$return{'purchase_order'}->id;
243 ok($purchase_order_id > 0,'Created purchase_order');
244 diag('Purchase Order ID = ' . $purchase_order_id);
248 $req = $script->session('open-ils.pcrud')->request(
249 'open-ils.pcrud.retrieve.aurs',
250 $script->authtoken, $aur->id);
251 if (my $resp = $req->recv) {
252 if (my $aurs = $resp->content) {
253 # -----------------------------------------------------------------------------
254 # 18, 19. Check user request status is still Pending
255 # -----------------------------------------------------------------------------
256 is($aurs->id,$aur->id,'Re-retrieved status-enhanced user request');
257 is($aurs->request_status,2,'Request Status = Pending');
262 # open-ils.acq.purchase_order.assets.create
265 'auto_overlay_1match' => 0,
266 'match_quality_ratio' => '0.0',
267 'queue_name' => $script->authtoken, #'queue_name' => '22-acq-requests.t',
268 'import_no_match' => 'on',
270 'fall_through_merge_profile' => '',
271 'merge_profile' => '',
272 'auto_overlay_best_match' => 0,
273 'strip_field_groups' => [],
274 'auto_overlay_exact' => 0,
275 'existing_queue' => '',
279 $req = $script->session('open-ils.acq')->request(
280 'open-ils.acq.purchase_order.assets.create',
281 $script->authtoken, $purchase_order_id, $vlArgs);
282 if (my $resp = $req->recv) {
283 if (my $return = $resp->content) {
284 # -----------------------------------------------------------------------------
285 # 20. Check for created assets
286 # -----------------------------------------------------------------------------
287 is($return->{'complete'},1,'Assets created');
290 $req = $script->session('open-ils.acq')->request(
291 'open-ils.acq.purchase_order.activate',
292 $script->authtoken, $purchase_order_id, {
293 'no_assets' => 0, 'zero_copy_activate' => 0});
294 if (my $resp = $req->recv) {
295 if (my $return = $resp->content) {
296 # -----------------------------------------------------------------------------
297 # 21. Check for activated purchase order
298 # -----------------------------------------------------------------------------
299 is($return,1,'Purchase order activated');
303 $req = $script->session('open-ils.pcrud')->request(
304 'open-ils.pcrud.retrieve.aurs',
305 $script->authtoken, $aur->id);
306 if (my $resp = $req->recv) {
307 if (my $aurs = $resp->content) {
308 # -----------------------------------------------------------------------------
309 # 22, 23. Check user request status Ordered, No Hold Placed
310 # -----------------------------------------------------------------------------
311 is($aurs->id,$aur->id,'Re-retrieved status-enhanced user request');
312 is($aurs->request_status,3,'Request Status = Ordered, Hold Not Placed');
316 $req = $script->session('open-ils.acq')->request(
317 'open-ils.acq.user_request.cancel.batch.atomic',
318 $script->authtoken, [ $aur_id ], 1015); # Canceled: Fulfilled
319 if (my $resp = $req->recv) {
320 if (my $return = $resp->content) {
321 # -----------------------------------------------------------------------------
322 # 24. Check for activated purchase order
323 # -----------------------------------------------------------------------------
324 is($return->[1]->{'complete'},1,'User request canceled with Canceled: Fulfilled');
328 $req = $script->session('open-ils.pcrud')->request(
329 'open-ils.pcrud.retrieve.aurs',
330 $script->authtoken, $aur->id);
331 if (my $resp = $req->recv) {
332 if (my $aurs = $resp->content) {
333 # -----------------------------------------------------------------------------
334 # 25, 26. Check user request status Ordered, No Hold Placed
335 # -----------------------------------------------------------------------------
336 is($aurs->id,$aur->id,'Re-retrieved status-enhanced user request');
337 is($aurs->request_status,7,'Request Status = Canceled');