@@ -26,6 +26,16 @@ protected function setUp() {
26
26
protected function tearDown () {
27
27
28
28
}
29
+
30
+ public function testSetMarketplace () {
31
+ $ this ->assertNull ($ this ->object ->setMarketplace ('ATVPDKIKX0DER2 ' ));
32
+ $ o = $ this ->object ->getOptions ();
33
+ $ this ->assertArrayHasKey ('MarketplaceId ' , $ o );
34
+ $ this ->assertEquals ('ATVPDKIKX0DER2 ' , $ o ['MarketplaceId ' ]);
35
+ $ this ->assertFalse ($ this ->object ->setMarketplace (77 )); //won't work for numbers
36
+ $ this ->assertFalse ($ this ->object ->setMarketplace (array ())); //won't work for this
37
+ $ this ->assertFalse ($ this ->object ->setMarketplace (null )); //won't work for other things
38
+ }
29
39
30
40
public function testSetFulfillmentOrderId (){
31
41
$ this ->assertFalse ($ this ->object ->setFulfillmentOrderId (null )); //can't be nothing
@@ -44,6 +54,20 @@ public function testSetDisplayableOrderId(){
44
54
$ this ->assertArrayHasKey ('DisplayableOrderId ' ,$ o );
45
55
$ this ->assertEquals ('ABC123 ' ,$ o ['DisplayableOrderId ' ]);
46
56
}
57
+
58
+ public function testSetFulfillmentAction () {
59
+ $ this ->assertFalse ($ this ->object ->setFulfillmentAction (null )); //can't be nothing
60
+ $ this ->assertFalse ($ this ->object ->setFulfillmentAction (5 )); //can't be an int
61
+ $ this ->assertFalse ($ this ->object ->setFulfillmentAction ('wrong ' )); //not a valid value
62
+ $ this ->assertNull ($ this ->object ->setFulfillmentAction ('Ship ' ));
63
+ $ this ->assertNull ($ this ->object ->setFulfillmentAction ('Hold ' ));
64
+ $ o = $ this ->object ->getOptions ();
65
+ $ this ->assertArrayHasKey ('FulfillmentAction ' , $ o );
66
+ $ this ->assertEquals ('Hold ' , $ o ['FulfillmentAction ' ]);
67
+
68
+ $ check = parseLog ();
69
+ $ this ->assertEquals ('Tried to set fulfillment action to invalid value ' , $ check [1 ]);
70
+ }
47
71
48
72
public function testSetDate (){
49
73
$ this ->assertFalse ($ this ->object ->setDate (null )); //can't be nothing
@@ -186,7 +210,96 @@ public function testSetEmails(){
186
210
$ o3 = $ this ->object ->getOptions ();
187
211
$ this ->assertArrayNotHasKey ('NotificationEmailList.member.1 ' ,$ o3 );
188
212
}
213
+
214
+ public function testSetCodSettings () {
215
+ $ this ->assertFalse ($ this ->object ->setCodSettings (null )); //can't be nothing
216
+
217
+ $ this ->assertNull ($ this ->object ->setCodSettings ('USD ' , TRUE , '5 ' , '6 ' , '7 ' , '8 ' ));
218
+
219
+ $ o = $ this ->object ->getOptions ();
220
+ $ this ->assertArrayHasKey ('CODSettings.IsCODRequired ' , $ o );
221
+ $ this ->assertEquals ('true ' , $ o ['CODSettings.IsCODRequired ' ]);
222
+ $ this ->assertArrayHasKey ('CODSettings.CODCharge.Value ' , $ o );
223
+ $ this ->assertEquals ('5 ' , $ o ['CODSettings.CODCharge.Value ' ]);
224
+ $ this ->assertArrayHasKey ('CODSettings.CODCharge.CurrencyCode ' , $ o );
225
+ $ this ->assertEquals ('USD ' , $ o ['CODSettings.CODCharge.CurrencyCode ' ]);
226
+ $ this ->assertArrayHasKey ('CODSettings.CODChargeTax.Value ' , $ o );
227
+ $ this ->assertEquals ('6 ' , $ o ['CODSettings.CODChargeTax.Value ' ]);
228
+ $ this ->assertArrayHasKey ('CODSettings.CODChargeTax.CurrencyCode ' , $ o );
229
+ $ this ->assertEquals ('USD ' , $ o ['CODSettings.CODChargeTax.CurrencyCode ' ]);
230
+ $ this ->assertArrayHasKey ('CODSettings.ShippingCharge.Value ' , $ o );
231
+ $ this ->assertEquals ('7 ' , $ o ['CODSettings.ShippingCharge.Value ' ]);
232
+ $ this ->assertArrayHasKey ('CODSettings.ShippingCharge.CurrencyCode ' , $ o );
233
+ $ this ->assertEquals ('USD ' , $ o ['CODSettings.ShippingCharge.CurrencyCode ' ]);
234
+ $ this ->assertArrayHasKey ('CODSettings.ShippingChargeTax.Value ' , $ o );
235
+ $ this ->assertEquals ('8 ' , $ o ['CODSettings.ShippingChargeTax.Value ' ]);
236
+ $ this ->assertArrayHasKey ('CODSettings.ShippingChargeTax.CurrencyCode ' , $ o );
237
+ $ this ->assertEquals ('USD ' , $ o ['CODSettings.ShippingChargeTax.CurrencyCode ' ]);
238
+
239
+ //using again does not cause reset
240
+ $ this ->assertNull ($ this ->object ->setCodSettings ('EUR ' , NULL , NULL , '5.60 ' , '99 ' , NULL ));
241
+ $ o2 = $ this ->object ->getOptions ();
242
+ $ this ->assertArrayHasKey ('CODSettings.CODChargeTax.Value ' , $ o2 );
243
+ $ this ->assertEquals ('5.60 ' , $ o2 ['CODSettings.CODChargeTax.Value ' ]);
244
+ $ this ->assertArrayHasKey ('CODSettings.CODChargeTax.CurrencyCode ' , $ o2 );
245
+ $ this ->assertEquals ('EUR ' , $ o2 ['CODSettings.CODChargeTax.CurrencyCode ' ]);
246
+ $ this ->assertArrayHasKey ('CODSettings.ShippingCharge.Value ' , $ o2 );
247
+ $ this ->assertEquals ('99 ' , $ o2 ['CODSettings.ShippingCharge.Value ' ]);
248
+ $ this ->assertArrayHasKey ('CODSettings.ShippingCharge.CurrencyCode ' , $ o2 );
249
+ $ this ->assertEquals ('EUR ' , $ o2 ['CODSettings.ShippingCharge.CurrencyCode ' ]);
250
+ //these are the same as before
251
+ $ this ->assertArrayHasKey ('CODSettings.CODCharge.Value ' , $ o2 );
252
+ $ this ->assertEquals ('5 ' , $ o2 ['CODSettings.CODCharge.Value ' ]);
253
+ $ this ->assertArrayHasKey ('CODSettings.CODCharge.CurrencyCode ' , $ o2 );
254
+ $ this ->assertEquals ('USD ' , $ o2 ['CODSettings.CODCharge.CurrencyCode ' ]);
255
+ $ this ->assertArrayHasKey ('CODSettings.ShippingChargeTax.Value ' , $ o2 );
256
+ $ this ->assertEquals ('8 ' , $ o2 ['CODSettings.ShippingChargeTax.Value ' ]);
257
+ $ this ->assertArrayHasKey ('CODSettings.ShippingChargeTax.CurrencyCode ' , $ o2 );
258
+ $ this ->assertEquals ('USD ' , $ o2 ['CODSettings.ShippingChargeTax.CurrencyCode ' ]);
259
+
260
+ $ this ->object ->resetCodSettings ();
261
+ $ o3 = $ this ->object ->getOptions ();
262
+ $ this ->assertArrayNotHasKey ('CODSettings.IsCODRequired ' , $ o3 );
263
+ $ this ->assertArrayNotHasKey ('CODSettings.CODCharge.Value ' , $ o3 );
264
+ $ this ->assertArrayNotHasKey ('CODSettings.CODCharge.CurrencyCode ' , $ o3 );
265
+ $ this ->assertArrayNotHasKey ('CODSettings.CODChargeTax.Value ' , $ o3 );
266
+ $ this ->assertArrayNotHasKey ('CODSettings.CODChargeTax.CurrencyCode ' , $ o3 );
267
+ $ this ->assertArrayNotHasKey ('CODSettings.ShippingCharge.Value ' , $ o3 );
268
+ $ this ->assertArrayNotHasKey ('CODSettings.ShippingCharge.CurrencyCode ' , $ o3 );
269
+ $ this ->assertArrayNotHasKey ('CODSettings.ShippingChargeTax.Value ' , $ o3 );
270
+ $ this ->assertArrayNotHasKey ('CODSettings.ShippingChargeTax.CurrencyCode ' , $ o3 );
271
+ }
189
272
273
+ /**
274
+ * @return array
275
+ */
276
+ public function timeProvider () {
277
+ return array (
278
+ array (null , null , false ), //nothing given, so no change
279
+ array ('' , '' , false ), //strings, but empty
280
+ array ('-1 min ' , null , false ), //one set
281
+ array (null , '-1 min ' , false ), //other set
282
+ array ('-1 min ' , '-1 min ' , true ), //both set
283
+ );
284
+ }
285
+
286
+ /**
287
+ * @dataProvider timeProvider
288
+ */
289
+ public function testSetDeliveryWindow ($ a , $ b , $ c ) {
290
+ $ this ->object ->setDeliveryWindow ($ a , $ b );
291
+ $ o = $ this ->object ->getOptions ();
292
+ if ($ c ) {
293
+ $ this ->assertArrayHasKey ('DeliveryWindow.StartDateTime ' , $ o );
294
+ $ this ->assertStringMatchesFormat ('%d-%d-%dT%d:%d:%d%i ' , $ o ['DeliveryWindow.StartDateTime ' ]);
295
+ $ this ->assertArrayHasKey ('DeliveryWindow.EndDateTime ' , $ o );
296
+ $ this ->assertStringMatchesFormat ('%d-%d-%dT%d:%d:%d%i ' , $ o ['DeliveryWindow.EndDateTime ' ]);
297
+ } else {
298
+ $ this ->assertArrayNotHasKey ('DeliveryWindow.StartDateTime ' , $ o );
299
+ $ this ->assertArrayNotHasKey ('DeliveryWindow.EndDateTime ' , $ o );
300
+ }
301
+ }
302
+
190
303
public function testSetItems (){
191
304
$ this ->assertFalse ($ this ->object ->setItems (null )); //can't be nothing
192
305
$ this ->assertFalse ($ this ->object ->setItems ('item ' )); //can't be a string
@@ -223,6 +336,10 @@ public function testSetItems(){
223
336
$ i [0 ]['OrderItemDisposition ' ] = 'OrderItemDisposition ' ;
224
337
$ i [0 ]['PerUnitDeclaredValue ' ]['CurrencyCode ' ] = 'USD ' ;
225
338
$ i [0 ]['PerUnitDeclaredValue ' ]['Value ' ] = '9.99 ' ;
339
+ $ i [0 ]['PerUnitPrice ' ]['CurrencyCode ' ] = 'USD ' ;
340
+ $ i [0 ]['PerUnitPrice ' ]['Value ' ] = '20.01 ' ;
341
+ $ i [0 ]['PerUnitTax ' ]['CurrencyCode ' ] = 'USD ' ;
342
+ $ i [0 ]['PerUnitTax ' ]['Value ' ] = '3.50 ' ;
226
343
$ i [1 ]['SellerSKU ' ] = 'SellerSKU2 ' ;
227
344
$ i [1 ]['SellerFulfillmentOrderItemId ' ] = 'SellerFulfillmentOrderItemId2 ' ;
228
345
$ i [1 ]['Quantity ' ] = 'Quantity2 ' ;
@@ -248,6 +365,14 @@ public function testSetItems(){
248
365
$ this ->assertEquals ('USD ' ,$ o ['Items.member.1.PerUnitDeclaredValue.CurrencyCode ' ]);
249
366
$ this ->assertArrayHasKey ('Items.member.1.PerUnitDeclaredValue.Value ' ,$ o );
250
367
$ this ->assertEquals ('9.99 ' ,$ o ['Items.member.1.PerUnitDeclaredValue.Value ' ]);
368
+ $ this ->assertArrayHasKey ('Items.member.1.PerUnitPrice.CurrencyCode ' ,$ o );
369
+ $ this ->assertEquals ('USD ' ,$ o ['Items.member.1.PerUnitPrice.CurrencyCode ' ]);
370
+ $ this ->assertArrayHasKey ('Items.member.1.PerUnitPrice.Value ' ,$ o );
371
+ $ this ->assertEquals ('20.01 ' ,$ o ['Items.member.1.PerUnitPrice.Value ' ]);
372
+ $ this ->assertArrayHasKey ('Items.member.1.PerUnitTax.CurrencyCode ' ,$ o );
373
+ $ this ->assertEquals ('USD ' ,$ o ['Items.member.1.PerUnitTax.CurrencyCode ' ]);
374
+ $ this ->assertArrayHasKey ('Items.member.1.PerUnitTax.Value ' ,$ o );
375
+ $ this ->assertEquals ('3.50 ' ,$ o ['Items.member.1.PerUnitTax.Value ' ]);
251
376
$ this ->assertArrayHasKey ('Items.member.2.SellerSKU ' ,$ o );
252
377
$ this ->assertEquals ('SellerSKU2 ' ,$ o ['Items.member.2.SellerSKU ' ]);
253
378
$ this ->assertArrayHasKey ('Items.member.2.SellerFulfillmentOrderItemId ' ,$ o );
@@ -334,6 +459,61 @@ public function testCreateOrder(){
334
459
$ this ->assertEquals ('Returning Mock Response: 200 ' ,$ check [11 ]);
335
460
$ this ->assertEquals ('Successfully created Fulfillment Order 123ABC / ABC123 ' ,$ check [12 ]);
336
461
}
462
+
463
+ public function testUpdateOrder () {
464
+ resetLog ();
465
+ $ this ->object ->setMock (true , array (503 , 200 ));
466
+
467
+ $ this ->assertFalse ($ this ->object ->updateOrder ()); //no Seller Fulfillment Order ID set yet
468
+
469
+ $ this ->object ->setFulfillmentOrderId ('123ABC ' );
470
+ $ this ->assertFalse ($ this ->object ->updateOrder ()); //no Displayable Order ID set yet
471
+
472
+ $ this ->object ->setDisplayableOrderId ('ABC123 ' );
473
+ $ this ->assertFalse ($ this ->object ->updateOrder ()); //no Date set yet
474
+
475
+ $ this ->object ->setDate ('-1 min ' );
476
+ $ this ->assertFalse ($ this ->object ->updateOrder ()); //no Displayable Order Comment set yet
477
+
478
+ $ this ->object ->setComment ('A comment. ' );
479
+ $ this ->assertFalse ($ this ->object ->updateOrder ()); //no Shipping Speed Category set yet
480
+
481
+ $ this ->object ->setShippingSpeed ('Standard ' );
482
+ $ this ->assertFalse ($ this ->object ->updateOrder ()); //no Destination Address set yet
483
+
484
+ $ a = array ();
485
+ $ a ['Name ' ] = 'Name ' ;
486
+ $ a ['Line1 ' ] = 'Line1 ' ;
487
+ $ a ['City ' ] = 'City ' ;
488
+ $ a ['StateOrProvinceCode ' ] = 'StateOrProvinceCode ' ;
489
+ $ a ['CountryCode ' ] = 'CountryCode ' ;
490
+ $ a ['PostalCode ' ] = 'PostalCode ' ;
491
+ $ this ->object ->setAddress ($ a );
492
+ $ this ->assertFalse ($ this ->object ->updateOrder ()); //no Items set yet
493
+
494
+ $ i = array ();
495
+ $ i [0 ]['SellerSKU ' ] = 'NewSellerSKU ' ;
496
+ $ i [0 ]['SellerFulfillmentOrderItemId ' ] = 'NewSellerFulfillmentOrderItemId ' ;
497
+ $ i [0 ]['Quantity ' ] = 'NewQuantity ' ;
498
+ $ this ->object ->setItems ($ i );
499
+
500
+ $ this ->object ->updateOrder (); //attempt 1: oops, bad response
501
+ $ this ->object ->updateOrder (); //attempt 2: success
502
+
503
+ $ check = parseLog ();
504
+ $ this ->assertEquals ('Mock files array set. ' , $ check [1 ]);
505
+ $ this ->assertEquals ('Seller Fulfillment OrderID must be set in order to update an order ' , $ check [2 ]);
506
+ $ this ->assertEquals ('Displayable Order ID must be set in order to update an order ' , $ check [3 ]);
507
+ $ this ->assertEquals ('Date must be set in order to update an order ' , $ check [4 ]);
508
+ $ this ->assertEquals ('Comment must be set in order to update an order ' , $ check [5 ]);
509
+ $ this ->assertEquals ('Shipping Speed must be set in order to update an order ' , $ check [6 ]);
510
+ $ this ->assertEquals ('Address must be set in order to update an order ' , $ check [7 ]);
511
+ $ this ->assertEquals ('Items must be set in order to update an order ' , $ check [8 ]);
512
+ $ this ->assertEquals ('Returning Mock Response: 503 ' , $ check [9 ]);
513
+ $ this ->assertEquals ('Bad Response! 503 Service Unavailable: Service Unavailable - Service Unavailable ' , $ check [10 ]);
514
+ $ this ->assertEquals ('Returning Mock Response: 200 ' , $ check [11 ]);
515
+ $ this ->assertEquals ('Successfully updated Fulfillment Order 123ABC / ABC123 ' , $ check [12 ]);
516
+ }
337
517
338
518
}
339
519
0 commit comments