Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
UpdateSimpleProductEntityTest.php
Go to the documentation of this file.
1 <?php
8 
11 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductEdit;
12 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
13 use Magento\Mtf\TestCase\Injectable;
14 use Magento\Mtf\Fixture\FixtureFactory;
16 
33 class UpdateSimpleProductEntityTest extends Injectable
34 {
35  /* tags */
36  const TEST_TYPE = 'acceptance_test, extended_acceptance_test';
37  const MVP = 'yes';
38  /* end tags */
39 
45  protected $productGrid;
46 
52  protected $editProductPage;
53 
59  protected $configData;
60 
66  private $fixtureFactory;
67 
76  public function __inject(
77  CatalogProductIndex $productGrid,
78  CatalogProductEdit $editProductPage,
79  FixtureFactory $fixtureFactory
80  ) {
81  $this->productGrid = $productGrid;
82  $this->editProductPage = $editProductPage;
83  $this->fixtureFactory = $fixtureFactory;
84  }
85 
95  public function test(
96  CatalogProductSimple $initialProduct,
97  CatalogProductSimple $product,
98  Store $store = null,
99  $configData = ''
100  ) {
101  $this->configData = $configData;
102  // Preconditions
103  $initialProduct->persist();
104  $category = $this->getCategory($initialProduct, $product);
105 
106  if ($store) {
107  $store->persist();
108  $productName[$store->getStoreId()] = $product->getName();
109  }
110 
111  $this->objectManager->create(
112  \Magento\Config\Test\TestStep\SetupConfigurationStep::class,
113  ['configData' => $configData]
114  )->run();
115 
116  // Steps
117  $filter = ['sku' => $initialProduct->getSku()];
118 
119  $this->productGrid->open();
120  $this->productGrid->getProductGrid()->searchAndOpen($filter);
121  if ($store) {
122  $this->editProductPage->getFormPageActions()->changeStoreViewScope($store);
123  }
124  $this->editProductPage->getProductForm()->fill($product);
125  $this->editProductPage->getFormPageActions()->save();
126 
127  return [
128  'category' => $category,
129  'stores' => isset($store) ? [$store] : [],
130  'productNames' => isset($productName) ? $productName : [],
131  ];
132  }
133 
141  protected function getCategory(CatalogProductSimple $initialProduct, CatalogProductSimple $product)
142  {
143  $initialCategory = $initialProduct->hasData('category_ids')
144  ? $initialProduct->getDataFieldConfig('category_ids')['source']->getCategories()[0]
145  : null;
146  return $product->hasData('category_ids') && $product->getCategoryIds()[0]
147  ? $product->getDataFieldConfig('category_ids')['source']->getCategories()[0]
148  : $initialCategory;
149  }
150 
156  public function tearDown()
157  {
158  if ($this->configData) {
159  $this->objectManager->create(
160  \Magento\Config\Test\TestStep\SetupConfigurationStep::class,
161  ['configData' => $this->configData, 'rollback' => true]
162  )->run();
163  }
164  }
165 }
test(CatalogProductSimple $initialProduct, CatalogProductSimple $product, Store $store=null, $configData='')
getCategory(CatalogProductSimple $initialProduct, CatalogProductSimple $product)
__inject(CatalogProductIndex $productGrid, CatalogProductEdit $editProductPage, FixtureFactory $fixtureFactory)