OrderActionRestTest.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace Webkul\BagistoApi\Tests\Feature\Rest;
  3. use Webkul\Sales\Models\Order;
  4. use Webkul\Sales\Models\OrderItem;
  5. use Webkul\Sales\Models\OrderPayment;
  6. use Webkul\Product\Models\Product;
  7. /**
  8. * Use the REST test helper to test Cancel and Reorder endpoints.
  9. */
  10. uses(\Webkul\BagistoApi\Tests\RestApiTestCase::class);
  11. /**
  12. * Helper to create a test order for a customer.
  13. */
  14. function createRestTestOrder($test, $customer, $status = 'pending') {
  15. $product = Product::factory()->create();
  16. $order = Order::factory()->create([
  17. 'customer_id' => $customer->id,
  18. 'customer_email' => $customer->email,
  19. 'customer_first_name' => $customer->first_name,
  20. 'customer_last_name' => $customer->last_name,
  21. 'status' => $status,
  22. ]);
  23. OrderItem::factory()->create([
  24. 'order_id' => $order->id,
  25. 'product_id' => $product->id,
  26. 'qty_ordered' => 1,
  27. ]);
  28. OrderPayment::factory()->create(['order_id' => $order->id]);
  29. return $order;
  30. }
  31. test('REST: customer can cancel their own pending order', function () {
  32. $this->seedRequiredData();
  33. $customer = $this->createCustomer();
  34. $order = createRestTestOrder($this, $customer, 'pending');
  35. $response = $this->authenticatedPost($customer, '/api/shop/cancel-order', [
  36. 'orderId' => $order->id
  37. ]);
  38. $response->assertOk()
  39. ->assertJsonPath('success', true)
  40. ->assertJsonPath('status', 'canceled');
  41. });
  42. test('REST: customer can reorder from a previous order', function () {
  43. $this->seedRequiredData();
  44. $customer = $this->createCustomer();
  45. $order = createRestTestOrder($this, $customer, 'completed');
  46. $response = $this->authenticatedPost($customer, '/api/shop/reorder', [
  47. 'orderId' => $order->id
  48. ]);
  49. $response->assertOk()
  50. ->assertJsonPath('success', true);
  51. });