Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssertProductViewBreadcrumbsCategory.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
12 use Magento\Catalog\Test\Page\Category\CatalogCategoryView;
13 use Magento\Catalog\Test\Page\Product\CatalogProductView;
14 use Magento\Cms\Test\Page\CmsIndex;
15 use Magento\Mtf\Client\BrowserInterface;
16 use Magento\Mtf\Constraint\AbstractConstraint;
17 
21 class AssertProductViewBreadcrumbsCategory extends AbstractConstraint
22 {
31  public function processAssert(
32  CatalogCategoryView $catalogCategoryView,
33  CatalogProductView $catalogProductView,
34  CmsIndex $cmsIndex,
35  BrowserInterface $browser,
36  CatalogProductSimple $product
37  ) {
38  $categories = is_object($product->getDataFieldConfig('category_ids')['source'])
39  ? $product->getDataFieldConfig('category_ids')['source']->getCategories()
40  : [];
41 
42  if (!empty($categories)) {
44  foreach ($categories as $category) {
45  $cmsIndex->open();
46  $cmsIndex->getTopmenu()->selectCategoryByName($category->getName());
47 
48  $productItem = $catalogCategoryView->getListProductBlock()->getProductItem($product);
49  \PHPUnit\Framework\Assert::assertTrue(
50  $productItem->isVisible(),
51  'Product is not present in category.'
52  );
53 
54  $productItem->open();
55  // Ensure page is cached
56  $browser->refresh();
57 
58  $breadcrumbs = $catalogProductView->getBreadcrumbs()->getCrumbs();
59 
60  \PHPUnit\Framework\Assert::assertContains(
61  $category->getName(),
62  $breadcrumbs,
63  'Product view page has incorrect breadcrumbs.'
64  );
65  }
66  }
67  }
68 
72  public function toString()
73  {
74  return 'Product has correct category in product view breadcrumbs.';
75  }
76 }
$categories