Skip to content

Commit 95861f4

Browse files
committed
api-functional test case
1 parent c8cf445 commit 95861f4

File tree

1 file changed

+67
-9
lines changed

1 file changed

+67
-9
lines changed

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

Lines changed: 67 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ class StockStatusTest extends GraphQlAbstract
6060
*/
6161
private $productRepository;
6262

63+
private const SKU = 'simple_10';
64+
private const PARENT_SKU_BUNDLE = 'parent_bundle';
65+
private const PARENT_SKU_CONFIGURABLE = 'parent_configurable';
66+
6367
/**
6468
* @inheritDoc
6569
*/
@@ -89,16 +93,15 @@ public function testStockStatusUnavailableSimpleProduct(): void
8993
}
9094

9195
#[
92-
DataFixture(ProductFixture::class, ['sku' => 'spl-prod', 'price' => 100.00], as: 'product'),
96+
DataFixture(ProductFixture::class, ['sku' => self::SKU, 'price' => 100.00], as: 'product'),
9397
DataFixture(GuestCartFixture::class, as: 'cart'),
9498
DataFixture(AddProductToCart::class, ['cart_id' => '$cart.id$', 'product_id' => '$product.id$', 'qty' => 100]),
9599
DataFixture(QuoteMaskFixture::class, ['cart_id' => '$cart.id$'], 'quoteIdMask')
96100
]
97101
public function testStockStatusUnavailableAddSimpleProduct(): void
98102
{
99-
$sku = 'spl-prod';
100103
$maskedQuoteId = $this->fixtures->get('quoteIdMask')->getMaskedId();
101-
$query = $this->mutationAddSimpleProduct($maskedQuoteId, $sku, 100);
104+
$query = $this->mutationAddSimpleProduct($maskedQuoteId, self::SKU, 1);
102105
$response = $this->graphQlMutation($query);
103106
$responseDataObject = new DataObject($response);
104107

@@ -145,7 +148,7 @@ public function testStockStatusUnavailableBundleProduct(): void
145148
'required' => 1,'product_links' => ['$link$']], 'option'),
146149
DataFixture(
147150
BundleProductFixture::class,
148-
['sku' => 'bundle-prod1', 'price' => 90, '_options' => ['$option$']],
151+
['sku' => self::PARENT_SKU_BUNDLE, 'price' => 90, '_options' => ['$option$']],
149152
as:'bundleProduct'
150153
),
151154
DataFixture(GuestCartFixture::class, as: 'cart'),
@@ -162,8 +165,7 @@ public function testStockStatusUnavailableBundleProduct(): void
162165
]
163166
public function testStockStatusUnavailableAddBundleProduct(): void
164167
{
165-
$sku = 'bundle-prod1';
166-
$product = $this->productRepository->get($sku);
168+
$product = $this->productRepository->get(self::PARENT_SKU_BUNDLE);
167169

168170
/** @var $typeInstance \Magento\Bundle\Model\Product\Type */
169171
$typeInstance = $product->getTypeInstance();
@@ -178,7 +180,7 @@ public function testStockStatusUnavailableAddBundleProduct(): void
178180
$bundleOptionIdV2 = $this->generateBundleOptionIdV2((int) $optionId, (int) $selectionId, 1);
179181
$maskedQuoteId = $this->fixtures->get('quoteIdMask')->getMaskedId();
180182

181-
$query = $this->mutationAddBundleProduct($maskedQuoteId, $sku, $bundleOptionIdV2, 100);
183+
$query = $this->mutationAddBundleProduct($maskedQuoteId, self::PARENT_SKU_BUNDLE, $bundleOptionIdV2);
182184
$response = $this->graphQlMutation($query);
183185
$responseDataObject = new DataObject($response);
184186

@@ -216,6 +218,36 @@ public function testStockStatusUnavailableConfigurableProduct(): void
216218
self::assertEquals('unavailable', $responseDataObject->getData('cart/items/0/status'));
217219
}
218220

221+
#[
222+
DataFixture(ProductFixture::class, ['sku' => self::SKU], as: 'product'),
223+
DataFixture(AttributeFixture::class, as: 'attribute'),
224+
DataFixture(
225+
ConfigurableProductFixture::class,
226+
['sku' => self::PARENT_SKU_CONFIGURABLE, '_options' => ['$attribute$'], '_links' => ['$product$']],
227+
'configurable_product'
228+
),
229+
DataFixture(GuestCartFixture::class, as: 'cart'),
230+
DataFixture(QuoteMaskFixture::class, ['cart_id' => '$cart.id$'], 'quoteIdMask'),
231+
DataFixture(
232+
AddConfigurableProductToCartFixture::class,
233+
[
234+
'cart_id' => '$cart.id$',
235+
'product_id' => '$configurable_product.id$',
236+
'child_product_id' => '$product.id$',
237+
'qty' => 100
238+
],
239+
)
240+
]
241+
public function testStockStatusUnavailableAddConfigurableProduct(): void
242+
{
243+
$maskedQuoteId = $this->fixtures->get('quoteIdMask')->getMaskedId();
244+
$query = $this->mutationAddConfigurableProduct($maskedQuoteId, self::SKU, self::PARENT_SKU_CONFIGURABLE);
245+
$response = $this->graphQlMutation($query);
246+
$responseDataObject = new DataObject($response);
247+
248+
self::assertEquals('unavailable', $responseDataObject->getData('addProductsToCart/cart/items/0/status'));
249+
}
250+
219251
/**
220252
* @param string $cartId
221253
* @return string
@@ -234,7 +266,7 @@ private function getQuery(string $cartId): string
234266
QUERY;
235267
}
236268

237-
private function mutationAddSimpleProduct(string $cartId, string $sku, int $qty): string
269+
private function mutationAddSimpleProduct(string $cartId, string $sku, int $qty = 1): string
238270
{
239271
return <<<QUERY
240272
mutation {
@@ -256,7 +288,7 @@ private function mutationAddSimpleProduct(string $cartId, string $sku, int $qty)
256288
QUERY;
257289
}
258290

259-
private function mutationAddBundleProduct(string $cartId, string $sku, string $bundleOptionIdV2, int $qty): string
291+
private function mutationAddBundleProduct(string $cartId, string $sku, string $bundleOptionIdV2, int $qty = 1): string
260292
{
261293
return <<<QUERY
262294
mutation {
@@ -284,6 +316,32 @@ private function mutationAddBundleProduct(string $cartId, string $sku, string $b
284316
QUERY;
285317
}
286318

319+
private function mutationAddConfigurableProduct(string $cartId, string $sku, string $parentSku, int $qty = 1): string
320+
{
321+
return <<<QUERY
322+
mutation {
323+
addProductsToCart(
324+
cartId: "{$cartId}",
325+
cartItems: [
326+
{
327+
sku: "{$sku}"
328+
quantity: $qty
329+
parent_sku: "{$parentSku}"
330+
}]
331+
) {
332+
cart {
333+
items {
334+
status
335+
product {
336+
sku
337+
}
338+
}
339+
}
340+
}
341+
}
342+
QUERY;
343+
}
344+
287345
private function generateBundleOptionIdV2(int $optionId, int $selectionId, int $quantity): string
288346
{
289347
return base64_encode("bundle/$optionId/$selectionId/$quantity");

0 commit comments

Comments
 (0)