Files
wp-graphql-woocommerce/tests/acceptance/NewCustomerCheckingOutCept.php
Geoffrey K TaylorandGitHub 9073793e86 chore: WPGraphQL v1.9.x connection resolver support added and autoloader removed. (#647)
* chore: WPGraphQL v1.9x + WP Bedrock support added.

* chore: lint compliance met.

* chore: composer/installers added back to allow-plugins
2022-08-26 14:53:36 -04:00

212 lines
6.2 KiB
PHP

<?php
$I = new AcceptanceTester( $scenario );
// Create products
$product_catalog = $I->getCatalog();
// Make quick helper for managing the session token.
$request_headers = function () use ( $I, &$last_request_headers ) {
$last_request_headers = [
'woocommerce-session' => 'Session ' . $I->wantHTTPResponseHeaders( 'woocommerce-session' ),
];
return $last_request_headers;
};
// Begin test.
$I->wantTo( 'add items to the cart' );
/**
* Add "T-Shirt" to cart and confirm response data.
*/
$add_to_cart_input = [
'clientMutationId' => 'someId',
'productId' => $product_catalog['t-shirt'],
'quantity' => 3,
];
$success = $I->addToCart( $add_to_cart_input );
$I->assertArrayNotHasKey( 'errors', $success );
$I->assertArrayHasKey( 'data', $success );
$I->assertArrayHasKey( 'addToCart', $success['data'] );
$I->assertArrayHasKey( 'cartItem', $success['data']['addToCart'] );
$I->assertArrayHasKey( 'key', $success['data']['addToCart']['cartItem'] );
$shirt_key = $success['data']['addToCart']['cartItem']['key'];
/**
* Add "Belt" to cart and confirm response data.
*/
$add_to_cart_input = [
'clientMutationId' => 'someId',
'productId' => $product_catalog['belt'],
'quantity' => 2,
];
$success = $I->addToCart(
$add_to_cart_input,
$request_headers()
);
$I->assertArrayNotHasKey( 'errors', $success );
$I->assertArrayHasKey( 'data', $success );
$I->assertArrayHasKey( 'addToCart', $success['data'] );
$I->assertArrayHasKey( 'cartItem', $success['data']['addToCart'] );
$I->assertArrayHasKey( 'key', $success['data']['addToCart']['cartItem'] );
$belt_key = $success['data']['addToCart']['cartItem']['key'];
/**
* Add "Jeans" to cart and confirm response data.
*/
$add_to_cart_input = [
'clientMutationId' => 'someId',
'productId' => $product_catalog['jeans'],
'quantity' => 4,
];
$success = $I->addToCart(
$add_to_cart_input,
$request_headers()
);
$I->assertArrayNotHasKey( 'errors', $success );
$I->assertArrayHasKey( 'data', $success );
$I->assertArrayHasKey( 'addToCart', $success['data'] );
$I->assertArrayHasKey( 'cartItem', $success['data']['addToCart'] );
$I->assertArrayHasKey( 'key', $success['data']['addToCart']['cartItem'] );
$jeans_key = $success['data']['addToCart']['cartItem']['key'];
/**
* Add "Socks" to cart and confirm response data.
*/
$add_to_cart_input = [
'clientMutationId' => 'someId',
'productId' => $product_catalog['socks'],
'quantity' => 1,
];
$success = $I->addToCart(
$add_to_cart_input,
$request_headers()
);
$I->assertArrayNotHasKey( 'errors', $success );
$I->assertArrayHasKey( 'data', $success );
$I->assertArrayHasKey( 'addToCart', $success['data'] );
$I->assertArrayHasKey( 'cartItem', $success['data']['addToCart'] );
$I->assertArrayHasKey( 'key', $success['data']['addToCart']['cartItem'] );
$socks_key = $success['data']['addToCart']['cartItem']['key'];
$I->wantTo( 'remove some items from the cart' );
/**
* Remove "Socks" from cart and confirm response data.
*/
$remove_from_cart_input = [
'clientMutationId' => 'someId',
'keys' => $socks_key,
];
$success = $I->removeItemsFromCart(
$remove_from_cart_input,
$request_headers()
);
$I->assertArrayNotHasKey( 'errors', $success );
$I->assertArrayHasKey( 'data', $success );
$I->assertArrayHasKey( 'removeItemsFromCart', $success['data'] );
$I->assertArrayHasKey( 'cartItems', $success['data']['removeItemsFromCart'] );
$I->assertCount( 1, $success['data']['removeItemsFromCart']['cartItems'] );
$I->wantTo( 'update an item in the cart' );
/**
* - Change "Belt" quantity to "0" removing it from the cart.
* - Change "Jeans" quantity to "1"
* - Confirm response data.
*/
$update_quantity_input = [
'clientMutationId' => 'someId',
'items' => [
[
'key' => $belt_key,
'quantity' => 0,
],
[
'key' => $jeans_key,
'quantity' => 1,
],
],
];
$success = $I->updateItemQuantities(
$update_quantity_input,
/**
* "removeItemsFromCart" mutation does not update the session token so we can
* use the request headers used on the last request
*/
$last_request_headers
);
$I->assertArrayNotHasKey( 'errors', $success );
$I->assertArrayHasKey( 'data', $success );
$I->assertArrayHasKey( 'updateItemQuantities', $success['data'] );
$I->assertArrayHasKey( 'removed', $success['data']['updateItemQuantities'] );
$I->assertCount( 1, $success['data']['updateItemQuantities']['removed'] );
$I->assertArrayHasKey( 'updated', $success['data']['updateItemQuantities'] );
$I->assertCount( 1, $success['data']['updateItemQuantities']['updated'] );
$I->assertArrayHasKey( 'items', $success['data']['updateItemQuantities'] );
$I->assertCount( 2, $success['data']['updateItemQuantities']['items'] );
$I->wantTo( 'checkout' );
/**
* Place order for items in the cart using the "Checkout" mutation and confirm response data.
*/
$checkout_input = [
'clientMutationId' => 'someId',
'paymentMethod' => 'bacs',
'shippingMethod' => [ 'flat rate' ],
'billing' => [
'firstName' => 'May',
'lastName' => 'Parker',
'address1' => '20 Ingram St',
'city' => 'New York City',
'state' => 'NY',
'postcode' => '12345',
'country' => 'US',
'email' => 'superfreak500@gmail.com',
'phone' => '555-555-1234',
],
'shipping' => [
'firstName' => 'May',
'lastName' => 'Parker',
'address1' => '20 Ingram St',
'city' => 'New York City',
'state' => 'NY',
'postcode' => '12345',
'country' => 'US',
],
];
$success = $I->checkout(
$checkout_input,
/**
* "updateItemQuantities" mutation does not update the session token so we can
* use the request headers used on the last request
*/
$last_request_headers
);
// use --debug flag to view
codecept_debug( $success );
$I->assertArrayNotHasKey( 'errors', $success );
$I->assertArrayHasKey( 'data', $success );
$I->assertArrayHasKey( 'checkout', $success['data'] );
$I->assertArrayHasKey( 'order', $success['data']['checkout'] );
$I->assertArrayHasKey( 'customer', $success['data']['checkout'] );
$I->assertArrayHasKey( 'result', $success['data']['checkout'] );
$I->assertEquals( 'success', $success['data']['checkout']['result'] );
$I->assertArrayHasKey( 'redirect', $success['data']['checkout'] );
$I->assertArrayHasKey( 'id', $success['data']['checkout']['order'] );