/**
  * 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->getToolbar()->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));
 }
 /**
  * Validation page displaying the search data
  *
  * @param array $searchResult
  * @param CatalogProductSimple $productSearch
  * @return array
  */
 protected function checkSearchData(array $searchResult, CatalogProductSimple $productSearch)
 {
     $searchBlock = $this->resultPage->getSearchResultBlock();
     $errors = [];
     $textMessage = self::NOTICE_MESSAGE;
     if (empty($searchResult)) {
         $textMessage = self::ERROR_MESSAGE;
     }
     if (!$searchBlock->isVisibleMessages($textMessage)) {
         $errors[] = '- message does not match the search script';
     }
     $searchData = $searchBlock->getSearchSummaryItems();
     $productData = $this->prepareFixtureData($productSearch);
     foreach ($productData as $key => $data) {
         if ($key === 'tax_class' && $data === ['All']) {
             continue;
         }
         if (!isset($searchData[$key])) {
             $errors[] = '- "' . $key . '" not found on the page';
         } elseif ($searchData[$key] !== $data) {
             $errors[] = '- "' . $key . '" value does not match the page';
         }
     }
     return $errors;
 }
 /**
  * Assert that Advanced Search without results.
  *
  * @param AdvancedResult $resultPage
  * @return void
  */
 public function processAssert(AdvancedResult $resultPage)
 {
     \PHPUnit_Framework_Assert::assertTrue($resultPage->getSearchResultBlock()->isVisibleMessages(self::ERROR_MESSAGE), "The error message '" . self::ERROR_MESSAGE . "' is not visible.");
 }