Skip to content

Commit 6f55c2c

Browse files
authored
ENGCOM-4592: Api-functional tests fixture refactoring #539
2 parents 4f6c78e + 50db85b commit 6f55c2c

29 files changed

+905
-659
lines changed

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

Lines changed: 45 additions & 57 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,75 +23,71 @@ class GetAvailablePaymentMethodsTest extends GraphQlAbstract
2523
private $customerTokenService;
2624

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

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

5440
/**
55-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php
41+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
42+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
43+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
44+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
45+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
5646
*/
57-
public function testGetCartWithPaymentMethods()
47+
public function testGetAvailablePaymentMethods()
5848
{
59-
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId('test_order_item_with_items');
49+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
6050
$query = $this->getQuery($maskedQuoteId);
6151
$response = $this->graphQlQuery($query, [], '', $this->getHeaderMap());
6252

6353
self::assertArrayHasKey('cart', $response);
54+
self::assertArrayHasKey('available_payment_methods', $response['cart']);
55+
self::assertCount(1, $response['cart']['available_payment_methods']);
56+
6457
self::assertEquals('checkmo', $response['cart']['available_payment_methods'][0]['code']);
6558
self::assertEquals('Check / Money order', $response['cart']['available_payment_methods'][0]['title']);
66-
self::assertGreaterThan(
67-
0,
68-
count($response['cart']['available_payment_methods']),
69-
'There are no available payment methods for customer cart!'
70-
);
7159
}
7260

7361
/**
62+
* @security
7463
* @magentoApiDataFixture Magento/Customer/_files/customer.php
75-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_virtual_product_saved.php
64+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
65+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php
66+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
67+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
7668
*/
77-
public function testGetPaymentMethodsFromGuestCart()
69+
public function testGetAvailablePaymentMethodsFromGuestCart()
7870
{
79-
$guestQuoteMaskedId = $this->getMaskedQuoteIdByReservedOrderId(
80-
'test_order_with_virtual_product_without_address'
81-
);
82-
$query = $this->getQuery($guestQuoteMaskedId);
71+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
72+
$query = $this->getQuery($maskedQuoteId);
8373

8474
$this->expectExceptionMessage(
85-
"The current user cannot perform operations on cart \"$guestQuoteMaskedId\""
75+
"The current user cannot perform operations on cart \"$maskedQuoteId\""
8676
);
8777
$this->graphQlQuery($query, [], '', $this->getHeaderMap());
8878
}
8979

9080
/**
81+
* @security
9182
* @magentoApiDataFixture Magento/Customer/_files/three_customers.php
92-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php
83+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
84+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
85+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
86+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
9387
*/
94-
public function testGetPaymentMethodsFromAnotherCustomerCart()
88+
public function testGetAvailablePaymentMethodsFromAnotherCustomerCart()
9589
{
96-
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId('test_order_item_with_items');
90+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
9791
$query = $this->getQuery($maskedQuoteId);
9892

9993
$this->expectExceptionMessage(
@@ -103,24 +97,31 @@ public function testGetPaymentMethodsFromAnotherCustomerCart()
10397
}
10498

10599
/**
106-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php
107-
* @magentoApiDataFixture Magento/Payment/_files/disable_all_active_payment_methods.php
100+
* @magentoApiDataFixture Magento/Customer/_files/customer.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
105+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/disable_all_active_payment_methods.php
108106
*/
109-
public function testGetPaymentMethodsIfPaymentsAreNotSet()
107+
public function testGetAvailablePaymentMethodsIfPaymentsAreNotPresent()
110108
{
111-
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId('test_order_item_with_items');
109+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
112110
$query = $this->getQuery($maskedQuoteId);
113111
$response = $this->graphQlQuery($query, [], '', $this->getHeaderMap());
114112

115-
self::assertEquals(0, count($response['cart']['available_payment_methods']));
113+
self::assertArrayHasKey('cart', $response);
114+
self::assertArrayHasKey('available_payment_methods', $response['cart']);
115+
self::assertEmpty($response['cart']['available_payment_methods']);
116116
}
117117

118118
/**
119119
* @magentoApiDataFixture Magento/Customer/_files/customer.php
120+
*
120121
* @expectedException \Exception
121122
* @expectedExceptionMessage Could not find a cart with ID "non_existent_masked_id"
122123
*/
123-
public function testGetPaymentMethodsOfNonExistentCart()
124+
public function testGetAvailablePaymentMethodsOfNonExistentCart()
124125
{
125126
$maskedQuoteId = 'non_existent_masked_id';
126127
$query = $this->getQuery($maskedQuoteId);
@@ -132,9 +133,8 @@ public function testGetPaymentMethodsOfNonExistentCart()
132133
* @param string $maskedQuoteId
133134
* @return string
134135
*/
135-
private function getQuery(
136-
string $maskedQuoteId
137-
): string {
136+
private function getQuery(string $maskedQuoteId): string
137+
{
138138
return <<<QUERY
139139
{
140140
cart(cart_id: "$maskedQuoteId") {
@@ -158,16 +158,4 @@ private function getHeaderMap(string $username = '[email protected]', string
158158
$headerMap = ['Authorization' => 'Bearer ' . $customerToken];
159159
return $headerMap;
160160
}
161-
162-
/**
163-
* @param string $reservedOrderId
164-
* @return string
165-
*/
166-
private function getMaskedQuoteIdByReservedOrderId(string $reservedOrderId): string
167-
{
168-
$quote = $this->quoteFactory->create();
169-
$this->quoteResource->load($quote, $reservedOrderId, 'reserved_order_id');
170-
171-
return $this->quoteIdToMaskedId->execute((int)$quote->getId());
172-
}
173161
}

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

Lines changed: 34 additions & 57 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

@@ -20,19 +18,9 @@
2018
class GetCartTest extends GraphQlAbstract
2119
{
2220
/**
23-
* @var QuoteResource
21+
* @var GetMaskedQuoteIdByReservedOrderId
2422
*/
25-
private $quoteResource;
26-
27-
/**
28-
* @var QuoteFactory
29-
*/
30-
private $quoteFactory;
31-
32-
/**
33-
* @var QuoteIdToMaskedQuoteIdInterface
34-
*/
35-
private $quoteIdToMaskedId;
23+
private $getMaskedQuoteIdByReservedOrderId;
3624

3725
/**
3826
* @var CustomerTokenServiceInterface
@@ -42,19 +30,22 @@ class GetCartTest extends GraphQlAbstract
4230
protected function setUp()
4331
{
4432
$objectManager = Bootstrap::getObjectManager();
45-
$this->quoteResource = $objectManager->get(QuoteResource::class);
46-
$this->quoteFactory = $objectManager->get(QuoteFactory::class);
47-
$this->quoteIdToMaskedId = $objectManager->get(QuoteIdToMaskedQuoteIdInterface::class);
33+
$this->getMaskedQuoteIdByReservedOrderId = $objectManager->get(GetMaskedQuoteIdByReservedOrderId::class);
4834
$this->customerTokenService = $objectManager->get(CustomerTokenServiceInterface::class);
4935
}
5036

5137
/**
52-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php
38+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
39+
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
40+
* @magentoApiDataFixture Magento/Catalog/_files/product_virtual.php
41+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
42+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
43+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_virtual_product.php
5344
*/
5445
public function testGetCart()
5546
{
56-
$maskedQuoteId = $this->getMaskedQuoteIdByReversedQuoteId('test_order_item_with_items');
57-
$query = $this->getCartQuery($maskedQuoteId);
47+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
48+
$query = $this->getQuery($maskedQuoteId);
5849

5950
$response = $this->graphQlQuery($query, [], '', $this->getHeaderMap());
6051

@@ -63,22 +54,23 @@ public function testGetCart()
6354
self::assertCount(2, $response['cart']['items']);
6455

6556
self::assertNotEmpty($response['cart']['items'][0]['id']);
66-
self::assertEquals($response['cart']['items'][0]['qty'], 2);
67-
self::assertEquals($response['cart']['items'][0]['product']['sku'], 'simple');
57+
self::assertEquals(2, $response['cart']['items'][0]['qty']);
58+
self::assertEquals('simple', $response['cart']['items'][0]['product']['sku']);
6859

6960
self::assertNotEmpty($response['cart']['items'][1]['id']);
70-
self::assertEquals($response['cart']['items'][1]['qty'], 1);
71-
self::assertEquals($response['cart']['items'][1]['product']['sku'], 'simple_one');
61+
self::assertEquals(2, $response['cart']['items'][1]['qty']);
62+
self::assertEquals('virtual-product', $response['cart']['items'][1]['product']['sku']);
7263
}
7364

7465
/**
66+
* @security
7567
* @magentoApiDataFixture Magento/Customer/_files/customer.php
76-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_simple_product_saved.php
68+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php
7769
*/
7870
public function testGetGuestCart()
7971
{
80-
$maskedQuoteId = $this->getMaskedQuoteIdByReversedQuoteId('test_order_with_simple_product_without_address');
81-
$query = $this->getCartQuery($maskedQuoteId);
72+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
73+
$query = $this->getQuery($maskedQuoteId);
8274

8375
$this->expectExceptionMessage(
8476
"The current user cannot perform operations on cart \"{$maskedQuoteId}\""
@@ -87,13 +79,14 @@ public function testGetGuestCart()
8779
}
8880

8981
/**
82+
* @security
9083
* @magentoApiDataFixture Magento/Customer/_files/three_customers.php
91-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php
84+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
9285
*/
9386
public function testGetAnotherCustomerCart()
9487
{
95-
$maskedQuoteId = $this->getMaskedQuoteIdByReversedQuoteId('test_order_item_with_items');
96-
$query = $this->getCartQuery($maskedQuoteId);
88+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
89+
$query = $this->getQuery($maskedQuoteId);
9790

9891
$this->expectExceptionMessage(
9992
"The current user cannot perform operations on cart \"{$maskedQuoteId}\""
@@ -103,33 +96,30 @@ public function testGetAnotherCustomerCart()
10396

10497
/**
10598
* @magentoApiDataFixture Magento/Customer/_files/customer.php
99+
*
106100
* @expectedException \Exception
107101
* @expectedExceptionMessage Could not find a cart with ID "non_existent_masked_id"
108102
*/
109103
public function testGetNonExistentCart()
110104
{
111105
$maskedQuoteId = 'non_existent_masked_id';
112-
$query = $this->getCartQuery($maskedQuoteId);
106+
$query = $this->getQuery($maskedQuoteId);
113107

114108
$this->graphQlQuery($query, [], '', $this->getHeaderMap());
115109
}
116110

117111
/**
118-
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_simple_product_saved.php
119112
* @magentoApiDataFixture Magento/Customer/_files/customer.php
113+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
114+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/make_cart_inactive.php
115+
*
120116
* @expectedException \Exception
121117
* @expectedExceptionMessage Current user does not have an active cart.
122118
*/
123119
public function testGetInactiveCart()
124120
{
125-
$quote = $this->quoteFactory->create();
126-
$this->quoteResource->load($quote, 'test_order_with_simple_product_without_address', 'reserved_order_id');
127-
$quote->setCustomerId(1);
128-
$quote->setIsActive(false);
129-
$this->quoteResource->save($quote);
130-
$maskedQuoteId = $this->quoteIdToMaskedId->execute((int)$quote->getId());
131-
132-
$query = $this->getCartQuery($maskedQuoteId);
121+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
122+
$query = $this->getQuery($maskedQuoteId);
133123

134124
$this->graphQlQuery($query, [], '', $this->getHeaderMap());
135125
}
@@ -138,12 +128,11 @@ public function testGetInactiveCart()
138128
* @param string $maskedQuoteId
139129
* @return string
140130
*/
141-
private function getCartQuery(
142-
string $maskedQuoteId
143-
) : string {
131+
private function getQuery(string $maskedQuoteId): string
132+
{
144133
return <<<QUERY
145134
{
146-
cart(cart_id: "$maskedQuoteId") {
135+
cart(cart_id: "{$maskedQuoteId}") {
147136
items {
148137
id
149138
qty
@@ -156,18 +145,6 @@ private function getCartQuery(
156145
QUERY;
157146
}
158147

159-
/**
160-
* @param string $reversedQuoteId
161-
* @return string
162-
*/
163-
private function getMaskedQuoteIdByReversedQuoteId(string $reversedQuoteId): string
164-
{
165-
$quote = $this->quoteFactory->create();
166-
$this->quoteResource->load($quote, $reversedQuoteId, 'reserved_order_id');
167-
168-
return $this->quoteIdToMaskedId->execute((int)$quote->getId());
169-
}
170-
171148
/**
172149
* @param string $username
173150
* @param string $password

0 commit comments

Comments
 (0)