/** * Assert that product can be found via Quick Search using searchable product attributes label. * * @param CatalogsearchResult $catalogSearchResult * @param CmsIndex $cmsIndex * @param InjectableFixture $product * @param CatalogProductAttribute $attribute * @return void */ public function processAssert(CatalogsearchResult $catalogSearchResult, CmsIndex $cmsIndex, InjectableFixture $product, CatalogProductAttribute $attribute) { $cmsIndex->open(); $filter = $this->prepareFilter($product, $attribute); $cmsIndex->getSearchBlock()->search($filter); $isProductVisible = $catalogSearchResult->getListProductBlock()->isProductVisible($product); while (!$isProductVisible && $catalogSearchResult->getBottomToolbar()->nextPage()) { $isProductVisible = $catalogSearchResult->getListProductBlock()->isProductVisible($product); } \PHPUnit_Framework_Assert::assertTrue($isProductVisible, 'Product was not found by option label.'); }
/** * Process assert search result. * * @param CatalogsearchResult $catalogSearchResult * @param CmsIndex $cmsIndex * @param InjectableFixture $product * @param string $param * @throws \Exception * @return void * * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function verifySearchResult(CatalogsearchResult $catalogSearchResult, CmsIndex $cmsIndex, InjectableFixture $product, $param) { $cmsIndex->open(); $searchValue = $product->hasData($param) !== false ? $product->getData($param) : null; if ($searchValue === null) { throw new \Exception("Product '{$product->getName}()' doesn't have '{$param}' parameter."); } $param = strtoupper($param); $this->errorMessage = sprintf($this->formatForErrorMessage, $param); $this->successfulMessage = sprintf($this->formatForSuccessfulMessage, $param); $cmsIndex->getSearchBlock()->search($searchValue); $quantityAndStockStatus = $product->getStockData(); $stockStatus = isset($quantityAndStockStatus['is_in_stock']) ? $quantityAndStockStatus['is_in_stock'] : null; $isVisible = $catalogSearchResult->getListProductBlock()->isProductVisible($product); while (!$isVisible && $catalogSearchResult->getBottomToolbar()->nextPage()) { $isVisible = $catalogSearchResult->getListProductBlock()->isProductVisible($product); } if ($product->getVisibility() === 'Catalog' || $stockStatus === 'Out of Stock') { $isVisible = !$isVisible; list($this->errorMessage, $this->successfulMessage) = [$this->successfulMessage, $this->errorMessage]; } \PHPUnit_Framework_Assert::assertTrue($isVisible, $this->errorMessage); }