Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
MassProductUpdateTest.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Mtf\Fixture\FixtureFactory;
10 use Magento\Mtf\Fixture\FixtureInterface;
11 use Magento\Mtf\TestCase\Injectable;
13 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
14 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductActionAttributeEdit;
15 use Magento\Mtf\TestStep\TestStepFactory;
16 
37 class MassProductUpdateTest extends Injectable
38 {
39  /* tags */
40  const MVP = 'yes';
41  /* end tags */
42 
48  protected $productGrid;
49 
56 
62  protected $configData;
63 
69  private $testStepFactory;
70 
76  private $fixtureFactory;
77 
87  public function __inject(
88  CatalogProductIndex $productGrid,
89  CatalogProductActionAttributeEdit $attributeMassActionPage,
90  TestStepFactory $testStepFactory,
91  FixtureFactory $fixtureFactory
92  ) {
93  $this->productGrid = $productGrid;
94  $this->attributeMassActionPage = $attributeMassActionPage;
95  $this->testStepFactory = $testStepFactory;
96  $this->fixtureFactory = $fixtureFactory;
97  }
98 
107  public function test(CatalogProductSimple $product, $configData, array $initialProducts)
108  {
109  $this->configData = $configData;
110 
111  // Preconditions
112  $products = $this->testStepFactory->create(
113  \Magento\Catalog\Test\TestStep\CreateProductsStep::class,
114  ['products' => $initialProducts]
115  )->run()['products'];
116 
117  $this->objectManager->create(
118  \Magento\Config\Test\TestStep\SetupConfigurationStep::class,
119  ['configData' => $configData]
120  )->run();
121 
122  // Steps
123  $this->productGrid->open();
124  $this->productGrid->getProductGrid()->updateAttributes($products);
125  $this->attributeMassActionPage->getAttributesBlockForm()->fill($product);
126  $this->attributeMassActionPage->getFormPageActions()->save();
127  $updatedProducts = $this->prepareUpdatedProducts($products, $product);
128 
129  return ['products' => $updatedProducts];
130  }
131 
139  private function prepareUpdatedProducts(array $products, CatalogProductSimple $product)
140  {
141  $productsReturn = [];
143  foreach ($products as $item) {
144  $productsReturn[] = $this->fixtureFactory->create(
145  get_class($item),
146  ['data' => array_merge($item->getData(), $product->getData())]
147  );
148  }
149 
150  return $productsReturn;
151  }
152 
158  public function tearDown()
159  {
160  $this->objectManager->create(
161  \Magento\Config\Test\TestStep\SetupConfigurationStep::class,
162  ['configData' => $this->configData, 'rollback' => true]
163  )->run();
164  }
165 }
__inject(CatalogProductIndex $productGrid, CatalogProductActionAttributeEdit $attributeMassActionPage, TestStepFactory $testStepFactory, FixtureFactory $fixtureFactory)
test(CatalogProductSimple $product, $configData, array $initialProducts)