/**
  * Assert that result page contains product, according to search request from fixture.
  *
  * @param CatalogSearchQuery $catalogSearch
  * @param AdvancedResult $resultPage
  * @return void
  */
 public function processAssert(CatalogSearchQuery $catalogSearch, AdvancedResult $resultPage)
 {
     $product = $catalogSearch->getDataFieldConfig('query_text')['source']->getProduct();
     $isProductVisible = $resultPage->getListProductBlock()->getProductItem($product)->isVisible();
     while (!$isProductVisible && $resultPage->getBottomToolbar()->nextPage()) {
         $isProductVisible = $resultPage->getListProductBlock()->getProductItem($product)->isVisible();
     }
     \PHPUnit_Framework_Assert::assertTrue($isProductVisible, "A product with name '" . $product->getName() . "' was not found.");
 }
 /**
  * Assert product can be opened from search results page.
  *
  * @param CatalogSearchQuery $catalogSearch
  * @param AdvancedResult $resultPage
  * @param CatalogProductView $catalogProductViewPage
  * @return void
  */
 public function processAssert(CatalogSearchQuery $catalogSearch, AdvancedResult $resultPage, CatalogProductView $catalogProductViewPage)
 {
     $product = $catalogSearch->getDataFieldConfig('query_text')['source']->getProduct();
     $isProductVisible = $resultPage->getListProductBlock()->getProductItem($product)->isVisible();
     while (!$isProductVisible && $resultPage->getBottomToolbar()->nextPage()) {
         $isProductVisible = $resultPage->getListProductBlock()->getProductItem($product)->isVisible();
     }
     $productName = $product->getName();
     \PHPUnit_Framework_Assert::assertTrue($isProductVisible, "A product with name {$productName} was not found.");
     $resultPage->getListProductBlock()->getProductItem($product)->open();
     \PHPUnit_Framework_Assert::assertEquals($productName, $catalogProductViewPage->getViewBlock()->getProductName(), 'Wrong product page has been opened.');
 }
 /**
  * Assert that result page contains all products, according to search request, from fixture
  *
  * @param array $products
  * @param AdvancedResult $resultPage
  * @return void
  */
 public function processAssert(array $products, AdvancedResult $resultPage)
 {
     $errors = [];
     foreach ($products as $product) {
         $name = $product->getName();
         $isProductVisible = $resultPage->getListProductBlock()->isProductVisible($name);
         while (!$isProductVisible && $resultPage->getBottomToolbar()->nextPage()) {
             $isProductVisible = $resultPage->getListProductBlock()->isProductVisible($name);
         }
         if ($isProductVisible === false) {
             $errors[] = '- ' . $name;
         }
     }
     \PHPUnit_Framework_Assert::assertTrue(empty($errors), 'Were not found the following products:' . implode("\n", $errors));
 }
 /**
  * Assert that Advanced Search result page contains only product(s) according to requested from fixture
  *
  * @param array $products
  * @param AdvancedResult $resultPage
  * @param array $productsSearch
  * @param CatalogProductSimple $productSearch
  * @return void
  */
 public function processAssert(array $products, AdvancedResult $resultPage, array $productsSearch, CatalogProductSimple $productSearch)
 {
     $this->resultPage = $resultPage;
     $searchResult = [];
     foreach ($products as $key => $value) {
         if ($value === 'Yes') {
             /** @var CatalogProductSimple $productsSearch [$key] */
             $searchResult[$productsSearch[$key]->getSku()] = $productsSearch[$key];
         }
     }
     $errors = $this->checkSearchData($searchResult, $productSearch);
     foreach ($searchResult as $sku => $product) {
         /** @var CatalogProductSimple $product */
         $name = $product->getName();
         $isProductVisible = $resultPage->getListProductBlock()->getProductItem($product)->isVisible();
         while (!$isProductVisible && $resultPage->getBottomToolbar()->nextPage()) {
             $isProductVisible = $resultPage->getListProductBlock()->getProductItem($product)->isVisible();
         }
         if (!$isProductVisible) {
             $errors[] = '- failed to find the product (SKU - "' . $sku . '", name - "' . $name . '") according to the search parameters';
         }
     }
     \PHPUnit_Framework_Assert::assertTrue(empty($errors), "The following errors occurred:\n" . implode("\n", $errors));
 }