/** * Assert that deleted attribute can't be used for Products' Export * * @param AdminExportIndex $exportIndex * @param CatalogProductAttribute $attribute * @param ImportExport $export * @return void */ public function processAssert(AdminExportIndex $exportIndex, CatalogProductAttribute $attribute, ImportExport $export) { $exportIndex->open(); $exportIndex->getExportForm()->fill($export); $filter = ['attribute_code' => $attribute->getAttributeCode()]; \PHPUnit_Framework_Assert::assertFalse($exportIndex->getFilterExport()->isRowVisible($filter), 'Attribute \'' . $attribute->getFrontendLabel() . '\' is present in Filter export grid'); }
/** * Assert that displayed attribute data on edit page equals passed from fixture. * * @param CatalogProductAttributeIndex $catalogProductAttributeIndex * @param CatalogProductAttributeNew $catalogProductAttributeNew * @param CatalogProductAttribute $attribute * @throws \Exception * @return void */ public function processAssert(CatalogProductAttributeIndex $catalogProductAttributeIndex, CatalogProductAttributeNew $catalogProductAttributeNew, CatalogProductAttribute $attribute) { $filter = ['attribute_code' => $attribute->getAttributeCode()]; $catalogProductAttributeIndex->open()->getGrid()->searchAndOpen($filter); $errors = $this->verifyData($attribute->getData(), $catalogProductAttributeNew->getAttributeForm()->getData($attribute)); \PHPUnit_Framework_Assert::assertEmpty($errors, $errors); }
/** * Run delete system product attribute test * * @param CatalogProductAttribute $productAttribute * @param CatalogProductAttributeIndex $attributeIndex * @return void */ public function testDeleteSystemProductAttribute(CatalogProductAttribute $productAttribute, CatalogProductAttributeIndex $attributeIndex) { $filter = $productAttribute->getData(); // Steps $attributeIndex->open(); $attributeIndex->getGrid()->searchAndOpen($filter); }
/** * Check whether attribute is displayed in the advanced search form on the frontend. * * @param CatalogProductAttribute $attribute * @param AdvancedSearch $advancedSearch * @return void */ public function processAssert(CatalogProductAttribute $attribute, AdvancedSearch $advancedSearch) { $advancedSearch->open(); $formLabels = $advancedSearch->getForm()->getFormlabels(); $label = $attribute->hasData('manage_frontend_label') ? $attribute->getManageFrontendLabel() : $attribute->getFrontendLabel(); \PHPUnit_Framework_Assert::assertTrue(in_array($label, $formLabels), 'Attribute is absent on advanced search form.'); }
/** * Assert that product attribute can be used on promo rules conditions. * * @param CatalogRuleIndex $catalogRuleIndex * @param CatalogRuleNew $catalogRuleNew * @param CatalogProductAttribute $attribute * @return void */ public function processAssert(CatalogRuleIndex $catalogRuleIndex, CatalogRuleNew $catalogRuleNew, CatalogProductAttribute $attribute) { $catalogRuleIndex->open(); $catalogRuleIndex->getGridPageActions()->addNew(); $catalogRuleNew->getEditForm()->openTab('conditions'); \PHPUnit_Framework_Assert::assertTrue($catalogRuleNew->getEditForm()->isAttributeInConditions($attribute->getFrontendLabel()), 'Product attribute can\'t be used on promo rules conditions.'); }
/** * Check whether the attribute filter is displayed on the frontend in Layered navigation. * * @param CatalogCategoryView $catalogCategoryView * @param InjectableFixture $product * @param CatalogProductAttribute $attribute * @param CmsIndex $cmsIndex * @param FixtureFactory $fixtureFactory * @return void */ public function processAssert(CatalogCategoryView $catalogCategoryView, InjectableFixture $product, CatalogProductAttribute $attribute, CmsIndex $cmsIndex, FixtureFactory $fixtureFactory) { $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'product_with_category_with_anchor', 'data' => ['category_ids' => ['presets' => null, 'category' => $product->getDataFieldConfig('category_ids')['source']->getCategories()[0]]]])->persist(); $cmsIndex->open()->getTopmenu()->selectCategoryByName($product->getCategoryIds()[0]); $label = $attribute->hasData('manage_frontend_label') ? $attribute->getManageFrontendLabel() : $attribute->getFrontendLabel(); \PHPUnit_Framework_Assert::assertTrue(in_array($label, $catalogCategoryView->getLayeredNavigationBlock()->getFilters()), 'Attribute is absent in layered navigation on category page.'); }
/** * Move attribute To attribute set. * * @return array */ public function run() { $filterAttribute = ['set_name' => $this->attributeSet->getAttributeSetName()]; $this->catalogProductSetIndex->open()->getGrid()->searchAndOpen($filterAttribute); $this->catalogProductSetEdit->getAttributeSetEditBlock()->moveAttribute($this->attribute->getData()); $this->catalogProductSetEdit->getPageActions()->save(); }
/** * Checking not exist attribute in search result. * * @param CatalogProductAttribute $productAttribute * @return bool */ public function isExistAttributeInSearchResult($productAttribute) { $this->find($this->actionToggle)->click(); $this->find($this->suggest)->setValue($productAttribute->getFrontendLabel()); $this->waitResult(); $attributeSelector = sprintf($this->searchArrtibute, $productAttribute->getFrontendLabel()); return $this->find($this->searchResult)->find($attributeSelector, Locator::SELECTOR_XPATH)->isVisible(); }
/** * Assert that deleted attribute can't be added to attribute set on Product Page via Add Attribute control. * * @param CatalogProductAttribute $productAttribute * @param CatalogProductIndex $productGrid * @param CatalogProductNew $newProductPage * @return void */ public function processAssert(CatalogProductAttribute $productAttribute, CatalogProductIndex $productGrid, CatalogProductNew $newProductPage) { $productGrid->open(); $productGrid->getGridPageActionBlock()->addProduct('simple'); $newProductPage->getFormPageActions()->addNewAttribute(); $filter = ['label' => $productAttribute->getFrontendLabel()]; \PHPUnit_Framework_Assert::assertFalse($newProductPage->getProductForm()->getAttributesSearchGrid()->isRowVisible($filter), 'Attribute \'' . $productAttribute->getFrontendLabel() . '\' is found in Attributes grid.'); }
/** * Check if attribute value contains tag. * * @param CatalogProductAttribute $attribute * @return bool */ public function hasHtmlTagInAttributeValue(CatalogProductAttribute $attribute) { $data = $attribute->getData(); $defaultValue = preg_grep('/^default_value/', array_keys($data)); $selector = $this->resolveHtmlStructure($data[array_shift($defaultValue)]); $element = $this->getProductAttributes()[$attribute->getFrontendLabel()]; return $this->checkHtmlTagStructure($element, $selector)->isVisible(); }
/** * Check whether there is an opportunity to compare products using given attribute. * * @param InjectableFixture $product * @param CatalogProductAttribute $attribute * @param BrowserInterface $browser * @param CatalogProductView $catalogProductView * @param CatalogProductCompare $catalogProductCompare */ public function processAssert(InjectableFixture $product, CatalogProductAttribute $attribute, BrowserInterface $browser, CatalogProductView $catalogProductView, CatalogProductCompare $catalogProductCompare) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->clickAddToCompare(); $catalogProductCompare->open(); $label = $attribute->hasData('manage_frontend_label') ? $attribute->getManageFrontendLabel() : $attribute->getFrontendLabel(); \PHPUnit_Framework_Assert::assertTrue(in_array($label, $catalogProductCompare->getCompareProductsBlock()->getComparableAttributes()), 'Attribute is absent on product compare page.'); }
/** * Delete product attribute step. * * @return void */ public function run() { $filter = ['attribute_code' => $this->attribute->getAttributeCode()]; if ($this->catalogProductAttributeIndex->open()->getGrid()->isRowVisible($filter)) { $this->catalogProductAttributeIndex->getGrid()->searchAndOpen($filter); $this->catalogProductAttributeNew->getPageActions()->delete(); } }
/** * Run DeleteProductAttributeEntity test. * * @param CatalogProductAttribute $attribute * @param CatalogProductAttributeIndex $attributeIndex * @param CatalogProductAttributeNew $attributeNew * @return void */ public function testDeleteProductAttribute(CatalogProductAttribute $attribute, CatalogProductAttributeIndex $attributeIndex, CatalogProductAttributeNew $attributeNew) { //Precondition $attribute->persist(); //Steps $attributeIndex->open(); $attributeIndex->getGrid()->searchAndOpen(['frontend_label' => $attribute->getFrontendLabel()]); $attributeNew->getPageActions()->delete(); }
/** * Delete product attribute step. * * @return void */ public function run() { $filter = $this->attribute->hasData('attribute_code') ? ['attribute_code' => $this->attribute->getAttributeCode()] : ['frontend_label' => $this->attribute->getFrontendLabel()]; $this->catalogProductAttributeIndex->open(); if ($this->catalogProductAttributeIndex->getGrid()->isRowVisible($filter)) { $this->catalogProductAttributeIndex->getGrid()->searchAndOpen($filter); $this->catalogProductAttributeNew->getPageActions()->delete(); } }
/** * Assert check whether the attribute is used to create a configurable products * * @param CatalogProductAttribute $productAttribute * @param CatalogProductAttribute $attribute * @param CatalogProductIndex $productGrid * @param FixtureFactory $fixtureFactory * @param CatalogProductNew $newProductPage */ public function processAssert(CatalogProductAttribute $attribute, CatalogProductIndex $productGrid, FixtureFactory $fixtureFactory, CatalogProductNew $newProductPage, CatalogProductAttribute $productAttribute = null) { $this->attribute = !is_null($productAttribute) ? $productAttribute : $attribute; $productGrid->open(); $productGrid->getGridPageActionBlock()->addProduct('configurable'); $productConfigurable = $fixtureFactory->createByCode('catalogProductConfigurable', ['dataSet' => 'default', 'data' => ['configurable_attributes_data' => ['preset' => 'one_variation', 'attributes' => [$this->attribute]]]]); $productBlockForm = $newProductPage->getForm(); $productBlockForm->fill($productConfigurable); \PHPUnit_Framework_Assert::assertTrue($newProductPage->getForm()->findAttribute($this->attribute->getFrontendLabel()), "Product attribute is absent on the product page."); }
/** * Checking not exist attribute in search result * * @param CatalogProductAttribute $productAttribute * @return bool */ public function isExistAttributeInSearchResult($productAttribute) { $this->find($this->actionToggle)->click(); $this->find($this->suggest)->setValue($productAttribute->getFrontendLabel()); $this->waitResult(); if ($this->find($this->searchResult)->getText() == $productAttribute->getFrontendLabel()) { return true; } return false; }
/** * Check whether the attribute is unique. * * @param CatalogProductIndex $catalogProductIndex * @param CatalogProductEdit $catalogProductEdit * @param CatalogProductAttribute $attribute * @param CatalogProductSimple $product, * @param FixtureFactory $fixtureFactory * @throws \Exception * @return void */ public function processAssert(CatalogProductIndex $catalogProductIndex, CatalogProductEdit $catalogProductEdit, CatalogProductAttribute $attribute, CatalogProductSimple $product, FixtureFactory $fixtureFactory) { $simpleProduct = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'product_with_category_with_anchor', 'data' => ['attribute_set_id' => ['attribute_set' => $product->getDataFieldConfig('attribute_set_id')['source']->getAttributeSet()], 'custom_attribute' => $attribute]]); $catalogProductIndex->open()->getGridPageActionBlock()->addProduct('simple'); $productForm = $catalogProductEdit->getProductForm(); $productForm->fill($simpleProduct); $catalogProductEdit->getFormPageActions()->save(); $failedAttributes = $productForm->getRequireNoticeAttributes($simpleProduct); $actualMessage = isset($failedAttributes['product-details'][$attribute->getFrontendLabel()]) ? $failedAttributes['product-details'][$attribute->getFrontendLabel()] : null; \PHPUnit_Framework_Assert::assertEquals(sprintf(self::UNIQUE_MESSAGE, $attribute->getFrontendLabel()), $actualMessage, 'JS error notice on product edit page is not equal to expected.'); }
/** * Run CreateAttributeSetEntity test * * @param CatalogAttributeSet $attributeSet * @param CatalogProductAttribute $productAttribute * @return void */ public function testCreateAttributeSet(CatalogAttributeSet $attributeSet, CatalogProductAttribute $productAttribute) { $productAttribute->persist(); //Steps $this->productSetIndex->open(); $this->productSetIndex->getPageActionsBlock()->addNew(); $this->productSetAdd->getAttributeSetForm()->fill($attributeSet); $this->productSetAdd->getPageActions()->save(); $this->productSetEdit->getAttributeSetEditBlock()->moveAttribute($productAttribute->getData()); $this->productSetEdit->getPageActions()->save(); }
/** * Move attribute To attribute set. * * @return array */ public function run() { $filterAttribute = ['set_name' => $this->productTemplate->getAttributeSetName()]; $this->catalogProductSetIndex->open()->getGrid()->searchAndOpen($filterAttribute); $this->catalogProductSetEdit->getAttributeSetEditBlock()->moveAttribute($this->attribute->getData()); $this->catalogProductSetEdit->getPageActions()->save(); // Create product with attribute set mentioned above: $product = $this->fixtureFactory->createByCode('catalogProductSimple', ['dataset' => 'product_with_category_with_anchor', 'data' => ['attribute_set_id' => ['attribute_set' => $this->productTemplate]]]); $product->persist(); return ['product' => $product]; }
/** * Add this attribute to Default attribute Template. Create product and Assert that created attribute * is displayed on product form (Products > Inventory > Catalog). * * @param InjectableFixture $product * @param CatalogProductIndex $productGrid * @param CatalogProductEdit $productEdit * @param CatalogProductAttribute $attribute * @param CatalogAttributeSet $attributeSet * @param CatalogProductAttribute $productAttributeOriginal * @throws \Exception * @return void */ public function processAssert(InjectableFixture $product, CatalogProductIndex $productGrid, CatalogProductEdit $productEdit, CatalogProductAttribute $attribute, CatalogAttributeSet $attributeSet, CatalogProductAttribute $productAttributeOriginal = null) { if (!$product->hasData('sku')) { $product = $this->createProductWithAttributeSet($productAttributeOriginal, $attributeSet); } $filterProduct = ['sku' => $product->getSku()]; $productGrid->open(); $productGrid->getProductGrid()->searchAndOpen($filterProduct); $catalogProductAttribute = $productAttributeOriginal !== null ? array_merge($productAttributeOriginal->getData(), $attribute->getData()) : $attribute->getData(); \PHPUnit_Framework_Assert::assertTrue($productEdit->getProductForm()->checkAttributeLabel($catalogProductAttribute), "Product Attribute is absent on Product form."); }
/** * Assert that deleted attribute can't be added to attribute set on Product Page via Add Attribute control. * * @param CatalogProductAttribute $productAttribute * @param ConfigurableProduct $assertProduct * @param CatalogProductIndex $productGrid * @param CatalogProductNew $newProductPage * @return void */ public function processAssert(CatalogProductAttribute $productAttribute, ConfigurableProduct $assertProduct, CatalogProductIndex $productGrid, CatalogProductNew $newProductPage) { $productGrid->open(); $productGrid->getGridPageActionBlock()->addProduct('simple'); /** @var VariationsTab $variationsTab */ $newProductPage->getProductForm()->fill($assertProduct); $variationsTab = $newProductPage->getProductForm()->getSection(self::TAB_VARIATIONS); $variationsTab->createConfigurations(); $attributesGrid = $variationsTab->getAttributeBlock()->getAttributesGrid(); \PHPUnit_Framework_Assert::assertFalse($attributesGrid->isRowVisible(['frontend_label' => $productAttribute->getFrontendLabel()]), "Product attribute found in Attribute Search form."); }
/** * Assert that after save a attribute set on edit product set page displays: * 1. Correct attribute set name in Attribute set name field passed from fixture * 2. Created Product Attribute (if was added) * * @param CatalogProductSetIndex $productSet * @param CatalogProductSetEdit $productSetEdit * @param CatalogAttributeSet $attributeSet * @param CatalogProductAttribute $productAttribute * @return void */ public function processAssert(CatalogProductSetIndex $productSet, CatalogProductSetEdit $productSetEdit, CatalogAttributeSet $attributeSet, CatalogProductAttribute $productAttribute = null) { $filterAttribute = ['set_name' => $attributeSet->getAttributeSetName()]; $productSet->open(); $productSet->getGrid()->searchAndOpen($filterAttribute); \PHPUnit_Framework_Assert::assertEquals($filterAttribute['set_name'], $productSetEdit->getAttributeSetEditBlock()->getAttributeSetName(), 'Attribute Set not found' . "\nExpected: " . $filterAttribute['set_name'] . "\nActual: " . $productSetEdit->getAttributeSetEditBlock()->getAttributeSetName()); if ($productAttribute !== null) { $attributeLabel = $productAttribute->getFrontendLabel(); \PHPUnit_Framework_Assert::assertTrue($productSetEdit->getAttributeSetEditBlock()->checkProductAttribute($attributeLabel), "Product Attribute is absent on Attribute Set Groups"); } }
/** * Run UpdateProductAttributeEntity test * * @param CatalogProductAttribute $productAttributeOriginal * @param CatalogProductAttribute $attribute * @param CatalogAttributeSet $productTemplate * @param CatalogProductAttributeIndex $attributeIndex * @param CatalogProductAttributeNew $attributeNew * @return void */ public function testUpdateProductAttribute(CatalogProductAttribute $productAttributeOriginal, CatalogProductAttribute $attribute, CatalogAttributeSet $productTemplate, CatalogProductAttributeIndex $attributeIndex, CatalogProductAttributeNew $attributeNew) { //Precondition $productTemplate->persist(); $productAttributeOriginal->persist(); $filter = ['attribute_code' => $productAttributeOriginal->getAttributeCode()]; //Steps $attributeIndex->open(); $attributeIndex->getGrid()->searchAndOpen($filter); $attributeNew->getAttributeForm()->fill($attribute); $attributeNew->getPageActions()->save(); }
/** * Assert check whether the attribute is used to create a configurable products. * * @param CatalogProductAttribute $attribute * @param ConfigurableProduct $assertProduct * @param CatalogProductIndex $productGrid * @param CatalogProductNew $newProductPage */ public function processAssert(CatalogProductAttribute $attribute, ConfigurableProduct $assertProduct, CatalogProductIndex $productGrid, CatalogProductNew $newProductPage) { $productGrid->open(); $productGrid->getGridPageActionBlock()->addProduct('configurable'); $productBlockForm = $newProductPage->getProductForm(); $productBlockForm->fill($assertProduct); $productBlockForm->openTab('variations'); /** @var \Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Variations\Config $variationsTab */ $variationsTab = $productBlockForm->getTab('variations'); $variationsTab->createConfigurations(); $attributesGrid = $variationsTab->getAttributeBlock()->getAttributesGrid(); \PHPUnit_Framework_Assert::assertTrue($attributesGrid->isRowVisible(['frontend_label' => $attribute->getFrontendLabel()]), "Product attribute is absent on the product page."); }
/** * Checking not exist configurable attribute in search result * * @param CatalogProductAttribute $productAttribute * @return bool */ public function isExistAttributeInSearchResult(CatalogProductAttribute $productAttribute) { $attribute = $productAttribute->getFrontendLabel(); $searchResult = $this->find($this->searchResult); $this->find($this->suggest)->setValue($attribute); if (!$searchResult->isVisible()) { return false; } if ($searchResult->getText() == $attribute) { return true; } return false; }
/** * Assert all product attribute options on product creation form. * * @param InjectableFixture $product * @param CatalogProductIndex $productGrid * @param CatalogProductAttribute $attribute * @param CatalogProductEdit $productEdit * @return void */ public function processAssert(InjectableFixture $product, CatalogProductIndex $productGrid, CatalogProductAttribute $attribute, CatalogProductEdit $productEdit) { $productGrid->open(); $productGrid->getProductGrid()->searchAndOpen(['sku' => $product->getSku()]); $attributeOptions = $attribute->getOptions(); $options[] = $attribute->getFrontendLabel(); foreach ($attributeOptions as $option) { $options[] = $option['admin']; } $productAttributeOptions = $productEdit->getProductForm()->getAttributeElement($attribute)->getText(); $productOptions = explode("\n", $productAttributeOptions); $diff = array_diff($options, $productOptions); \PHPUnit_Framework_Assert::assertTrue(empty($diff), "Products attribute options are absent on product form: " . implode(', ', $diff)); }
/** * Run UpdateProductTemplate test * * @param CatalogAttributeSet $attributeSet * @param CatalogAttributeSet $attributeSetOriginal * @param CatalogProductAttribute $productAttributeOriginal * @return void */ public function test(CatalogAttributeSet $attributeSet, CatalogAttributeSet $attributeSetOriginal, CatalogProductAttribute $productAttributeOriginal) { // Precondition $attributeSetOriginal->persist(); $productAttributeOriginal->persist(); // Steps $filter = ['set_name' => $attributeSetOriginal->getAttributeSetName()]; $this->productSetIndex->open(); $this->productSetIndex->getGrid()->searchAndOpen($filter); $groupName = $attributeSet->getGroup(); $this->productSetEdit->getAttributeSetEditBlock()->addAttributeSetGroup($groupName); $this->productSetEdit->getAttributeSetEditBlock()->moveAttribute($productAttributeOriginal->getData(), $groupName); $this->productSetEdit->getAttributeSetEditForm()->fill($attributeSet); $this->productSetEdit->getPageActions()->save(); }
/** * Add this attribute to Default attribute Template. Create product and Assert that created attribute * is displayed on product form (Products > Inventory > Catalog) * * @param FixtureFactory $fixtureFactory * @param CatalogProductSetIndex $productSet * @param CatalogProductSetEdit $productSetEdit * @param CatalogAttributeSet $productTemplate * @param CatalogProductIndex $productGrid * @param CatalogProductAttribute $productAttributeOriginal * @param CatalogProductEdit $productEdit * @param CatalogProductAttribute|null $productAttribute * @return void */ public function processAssert(FixtureFactory $fixtureFactory, CatalogProductSetIndex $productSet, CatalogProductSetEdit $productSetEdit, CatalogAttributeSet $productTemplate, CatalogProductIndex $productGrid, CatalogProductEdit $productEdit, CatalogProductAttribute $productAttribute, CatalogProductAttribute $productAttributeOriginal = null) { $filterAttribute = ['set_name' => $productTemplate->getAttributeSetName()]; $productSet->open(); $productSet->getGrid()->searchAndOpen($filterAttribute); $attributeData = $productAttributeOriginal !== null ? array_merge($productAttribute->getData(), $productAttributeOriginal->getData()) : $productAttribute->getData(); $productSetEdit->getAttributeSetEditBlock()->moveAttribute($attributeData, 'Product Details'); $productSetEdit->getPageActions()->save(); $product = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'product_with_category', 'data' => ['attribute_set_id' => ['attribute_set' => $productTemplate]]]); $product->persist(); $filterProduct = ['sku' => $product->getSku()]; $productGrid->open(); $productGrid->getProductGrid()->searchAndOpen($filterProduct); $catalogProductAttribute = $productAttributeOriginal !== null ? array_merge($productAttributeOriginal->getData(), $productAttribute->getData()) : $productAttribute->getData(); \PHPUnit_Framework_Assert::assertTrue($productEdit->getProductForm()->checkAttributeLabel($catalogProductAttribute), "Product Attribute is absent on Product form."); }
/** * Get search value for product attribute. * * @param CatalogProductAttribute $attribute * @return string */ protected function getSearchValue(CatalogProductAttribute $attribute) { $searchValue = ''; switch ($attribute->getFrontendInput()) { case 'Multiple Select': case 'Dropdown': foreach ($attribute->getOptions() as $option) { if ($option['is_default'] == 'Yes') { $searchValue = $option['admin']; } } break; case 'Text Field': $searchValue = $attribute->getDefaultValueText(); break; case 'Text Area': $searchValue = $attribute->getDefaultValueTextarea(); break; case 'Date': $searchValue = $attribute->getDefaultValueDate(); break; case 'Yes/No': $searchValue = $attribute->getDefaultValueYesno(); break; } return $searchValue; }
/** * Add this attribute to Default attribute Template. Create product and Assert that created attribute * is displayed on product form (Products > Inventory > Catalog). * * @param InjectableFixture $product * @param FixtureFactory $fixtureFactory * @param CatalogProductIndex $catalogProductIndex * @param CatalogProductEdit $catalogProductEdit * @param CatalogProductAttribute $attribute * @param CatalogAttributeSet $attributeSet * @param CatalogProductAttribute $productAttributeOriginal * @throws \Exception * @return void */ public function processAssert(InjectableFixture $product, FixtureFactory $fixtureFactory, CatalogProductIndex $catalogProductIndex, CatalogProductEdit $catalogProductEdit, CatalogProductAttribute $attribute, CatalogAttributeSet $attributeSet, CatalogProductAttribute $productAttributeOriginal = null) { $this->fixtureFactory = $fixtureFactory; $this->catalogProductIndex = $catalogProductIndex; $this->catalogProductEdit = $catalogProductEdit; if (!$product->hasData('sku')) { if (!$productAttributeOriginal) { $productAttributeOriginal = $attribute; } $product = $this->objectManager->create('Magento\\Catalog\\Test\\TestStep\\CreateProductWithAttributeSetStep', ['attribute' => $productAttributeOriginal, 'attributeSet' => $attributeSet])->run(); $product = $product['product']; } $filterProduct = ['sku' => $product->getSku()]; $catalogProductIndex->open(); $catalogProductIndex->getProductGrid()->searchAndOpen($filterProduct); $catalogProductAttribute = $productAttributeOriginal !== null ? array_merge($productAttributeOriginal->getData(), $attribute->getData()) : $attribute->getData(); \PHPUnit_Framework_Assert::assertTrue($catalogProductEdit->getProductForm()->checkAttributeLabel($catalogProductAttribute), "Product Attribute is absent on Product form."); }