From cd8b01bf5ccffc5b46fdd33d93bc8f05d6597dd9 Mon Sep 17 00:00:00 2001 From: Lyzun Oleksandr Date: Tue, 20 Nov 2018 14:59:05 +0100 Subject: [PATCH] Fix lever responses and add new test for get category by id --- .../ExtractDataFromCategoryTree.php | 14 +++++-- .../Magento/GraphQl/Catalog/CategoryTest.php | 38 +++++++++++++++++++ 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/ExtractDataFromCategoryTree.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/ExtractDataFromCategoryTree.php index 5d282fda549a5..43e7cb7c9e624 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/ExtractDataFromCategoryTree.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/ExtractDataFromCategoryTree.php @@ -15,8 +15,6 @@ */ class ExtractDataFromCategoryTree { - const START_CATEGORY_FETCH_LEVEL = 1; - /** * @var Hydrator */ @@ -27,6 +25,11 @@ class ExtractDataFromCategoryTree */ private $iteratingCategory; + /** + * @var int + */ + private $startCategoryFetchLevel = 1; + /** * @param Hydrator $categoryHydrator */ @@ -51,9 +54,12 @@ public function execute(\Iterator $iterator): array $iterator->next(); $pathElements = explode("/", $category->getPath()); - $this->iteratingCategory = $category; + if (empty($tree)){ + $this->startCategoryFetchLevel = count($pathElements) - 1; + } - $currentLevelTree = $this->explodePathToArray($pathElements, self::START_CATEGORY_FETCH_LEVEL); + $this->iteratingCategory = $category; + $currentLevelTree = $this->explodePathToArray($pathElements, $this->startCategoryFetchLevel); if (empty($tree)) { $tree = $currentLevelTree; } diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/CategoryTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/CategoryTest.php index 57c350bf8e500..6825f90c05833 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/CategoryTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/CategoryTest.php @@ -112,6 +112,44 @@ public function testCategoriesTree() ); } + /** + * @magentoApiDataFixture Magento/Customer/_files/customer.php + * @magentoApiDataFixture Magento/Catalog/_files/categories.php + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + */ + public function testGetCategoryById() + { + $rootCategoryId = 13; + $query = <<objectManager->create( + \Magento\Integration\Api\CustomerTokenServiceInterface::class + ); + $customerToken = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + $headerMap = ['Authorization' => 'Bearer ' . $customerToken]; + $response = $this->graphQlQuery($query, [], '', $headerMap); + $responseDataObject = new DataObject($response); + //Some sort of smoke testing + self::assertEquals( + 'Category 1.2', + $responseDataObject->getData('category/name') + ); + self::assertEquals( + 13, + $responseDataObject->getData('category/id') + ); + } + /** * @magentoApiDataFixture Magento/Catalog/_files/categories.php * @SuppressWarnings(PHPMD.ExcessiveMethodLength)