Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssertAddedProductAttributeOnProductForm.php
Go to the documentation of this file.
1 <?php
8 
10 use Magento\Mtf\Fixture\InjectableFixture;
11 use Magento\Mtf\Fixture\FixtureFactory;
12 use Magento\Mtf\Constraint\AbstractConstraint;
13 use Magento\Catalog\Test\Fixture\CatalogProductAttribute;
14 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductEdit;
15 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
16 use Magento\Mtf\Client\BrowserInterface;
17 
22 class AssertAddedProductAttributeOnProductForm extends AbstractConstraint
23 {
27  const ATTRIBUTES = 'attributes';
28 
34  protected $fixtureFactory;
35 
42 
49 
55  protected $attributes = '[data-index="attributes"]';
56 
71  public function processAssert(
72  InjectableFixture $product,
73  FixtureFactory $fixtureFactory,
74  CatalogProductIndex $catalogProductIndex,
75  CatalogProductEdit $catalogProductEdit,
76  CatalogProductAttribute $attribute,
77  CatalogAttributeSet $attributeSet,
78  BrowserInterface $browser,
79  CatalogProductAttribute $productAttributeOriginal = null
80  ) {
81  $this->fixtureFactory = $fixtureFactory;
82  $this->catalogProductIndex = $catalogProductIndex;
83  $this->catalogProductEdit = $catalogProductEdit;
84 
85  if (!$product->hasData('sku')) {
86  if (!$productAttributeOriginal) {
87  $productAttributeOriginal = $attribute;
88  }
89  $product = $this->objectManager->create(
90  \Magento\Catalog\Test\TestStep\CreateProductWithAttributeSetStep::class,
91  [
92  'attribute' => $productAttributeOriginal,
93  'attributeSet' => $attributeSet
94  ]
95  )->run();
96  $product = $product['product'];
97  }
98  $filterProduct = ['sku' => $product->getSku()];
99  $catalogProductIndex->open();
100  $catalogProductIndex->getProductGrid()->searchAndOpen($filterProduct);
101 
102  $catalogProductAttribute = ($productAttributeOriginal !== null)
103  ? array_merge($productAttributeOriginal->getData(), $attribute->getData())
104  : $attribute->getData();
105  if ($browser->find($this->attributes)->isVisible()) {
106  $catalogProductEdit->getProductForm()->openSection(self::ATTRIBUTES);
107  }
108 
109  \PHPUnit\Framework\Assert::assertTrue(
110  $catalogProductEdit->getProductForm()->checkAttributeLabel($catalogProductAttribute),
111  "Product Attribute is absent on Product form."
112  );
113  }
114 
120  public function toString()
121  {
122  return 'Product Attribute is present on Product form.';
123  }
124 }
processAssert(InjectableFixture $product, FixtureFactory $fixtureFactory, CatalogProductIndex $catalogProductIndex, CatalogProductEdit $catalogProductEdit, CatalogProductAttribute $attribute, CatalogAttributeSet $attributeSet, BrowserInterface $browser, CatalogProductAttribute $productAttributeOriginal=null)