From c2051dfee1f6f2349b195271fe6e24fc7bf1febc Mon Sep 17 00:00:00 2001 From: Yaroslav Rogoza Date: Tue, 28 Aug 2018 17:15:55 +0200 Subject: [PATCH 1/2] API-functional test for Search --- .../Magento/Search/Api/SearchTest.php | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 dev/tests/api-functional/testsuite/Magento/Search/Api/SearchTest.php diff --git a/dev/tests/api-functional/testsuite/Magento/Search/Api/SearchTest.php b/dev/tests/api-functional/testsuite/Magento/Search/Api/SearchTest.php new file mode 100644 index 0000000000000..f92e01070a31f --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/Search/Api/SearchTest.php @@ -0,0 +1,111 @@ +create(ProductRepositoryInterface::class); + $this->product = $productRepository->get($productSku); + } + + /** + * @magentoApiDataFixture Magento/Catalog/_files/product_simple.php + */ + public function testExistingProductSearch() + { + $productName = $this->product->getName(); + + $searchCriteria = $this->buildSearchCriteria($productName); + $serviceInfo = $this->buildServiceInfo($searchCriteria); + + $response = $this->_webApiCall($serviceInfo, $searchCriteria); + + self::assertArrayHasKey('search_criteria', $response); + self::assertArrayHasKey('items', $response); + self::assertGreaterThan(0, count($response['items'])); + self::assertGreaterThan(0, $response['items'][0]['id']); + } + + /** + * @magentoApiDataFixture Magento/Catalog/_files/product_simple.php + */ + public function testNonExistentProductSearch() + { + $searchCriteria = $this->buildSearchCriteria('nonExistentProduct'); + $serviceInfo = $this->buildServiceInfo($searchCriteria); + + $response = $this->_webApiCall($serviceInfo, $searchCriteria); + + self::assertArrayHasKey('search_criteria', $response); + self::assertArrayHasKey('items', $response); + self::assertEquals(0, count($response['items'])); + } + + /** + * @param string $productName + * @return array + */ + private function buildSearchCriteria(string $productName): array + { + return [ + 'searchCriteria' => [ + 'request_name' => 'quick_search_container', + 'filter_groups' => [ + [ + 'filters' => [ + [ + 'field' => 'search_term', + 'value' => $productName, + ] + ] + ] + ] + ] + ]; + } + + /** + * @param array $searchCriteria + * @return array + */ + private function buildServiceInfo(array $searchCriteria): array + { + return [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . '?' . http_build_query($searchCriteria), + 'httpMethod' => Request::HTTP_METHOD_GET + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Search' + ] + ]; + } +} From ff3a8f55ba87896c6fe6ba036d4423c89e0ba82c Mon Sep 17 00:00:00 2001 From: Yaroslav Rogoza Date: Thu, 30 Aug 2018 12:03:01 +0200 Subject: [PATCH 2/2] Removed extra line --- .../api-functional/testsuite/Magento/Search/Api/SearchTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/dev/tests/api-functional/testsuite/Magento/Search/Api/SearchTest.php b/dev/tests/api-functional/testsuite/Magento/Search/Api/SearchTest.php index f92e01070a31f..f6167a06c6436 100644 --- a/dev/tests/api-functional/testsuite/Magento/Search/Api/SearchTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Search/Api/SearchTest.php @@ -1,6 +1,5 @@