Skip to content

Commit 722bef2

Browse files
33010 Added automation test coverage
1 parent 8218e1e commit 722bef2

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

dev/tests/api-functional/testsuite/Magento/GraphQl/RelatedProduct/GetRelatedProductsTest.php

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
namespace Magento\GraphQl\RelatedProduct;
99

10+
use Magento\Catalog\Test\Fixture\Product as ProductFixture;
11+
use Magento\TestFramework\Fixture\DataFixture;
1012
use Magento\TestFramework\TestCase\GraphQlAbstract;
1113

1214
/**
@@ -226,4 +228,81 @@ public function testQueryDisableRelatedProductInStore(): void
226228
$relatedProducts = $response['products']['items'][0]['related_products'];
227229
self::assertCount(0, $relatedProducts);
228230
}
231+
#[
232+
DataFixture(ProductFixture::class, ['name' =>'Simple related product', 'sku' => 'simple_related_product',
233+
'price' => 20], 'p1'),
234+
DataFixture(ProductFixture::class, ['name' =>'Product as a related product',
235+
'sku' => 'product_as_a_related_product', 'price' => 30], 'p2'),
236+
DataFixture(ProductFixture::class, ['name' =>'Simple product', 'sku' => 'simple_product', 'price' => 40], 'p3'),
237+
DataFixture(ProductFixture::class, ['name' => 'Simple with related product',
238+
'sku' =>'simple_with_related_product ', 'price' => 100,
239+
'product_links' => ['$p3.sku$','$p1.sku$','$p2.sku$' ]], 'p1'),
240+
241+
]
242+
public function testQueryRelatedProductsInSortOrder()
243+
{
244+
$productSku = 'simple_with_related_product';
245+
246+
$query = <<<QUERY
247+
{
248+
products(filter: {sku: {eq: "{$productSku}"}})
249+
{
250+
items {
251+
related_products
252+
{
253+
sku
254+
name
255+
url_key
256+
}
257+
}
258+
}
259+
}
260+
QUERY;
261+
$response = $this->graphQlQuery($query);
262+
263+
self::assertArrayHasKey('products', $response);
264+
self::assertArrayHasKey('items', $response['products']);
265+
self::assertCount(1, $response['products']['items']);
266+
self::assertArrayHasKey(0, $response['products']['items']);
267+
self::assertArrayHasKey('related_products', $response['products']['items'][0]);
268+
$relatedProducts = $response['products']['items'][0]['related_products'];
269+
self::assertCount(3, $relatedProducts);
270+
self::assertRelatedProductsInSortOrder($relatedProducts);
271+
}
272+
273+
/**
274+
* @param array $relatedProducts
275+
*/
276+
private function assertRelatedProductsInSortOrder(array $relatedProducts): void
277+
{
278+
$expectedData = [
279+
'simple_product' => [
280+
'name' => 'Simple product',
281+
'url_key' => 'simple-product',
282+
283+
],
284+
'simple_related_product' => [
285+
'name' => 'Simple related product',
286+
'url_key' => 'simple-related-product',
287+
288+
],
289+
'product_as_a_related_product' => [
290+
'name' => 'Product as a related product',
291+
'url_key' => 'product-as-a-related-product',
292+
293+
]
294+
];
295+
296+
foreach ($relatedProducts as $product) {
297+
self::assertArrayHasKey('sku', $product);
298+
self::assertArrayHasKey('name', $product);
299+
self::assertArrayHasKey('url_key', $product);
300+
301+
self::assertArrayHasKey($product['sku'], $expectedData);
302+
$productExpectedData = $expectedData[$product['sku']];
303+
304+
self::assertEquals($product['name'], $productExpectedData['name']);
305+
self::assertEquals($product['url_key'], $productExpectedData['url_key']);
306+
}
307+
}
229308
}

0 commit comments

Comments
 (0)