Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssertProductAttributeIsUnique.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Catalog\Test\Fixture\CatalogProductAttribute;
11 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductEdit;
12 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
13 use Magento\Mtf\Constraint\AbstractConstraint;
14 use Magento\Mtf\Fixture\FixtureFactory;
15 
19 class AssertProductAttributeIsUnique extends AbstractConstraint
20 {
21  /* tags */
22  const SEVERITY = 'low';
23  /* end tags */
24 
28  const UNIQUE_MESSAGE = 'The value of the "%s" attribute isn\'t unique. Set a unique value and try again.';
29 
35  protected $fixtureFactory;
36 
48  public function processAssert(
49  CatalogProductIndex $catalogProductIndex,
50  CatalogProductEdit $catalogProductEdit,
51  CatalogProductAttribute $attribute,
52  CatalogProductSimple $product,
53  FixtureFactory $fixtureFactory
54  ) {
55  $this->fixtureFactory = $fixtureFactory;
57  $catalogProductIndex->open()->getGridPageActionBlock()->addProduct('simple');
58  $productForm = $catalogProductEdit->getProductForm();
59  $productForm->fill($simpleProduct);
60  $catalogProductEdit->getFormPageActions()->save();
61  $actualErrorMessage = $catalogProductEdit->getMessagesBlock()->getErrorMessage();
62  $attributeLabel = $attribute->getFrontendLabel();
63 
64  \PHPUnit\Framework\Assert::assertEquals(
65  sprintf(self::UNIQUE_MESSAGE, $attributeLabel),
66  $actualErrorMessage,
67  'JS error notice on product edit page is not equal to expected.'
68  );
69  }
70 
78  protected function createSimpleProductFixture(CatalogProductSimple $product, CatalogProductAttribute $attribute)
79  {
80  return $this->fixtureFactory->createByCode(
81  'catalogProductSimple',
82  [
83  'dataset' => 'product_with_category_with_anchor',
84  'data' => [
85  'attribute_set_id' => [
86  'attribute_set' => $product->getDataFieldConfig('attribute_set_id')['source']->getAttributeSet()
87  ],
88  'custom_attribute' => $attribute,
89  ],
90  ]
91  );
92  }
93 
99  public function toString()
100  {
101  return 'Attribute is unique.';
102  }
103 }
createSimpleProductFixture(CatalogProductSimple $product, CatalogProductAttribute $attribute)
processAssert(CatalogProductIndex $catalogProductIndex, CatalogProductEdit $catalogProductEdit, CatalogProductAttribute $attribute, CatalogProductSimple $product, FixtureFactory $fixtureFactory)