From e094dfd09c5c9720b592e5b5ac92807403bcfb3a Mon Sep 17 00:00:00 2001 From: Herbert Maschke Date: Tue, 3 Mar 2020 11:18:18 +0100 Subject: [PATCH] add additional assertions to OrderCest.php --- .../Core/src/Helpers/Laravel5Helper.php | 23 +++++--- tests/functional/Checkout/Order/OrderCest.php | 53 ++++++++++++++++++- 2 files changed, 68 insertions(+), 8 deletions(-) diff --git a/packages/Webkul/Core/src/Helpers/Laravel5Helper.php b/packages/Webkul/Core/src/Helpers/Laravel5Helper.php index 051cdeab2..265cbe261 100644 --- a/packages/Webkul/Core/src/Helpers/Laravel5Helper.php +++ b/packages/Webkul/Core/src/Helpers/Laravel5Helper.php @@ -129,14 +129,24 @@ class Laravel5Helper extends Laravel5 $type = 'simple'; } + $totalQtyOrdered = 0; + + $cartItems = []; + $generatedCartItems = rand(3, 10); + for ($i = 2; $i <= $generatedCartItems; $i++) { + $quantity = random_int(1, 10); $cartItem = $I->have(CartItem::class, [ 'type' => $type, - 'quantity' => random_int(1, 10), + 'quantity' => $quantity, 'cart_id' => $cart->id, 'product_id' => $product->id, ]); + + $totalQtyOrdered += $quantity; + + $cartItems[] = $cartItem; } // actually set the cart to the user's session @@ -146,11 +156,12 @@ class Laravel5Helper extends Laravel5 $I->setSession(['cart' => $stub]); return [ - 'cart' => $cart, - 'product' => $product, - 'customer' => $customer, - 'cartAddress' => $cartAddress, - 'cartItem' => $cartItem, + 'cart' => $cart, + 'product' => $product, + 'customer' => $customer, + 'cartAddress' => $cartAddress, + 'cartItems' => $cartItems, + 'totalQtyOrdered' => $totalQtyOrdered, ]; } diff --git a/tests/functional/Checkout/Order/OrderCest.php b/tests/functional/Checkout/Order/OrderCest.php index da55b6ca6..03a7c89f0 100644 --- a/tests/functional/Checkout/Order/OrderCest.php +++ b/tests/functional/Checkout/Order/OrderCest.php @@ -5,8 +5,13 @@ namespace Tests\Functional\Checkout\Cart; use Faker\Factory; use FunctionalTester; use Cart; +use Webkul\Sales\Models\Order; use Webkul\Sales\Models\OrderAddress; +use Webkul\Sales\Models\OrderPayment; use Webkul\Checkout\Models\CartAddress; +use Webkul\Checkout\Models\CartPayment; +use Webkul\Customer\Models\Customer; +use Webkul\Core\Models\Channel; /** * Class OrderCest @@ -61,7 +66,15 @@ class OrderCest $I->seeResponseCodeIsSuccessful(); - $I->seeRecord(CartAddress::class, $addressData); + $I->seeRecord(CartAddress::class, array_merge($addressData, [ + 'address_type' => 'shipping', + 'cart_id' => $mocks['cart']->id, + ])); + + $I->seeRecord(CartAddress::class, array_merge($addressData, [ + 'address_type' => 'billing', + 'cart_id' => $mocks['cart']->id, + ])); $I->sendAjaxPostRequest(route('shop.checkout.save-shipping'), [ '_token' => csrf_token(), @@ -79,6 +92,12 @@ class OrderCest $I->seeResponseCodeIsSuccessful(); + $I->seeRecord(CartPayment::class, [ + 'method' => 'cashondelivery', + 'method_title' => null, + 'cart_id' => $mocks['cart']->id, + ]); + // simulate click on the 'place order' button at the last step: $I->sendAjaxPostRequest(route('shop.checkout.save-order'), ['_token' => csrf_token()] @@ -86,6 +105,36 @@ class OrderCest $I->seeResponseCodeIsSuccessful(); - $I->seeRecord(OrderAddress::class, $addressData); + $order = $I->grabRecord(Order::class, [ + 'status' => 'pending', + 'channel_name' => 'Default', + 'is_guest' => 0, + 'shipping_method' => 'free_free', + 'shipping_title' => 'Free Shipping - Free Shipping', + 'shipping_description' => 'Free Shipping', + 'customer_type' => Customer::class, + 'channel_id' => 1, + 'channel_type' => Channel::class, + 'cart_id' => $mocks['cart']->id, + 'customer_id' => $customer->id, + 'total_item_count' => count($mocks['cartItems']), + 'total_qty_ordered' => $mocks['totalQtyOrdered'], + ]); + + $I->seeRecord(OrderAddress::class, array_merge($addressData, [ + 'order_id' => $order->id, + 'address_type' => 'shipping', + ])); + + $I->seeRecord(OrderAddress::class, array_merge($addressData, [ + 'order_id' => $order->id, + 'address_type' => 'billing', + ])); + + $I->seeRecord(OrderPayment::class, [ + 'method' => 'cashondelivery', + 'method_title' => null, + 'order_id' => $order->id, + ]); } } \ No newline at end of file