Skip to content

Commit b64170a

Browse files
committed
GraphQL-428: Test coverage: GetAvailableShippingMethodsTest
1 parent d4c2b89 commit b64170a

File tree

6 files changed

+80
-97
lines changed

6 files changed

+80
-97
lines changed

dev/tests/api-functional/testsuite/Magento/GraphQl/Quote/Customer/GetAvailableShippingMethodsTest.php

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@
77

88
namespace Magento\GraphQl\Quote\Customer;
99

10+
use Magento\GraphQl\Quote\GetMaskedQuoteIdByReservedOrderId;
1011
use Magento\Integration\Api\CustomerTokenServiceInterface;
11-
use Magento\Quote\Model\QuoteFactory;
12-
use Magento\Quote\Model\QuoteIdToMaskedQuoteIdInterface;
13-
use Magento\Quote\Model\ResourceModel\Quote as QuoteResource;
1412
use Magento\TestFramework\Helper\Bootstrap;
1513
use Magento\TestFramework\TestCase\GraphQlAbstract;
1614

@@ -25,40 +23,32 @@ class GetAvailableShippingMethodsTest extends GraphQlAbstract
2523
private $customerTokenService;
2624

2725
/**
28-
* @var QuoteIdToMaskedQuoteIdInterface
26+
* @var GetMaskedQuoteIdByReservedOrderId
2927
*/
30-
private $quoteIdToMaskedId;
31-
32-
/**
33-
* @var QuoteFactory
34-
*/
35-
private $quoteFactory;
36-
37-
/**
38-
* @var QuoteResource
39-
*/
40-
private $quoteResource;
28+
private $getMaskedQuoteIdByReservedOrderId;
4129

4230
/**
4331
* @inheritdoc
4432
*/
4533
protected function setUp()
4634
{
4735
$objectManager = Bootstrap::getObjectManager();
48-
$this->quoteFactory = $objectManager->get(QuoteFactory::class);
49-
$this->quoteResource = $objectManager->get(QuoteResource::class);
36+
$this->getMaskedQuoteIdByReservedOrderId = $objectManager->get(GetMaskedQuoteIdByReservedOrderId::class);
5037
$this->customerTokenService = $objectManager->get(CustomerTokenServiceInterface::class);
51-
$this->quoteIdToMaskedId = $objectManager->get(QuoteIdToMaskedQuoteIdInterface::class);
5238
}
5339

5440
/**
5541
* Test case: get available shipping methods from current customer quote
5642
*
57-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php
43+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
44+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
45+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
46+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
47+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
5848
*/
5949
public function testGetAvailableShippingMethods()
6050
{
61-
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId('test_order_1');
51+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
6252
$response = $this->graphQlQuery($this->getQuery($maskedQuoteId), [], '', $this->getHeaderMap());
6353

6454
self::assertArrayHasKey('cart', $response);
@@ -84,40 +74,62 @@ public function testGetAvailableShippingMethods()
8474
);
8575
}
8676

77+
/**
78+
* _security
79+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
80+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
81+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php
82+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
83+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
84+
*/
85+
public function testGetAvailableShippingMethodsFromGuestCart()
86+
{
87+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
88+
$query = $this->getQuery($maskedQuoteId);
89+
90+
$this->expectExceptionMessage(
91+
"The current user cannot perform operations on cart \"$maskedQuoteId\""
92+
);
93+
$this->graphQlQuery($query, [], '', $this->getHeaderMap());
94+
}
95+
8796
/**
8897
* Test case: get available shipping methods from quote of another customer
8998
*
99+
* _security
90100
* @magentoApiDataFixture Magento/Customer/_files/three_customers.php
91-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php
101+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
102+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
103+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
104+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
92105
*/
93106
public function testGetAvailableShippingMethodsFromAnotherCustomerCart()
94107
{
95-
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId('test_order_1');
108+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
109+
$query = $this->getQuery($maskedQuoteId);
96110

97111
$this->expectExceptionMessage(
98112
"The current user cannot perform operations on cart \"$maskedQuoteId\""
99113
);
100-
101-
$this->graphQlQuery(
102-
$this->getQuery($maskedQuoteId),
103-
[],
104-
'',
105-
$this->getHeaderMap('customer2@search.example.com')
106-
);
114+
$this->graphQlQuery($query, [], '', $this->getHeaderMap('customer3@search.example.com'));
107115
}
108116

109117
/**
110118
* Test case: get available shipping methods when all shipping methods are disabled
111119
*
112-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php
113-
* @magentoApiDataFixture Magento/OfflineShipping/_files/disable_offline_shipping_methods.php
120+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
121+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
122+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
123+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
124+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
125+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/disable_offline_shipping_methods.php
114126
*/
115-
public function testGetAvailableShippingMethodsIfAllShippingsAreDisabled()
127+
public function testGetAvailableShippingMethodsIfShippingMethodsAreNotPresent()
116128
{
117-
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId('test_order_1');
129+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
118130
$response = $this->graphQlQuery($this->getQuery($maskedQuoteId), [], '', $this->getHeaderMap());
119131

120-
self::assertEquals(0, count($response['cart']['shipping_addresses'][0]['available_shipping_methods']));
132+
self::assertEmpty($response['cart']['shipping_addresses'][0]['available_shipping_methods']);
121133
}
122134

123135
/**
@@ -173,16 +185,4 @@ private function getHeaderMap(string $username = 'customer@example.com', string
173185
$headerMap = ['Authorization' => 'Bearer ' . $customerToken];
174186
return $headerMap;
175187
}
176-
177-
/**
178-
* @param string $reservedOrderId
179-
* @return string
180-
*/
181-
private function getMaskedQuoteIdByReservedOrderId(string $reservedOrderId): string
182-
{
183-
$quote = $this->quoteFactory->create();
184-
$this->quoteResource->load($quote, $reservedOrderId, 'reserved_order_id');
185-
186-
return $this->quoteIdToMaskedId->execute((int)$quote->getId());
187-
}
188188
}

dev/tests/api-functional/testsuite/Magento/GraphQl/Quote/Guest/GetAvailableShippingMethodsTest.php

Lines changed: 30 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77

88
namespace Magento\GraphQl\Quote\Guest;
99

10-
use Magento\Quote\Model\QuoteFactory;
11-
use Magento\Quote\Model\QuoteIdToMaskedQuoteIdInterface;
12-
use Magento\Quote\Model\ResourceModel\Quote as QuoteResource;
10+
use Magento\GraphQl\Quote\GetMaskedQuoteIdByReservedOrderId;
1311
use Magento\TestFramework\Helper\Bootstrap;
1412
use Magento\TestFramework\TestCase\GraphQlAbstract;
1513

@@ -19,39 +17,30 @@
1917
class GetAvailableShippingMethodsTest extends GraphQlAbstract
2018
{
2119
/**
22-
* @var QuoteIdToMaskedQuoteIdInterface
20+
* @var GetMaskedQuoteIdByReservedOrderId
2321
*/
24-
private $quoteIdToMaskedId;
25-
26-
/**
27-
* @var QuoteFactory
28-
*/
29-
private $quoteFactory;
30-
31-
/**
32-
* @var QuoteResource
33-
*/
34-
private $quoteResource;
22+
private $getMaskedQuoteIdByReservedOrderId;
3523

3624
/**
3725
* @inheritdoc
3826
*/
3927
protected function setUp()
4028
{
4129
$objectManager = Bootstrap::getObjectManager();
42-
$this->quoteFactory = $objectManager->get(QuoteFactory::class);
43-
$this->quoteResource = $objectManager->get(QuoteResource::class);
44-
$this->quoteIdToMaskedId = $objectManager->get(QuoteIdToMaskedQuoteIdInterface::class);
30+
$this->getMaskedQuoteIdByReservedOrderId = $objectManager->get(GetMaskedQuoteIdByReservedOrderId::class);
4531
}
4632

4733
/**
4834
* Test case: get available shipping methods from current customer quote
4935
*
50-
* @magentoApiDataFixture Magento/Sales/_files/guest_quote_with_addresses.php
36+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
37+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php
38+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
39+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
5140
*/
5241
public function testGetAvailableShippingMethods()
5342
{
54-
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId('guest_quote');
43+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
5544
$response = $this->graphQlQuery($this->getQuery($maskedQuoteId));
5645

5746
self::assertArrayHasKey('cart', $response);
@@ -61,15 +50,15 @@ public function testGetAvailableShippingMethods()
6150
self::assertCount(1, $response['cart']['shipping_addresses'][0]['available_shipping_methods']);
6251

6352
$expectedAddressData = [
64-
'amount' => 5,
65-
'base_amount' => 5,
53+
'amount' => 10,
54+
'base_amount' => 10,
6655
'carrier_code' => 'flatrate',
6756
'carrier_title' => 'Flat Rate',
6857
'error_message' => '',
6958
'method_code' => 'flatrate',
7059
'method_title' => 'Fixed',
71-
'price_incl_tax' => 5,
72-
'price_excl_tax' => 5,
60+
'price_incl_tax' => 10,
61+
'price_excl_tax' => 10,
7362
];
7463
self::assertEquals(
7564
$expectedAddressData,
@@ -78,33 +67,38 @@ public function testGetAvailableShippingMethods()
7867
}
7968

8069
/**
81-
* Test case: get available shipping methods from customer's quote
82-
*
83-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php
70+
* _security
71+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
72+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
73+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
74+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
75+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
8476
*/
8577
public function testGetAvailableShippingMethodsFromCustomerCart()
8678
{
87-
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId('test_order_1');
79+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
8880

8981
$this->expectExceptionMessage(
9082
"The current user cannot perform operations on cart \"$maskedQuoteId\""
9183
);
92-
9384
$this->graphQlQuery($this->getQuery($maskedQuoteId));
9485
}
9586

9687
/**
9788
* Test case: get available shipping methods when all shipping methods are disabled
9889
*
99-
* @magentoApiDataFixture Magento/Sales/_files/guest_quote_with_addresses.php
100-
* @magentoApiDataFixture Magento/OfflineShipping/_files/disable_offline_shipping_methods.php
90+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
91+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php
92+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
93+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
94+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/disable_offline_shipping_methods.php
10195
*/
102-
public function testGetAvailableShippingMethodsIfShippingsAreDisabled()
96+
public function testGetAvailableShippingMethodsIfShippingMethodsAreNotPresent()
10397
{
104-
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId('guest_quote');
98+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
10599
$response = $this->graphQlQuery($this->getQuery($maskedQuoteId));
106100

107-
self::assertEquals(0, count($response['cart']['shipping_addresses'][0]['available_shipping_methods']));
101+
self::assertEmpty($response['cart']['shipping_addresses'][0]['available_shipping_methods']);
108102
}
109103

110104
/**
@@ -116,8 +110,9 @@ public function testGetAvailableShippingMethodsIfShippingsAreDisabled()
116110
public function testGetAvailableShippingMethodsOfNonExistentCart()
117111
{
118112
$maskedQuoteId = 'non_existent_masked_id';
113+
$query = $this->getQuery($maskedQuoteId);
119114

120-
$this->graphQlQuery($this->getQuery($maskedQuoteId));
115+
$this->graphQlQuery($query);
121116
}
122117

123118
/**
@@ -146,16 +141,4 @@ private function getQuery(string $maskedQuoteId): string
146141
}
147142
QUERY;
148143
}
149-
150-
/**
151-
* @param string $reservedOrderId
152-
* @return string
153-
*/
154-
private function getMaskedQuoteIdByReservedOrderId(string $reservedOrderId): string
155-
{
156-
$quote = $this->quoteFactory->create();
157-
$this->quoteResource->load($quote, $reservedOrderId, 'reserved_order_id');
158-
159-
return $this->quoteIdToMaskedId->execute((int)$quote->getId());
160-
}
161144
}

dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_simple_product_saved_rollback.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
<?php
22
/**
3-
* Rollback for quote_with_simple_product_saved_rollback.php fixture.
3+
* Rollback for quote_with_payment_saved.php fixture.
44
*
55
* Copyright © Magento, Inc. All rights reserved.
66
* See COPYING.txt for license details.
77
*/
88

9-
require 'simple_product_rollback.php';
10-
119
/** @var $objectManager \Magento\TestFramework\ObjectManager */
1210
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
1311
$quote = $objectManager->create(\Magento\Quote\Model\Quote::class);

dev/tests/integration/testsuite/Magento/Checkout/_files/simple_product_rollback.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
$registry->register('isSecureArea', true);
1414

1515
/** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */
16-
$productRepository = $objectManager->create(\Magento\Catalog\Api\ProductRepositoryInterface::class);
16+
$productRepository = $objectManager->get(\Magento\Catalog\Api\ProductRepositoryInterface::class);
1717

1818
try {
1919
$product = $productRepository->get('simple', false, null, true);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
// TODO: Should be removed in scope of https://github.com/magento/graphql-ce/issues/167
67
declare(strict_types=1);
78

89
use Magento\Framework\App\Config\Storage\Writer;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
// TODO: Should be removed in scope of https://github.com/magento/graphql-ce/issues/167
67
declare(strict_types=1);
78

89
use Magento\Framework\App\Config\Storage\Writer;

0 commit comments

Comments
 (0)