Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssertAdvancedSearchProductResult.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\CatalogSearch\Test\Page\AdvancedResult;
10 use Magento\Mtf\Constraint\AbstractConstraint;
11 
15 class AssertAdvancedSearchProductResult extends AbstractConstraint
16 {
20  const FOUNDED_PRODUCT_MESSAGE = 'Product %s is founded';
21 
30  public function processAssert(
31  array $isVisibleInAdvancedSearch,
32  array $allProducts,
33  AdvancedResult $resultPage
34  ) {
35  $expectedResult = $this->prepareExpectedResult($isVisibleInAdvancedSearch, $allProducts);
36  $foundedProducts = $this->advancedSearchProducts($resultPage, $allProducts);
37  \PHPUnit\Framework\Assert::assertEquals(
38  $expectedResult,
39  $foundedProducts,
40  'Expected and founded products not the same.'
41  . "\nExpected: " . print_r($expectedResult)
42  . "\nActual: " . print_r($foundedProducts)
43  );
44  }
45 
53  private function prepareExpectedResult(array $isVisibleInAdvancedSearch, array $products)
54  {
55  $expectedResult = [];
56  foreach ($isVisibleInAdvancedSearch as $key => $value) {
57  if ($value == "Yes") {
58  $expectedResult[] = sprintf(self::FOUNDED_PRODUCT_MESSAGE, $products[$key]->getName());
59  }
60  }
61  sort($expectedResult);
62  return $expectedResult;
63  }
64 
72  private function advancedSearchProducts(AdvancedResult $resultPage, array $allProducts)
73  {
74  $products = $allProducts;
75  $foundedProducts = [];
76  do {
77  $dirtKeys = [];
78  foreach ($allProducts as $key => $product) {
79  $isProductVisible = $resultPage->getListProductBlock()->getProductItem($product)->isVisible();
80  if ($isProductVisible) {
81  $foundedProducts[] = sprintf(self::FOUNDED_PRODUCT_MESSAGE, $products[$key]->getName());
82  $dirtKeys[] = $key;
83  }
84  }
85  foreach ($dirtKeys as $key) {
86  unset($products[$key]);
87  }
88  } while ($resultPage->getBottomToolbar()->nextPage() && (count($products) > 0));
89 
90  sort($foundedProducts);
91  return $foundedProducts;
92  }
93 
99  public function toString()
100  {
101  return 'All products are involved in the search were found successfully.';
102  }
103 }
processAssert(array $isVisibleInAdvancedSearch, array $allProducts, AdvancedResult $resultPage)
$value
Definition: gender.phtml:16