finish testCheckoutAsCustomer
This commit is contained in:
parent
781d360ce7
commit
895978e600
|
|
@ -837,7 +837,7 @@ class Cart
|
||||||
*/
|
*/
|
||||||
public function hasError()
|
public function hasError()
|
||||||
{
|
{
|
||||||
if (!$this->getCart()) {
|
if (! $this->getCart()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,8 @@ class Laravel5Helper extends Laravel5
|
||||||
'company_name' => $faker->company,
|
'company_name' => $faker->company,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (isset($options['payment_method']) && $options['payment_method'] === 'free_of_charge') {
|
if (isset($options['payment_method'])
|
||||||
|
&& $options['payment_method'] === 'free_of_charge') {
|
||||||
$grand_total = '0.0000';
|
$grand_total = '0.0000';
|
||||||
$base_grand_total = '0.0000';
|
$base_grand_total = '0.0000';
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -122,11 +123,10 @@ class Laravel5Helper extends Laravel5
|
||||||
|
|
||||||
$cartAddress = $I->have(CartAddress::class, ['cart_id' => $cart->id]);
|
$cartAddress = $I->have(CartAddress::class, ['cart_id' => $cart->id]);
|
||||||
|
|
||||||
|
|
||||||
if (isset($options['product_type'])) {
|
if (isset($options['product_type'])) {
|
||||||
$type = $options['product_type'];
|
$type = $options['product_type'];
|
||||||
} else {
|
} else {
|
||||||
$type = 'virtual';
|
$type = 'simple';
|
||||||
}
|
}
|
||||||
|
|
||||||
$generatedCartItems = rand(3, 10);
|
$generatedCartItems = rand(3, 10);
|
||||||
|
|
@ -166,7 +166,11 @@ class Laravel5Helper extends Laravel5
|
||||||
* @return \Webkul\Product\Models\Product
|
* @return \Webkul\Product\Models\Product
|
||||||
* @part ORM
|
* @part ORM
|
||||||
*/
|
*/
|
||||||
public function haveProduct(int $productType, array $configs = [], array $productStates = []): Product
|
public function haveProduct(
|
||||||
|
int $productType,
|
||||||
|
array $configs = [],
|
||||||
|
array $productStates = []
|
||||||
|
): Product
|
||||||
{
|
{
|
||||||
$I = $this;
|
$I = $this;
|
||||||
|
|
||||||
|
|
@ -218,9 +222,13 @@ class Laravel5Helper extends Laravel5
|
||||||
*
|
*
|
||||||
* @return \Webkul\Product\Models\Product
|
* @return \Webkul\Product\Models\Product
|
||||||
*/
|
*/
|
||||||
private function haveSimpleProduct(array $configs = [], array $productStates = []): Product
|
private function haveSimpleProduct(
|
||||||
|
array $configs = [],
|
||||||
|
array $productStates = []
|
||||||
|
): Product
|
||||||
{
|
{
|
||||||
$I = $this;
|
$I = $this;
|
||||||
|
|
||||||
if (! in_array('simple', $productStates)) {
|
if (! in_array('simple', $productStates)) {
|
||||||
$productStates = array_merge($productStates, ['simple']);
|
$productStates = array_merge($productStates, ['simple']);
|
||||||
}
|
}
|
||||||
|
|
@ -299,10 +307,13 @@ class Laravel5Helper extends Laravel5
|
||||||
private function createInventory(int $productId, array $inventoryConfig = []): void
|
private function createInventory(int $productId, array $inventoryConfig = []): void
|
||||||
{
|
{
|
||||||
$I = $this;
|
$I = $this;
|
||||||
|
|
||||||
$I->have(ProductInventory::class, array_merge($inventoryConfig, [
|
$I->have(ProductInventory::class, array_merge($inventoryConfig, [
|
||||||
'product_id' => $productId,
|
'product_id' => $productId,
|
||||||
'inventory_source_id' => 1,
|
'inventory_source_id' => 1,
|
||||||
|
'qty' => random_int(100, 666),
|
||||||
]));
|
]));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -57,12 +57,14 @@ class OnepageController extends Controller
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
if (! auth()->guard('customer')->check() && ! core()->getConfigData('catalog.products.guest-checkout.allow-guest-checkout')) {
|
if (! auth()->guard('customer')->check()
|
||||||
|
&& ! core()->getConfigData('catalog.products.guest-checkout.allow-guest-checkout')) {
|
||||||
return redirect()->route('customer.session.index');
|
return redirect()->route('customer.session.index');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Cart::hasError())
|
if (Cart::hasError()) {
|
||||||
return redirect()->route('shop.checkout.cart.index');
|
return redirect()->route('shop.checkout.cart.index');
|
||||||
|
}
|
||||||
|
|
||||||
$cart = Cart::getCart();
|
$cart = Cart::getCart();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -115,13 +115,17 @@ class FunctionalTester extends \Codeception\Actor
|
||||||
{
|
{
|
||||||
foreach ($data as $key => $value) {
|
foreach ($data as $key => $value) {
|
||||||
if (DB::table('core_config')->where('code', '=', $key)->exists()) {
|
if (DB::table('core_config')->where('code', '=', $key)->exists()) {
|
||||||
DB::table('core_config')->where('code', '=', $key)->update(['value' => $value]);
|
DB::table('core_config')
|
||||||
|
->where('code', '=', $key)
|
||||||
|
->update(['value' => $value]);
|
||||||
} else {
|
} else {
|
||||||
DB::table('core_config')->insert([
|
DB::table('core_config')->insert([
|
||||||
'code' => $key,
|
'code' => $key,
|
||||||
'value' => $value,
|
'value' => $value,
|
||||||
'created_at' => date('Y-m-d H:i:s'),
|
'channel_code' => null,
|
||||||
'updated_at' => date('Y-m-d H:i:s'),
|
'locale_code' => null,
|
||||||
|
'created_at' => date('Y-m-d H:i:s'),
|
||||||
|
'updated_at' => date('Y-m-d H:i:s'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,27 +4,104 @@ namespace Tests\Functional\Checkout\Cart;
|
||||||
|
|
||||||
use FunctionalTester;
|
use FunctionalTester;
|
||||||
use Cart;
|
use Cart;
|
||||||
use Codeception\Example;
|
use Webkul\Sales\Models\OrderAddress;
|
||||||
|
use Webkul\Checkout\Models\CartAddress;
|
||||||
|
|
||||||
class OrderCest
|
class OrderCest
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \FunctionalTester $I
|
* @param \FunctionalTester $I
|
||||||
*
|
|
||||||
* @example {"isGuest": true}
|
|
||||||
*
|
|
||||||
* @example {"isGuest": false}
|
|
||||||
*/
|
*/
|
||||||
public function testCheckout(FunctionalTester $I, Example $example)
|
public function testCheckoutAsCustomer(FunctionalTester $I)
|
||||||
{
|
{
|
||||||
if (! $example['isGuest']) {
|
$customer = $I->loginAsCustomer();
|
||||||
$I->loginAsCustomer();
|
|
||||||
}
|
|
||||||
|
|
||||||
$I->prepareCart();
|
$mocks = $I->prepareCart([
|
||||||
|
'customer' => $customer,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// assert that checkout can be reached and generate csrf token.
|
||||||
|
$I->amOnRoute('shop.checkout.onepage.index');
|
||||||
|
|
||||||
|
// simulate the entering of the address(es):
|
||||||
|
$I->sendAjaxPostRequest(route('shop.checkout.save-address'), [
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'billing' => [
|
||||||
|
'address1' => ['900 Nobel Parkway'],
|
||||||
|
'city' => 'Quia et cillum rerum',
|
||||||
|
'company_name' => 'Davis and Best Plc',
|
||||||
|
'country' => 'TN',
|
||||||
|
'email' => 'kularynefo@mailinator.com',
|
||||||
|
'first_name' => 'Maggie',
|
||||||
|
'last_name' => 'Paul',
|
||||||
|
'phone' => '+1 (995) 347-2667',
|
||||||
|
'postcode' => '16239',
|
||||||
|
'save_as_address' => true,
|
||||||
|
'state' => 'Aperiam a eligendi a',
|
||||||
|
'use_for_shipping' => true,
|
||||||
|
],
|
||||||
|
'shipping' => [
|
||||||
|
'address1' => ['900 Nobel Parkway'],
|
||||||
|
'city' => 'Quia et cillum rerum',
|
||||||
|
'company_name' => 'Davis and Best Plc',
|
||||||
|
'country' => 'TN',
|
||||||
|
'email' => 'kularynefo@mailinator.com',
|
||||||
|
'first_name' => 'Maggie',
|
||||||
|
'last_name' => 'Paul',
|
||||||
|
'phone' => '+1 (995) 347-2667',
|
||||||
|
'postcode' => '16239',
|
||||||
|
'save_as_address' => true,
|
||||||
|
'state' => 'Aperiam a eligendi a',
|
||||||
|
'use_for_shipping' => true,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$I->seeResponseCodeIsSuccessful();
|
||||||
|
|
||||||
|
$I->seeRecord(CartAddress::class, [
|
||||||
|
'city' => 'Quia et cillum rerum',
|
||||||
|
'company_name' => 'Davis and Best Plc',
|
||||||
|
'country' => 'TN',
|
||||||
|
'email' => 'kularynefo@mailinator.com',
|
||||||
|
'first_name' => 'Maggie',
|
||||||
|
'last_name' => 'Paul',
|
||||||
|
'phone' => '+1 (995) 347-2667',
|
||||||
|
'postcode' => '16239',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$I->sendAjaxPostRequest(route('shop.checkout.save-shipping'), [
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'shipping_method' => 'free_free',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$I->seeResponseCodeIsSuccessful();
|
||||||
|
|
||||||
|
$I->sendAjaxPostRequest(route('shop.checkout.save-payment'), [
|
||||||
|
'_token' => csrf_token(),
|
||||||
|
'payment' => [
|
||||||
|
'method' => 'cashondelivery',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$I->seeResponseCodeIsSuccessful();
|
||||||
|
|
||||||
|
// simulate click on the 'place order' button at the last step:
|
||||||
|
$I->sendAjaxPostRequest(route('shop.checkout.save-order'),
|
||||||
|
['_token' => csrf_token()]
|
||||||
|
);
|
||||||
|
|
||||||
|
$I->seeResponseCodeIsSuccessful();
|
||||||
|
|
||||||
|
$I->seeRecord(OrderAddress::class, [
|
||||||
|
'city' => 'Quia et cillum rerum',
|
||||||
|
'company_name' => 'Davis and Best Plc',
|
||||||
|
'country' => 'TN',
|
||||||
|
'email' => 'kularynefo@mailinator.com',
|
||||||
|
'first_name' => 'Maggie',
|
||||||
|
'last_name' => 'Paul',
|
||||||
|
'phone' => '+1 (995) 347-2667',
|
||||||
|
'postcode' => '16239',
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue