Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssertAdvancedSearchProductByAttribute.php
Go to the documentation of this file.
1 <?php
8 
10 use Magento\CatalogSearch\Test\Page\AdvancedSearch;
11 use Magento\Cms\Test\Page\CmsIndex;
12 use Magento\Mtf\Fixture\FixtureFactory;
13 use Magento\Mtf\Fixture\InjectableFixture;
14 use Magento\Mtf\Constraint\AbstractConstraint;
15 use Magento\CatalogSearch\Test\Page\CatalogsearchResult;
16 
20 class AssertAdvancedSearchProductByAttribute extends AbstractConstraint
21 {
27  protected $fixtureFactory;
28 
40  public function processAssert(
41  CmsIndex $cmsIndex,
42  InjectableFixture $product,
43  AdvancedSearch $searchPage,
44  CatalogsearchResult $catalogSearchResult,
45  FixtureFactory $fixtureFactory,
46  $attributeValue = null
47  ) {
48  $this->fixtureFactory = $fixtureFactory;
49  $cmsIndex->open();
50  $cmsIndex->getFooterBlock()->openAdvancedSearch();
51  $searchForm = $searchPage->getForm();
52  $productSearch = $this->prepareFixture($product, $attributeValue);
53 
54  $searchForm->fill($productSearch);
55  $searchForm->submit();
56  do {
57  $isVisible = $catalogSearchResult->getListProductBlock()->getProductItem($product)->isVisible();
58  } while (!$isVisible && $catalogSearchResult->getBottomToolbar()->nextPage());
59 
60  \PHPUnit\Framework\Assert::assertTrue($isVisible, 'Product attribute is not searchable on Frontend.');
61  }
62 
70  protected function prepareFixture(InjectableFixture $productSearch, $attributeValue)
71  {
72  $customAttribute = $productSearch->getDataFieldConfig('custom_attribute')['source']->getAttribute();
73  if ($attributeValue !== null) {
74  $customAttribute = ['value' => $attributeValue, 'attribute' => $customAttribute];
75  }
76  return $this->fixtureFactory->createByCode(
77  'catalogProductSimple',
78  ['data' => ['custom_attribute' => $customAttribute]]
79  );
80  }
81 
87  public function toString()
88  {
89  return 'Product attribute is searchable on Frontend.';
90  }
91 }
processAssert(CmsIndex $cmsIndex, InjectableFixture $product, AdvancedSearch $searchPage, CatalogsearchResult $catalogSearchResult, FixtureFactory $fixtureFactory, $attributeValue=null)