Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ExportAdvancedPricingTest.php
Go to the documentation of this file.
1 <?php
7 
8 use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
9 use Magento\ImportExport\Test\Page\Adminhtml\AdminExportIndex;
10 use Magento\Mtf\Fixture\FixtureFactory;
11 use Magento\Mtf\TestCase\Injectable;
12 use Magento\Mtf\TestStep\TestStepFactory;
13 use Magento\Store\Test\Fixture\Website;
14 
30 class ExportAdvancedPricingTest extends Injectable
31 {
37  private $stepFactory;
38 
44  private $fixtureFactory;
45 
51  private $adminExportIndex;
52 
58  private $configData;
59 
65  private $catalogProductIndex;
66 
73  public function __prepare(
74  CatalogProductIndex $catalogProductIndex
75  ) {
76  $catalogProductIndex->open();
77  $catalogProductIndex->getProductGrid()->massaction([], 'Delete', true, 'Select All');
78  }
79 
89  public function __inject(
90  TestStepFactory $stepFactory,
91  FixtureFactory $fixtureFactory,
92  AdminExportIndex $adminExportIndex,
93  CatalogProductIndex $catalogProductIndexPage
94  ) {
95  $this->stepFactory = $stepFactory;
96  $this->fixtureFactory = $fixtureFactory;
97  $this->adminExportIndex = $adminExportIndex;
98  $this->catalogProductIndex = $catalogProductIndexPage;
99  }
100 
112  public function test(
113  $exportData,
114  array $products = [],
115  $configData = null,
116  Website $website = null,
117  array $advancedPricingAttributes = [],
118  $currencyCustomWebsite = null
119  ) {
120  $this->configData = $configData;
121 
122  if ($this->configData) {
123  $this->stepFactory->create(
124  \Magento\Config\Test\TestStep\SetupConfigurationStep::class,
125  ['configData' => $configData]
126  )->run();
127  }
128 
129  if ($website) {
130  $website->persist();
131  $this->setupCurrencyForCustomWebsite($website, $currencyCustomWebsite);
132  }
134  $this->adminExportIndex->open();
135 
136  $exportData = $this->fixtureFactory->createByCode(
137  'exportData',
138  [
139  'dataset' => $exportData,
140  'data' => [
141  'data_export' => $products[0]
142  ]
143  ]
144  );
145  $exportData->persist();
146 
147  $this->adminExportIndex->getExportForm()->fill($exportData, null, $advancedPricingAttributes);
148  $this->adminExportIndex->getFilterExport()->clickContinue();
149 
150  if (!empty($advancedPricingAttributes)) {
151  $products = [$products[0]];
152  }
153 
154  return [
155  'products' => $products
156  ];
157  }
158 
166  private function setupCurrencyForCustomWebsite($website, $currencyDataset)
167  {
168  $configFixture = $this->fixtureFactory->createByCode(
169  'configData',
170  [
171  'dataset' => $currencyDataset,
172  'data' => [
173  'scope' => [
174  'fixture' => $website,
175  'scope_type' => 'website',
176  'website_id' => $website->getWebsiteId(),
177  'set_level' => 'website',
178  ]
179  ]
180  ]
181  );
182  $configFixture->persist();
183  }
184 
192  public function prepareProducts(array $products, Website $website = null)
193  {
194  if (empty($products)) {
195  return null;
196  }
197  $createdProducts = [];
198  foreach ($products as $product) {
199  $data = [
200  'website_ids' => [
201  ['websites' => $website]
202  ]
203  ];
204  if ($website) {
205  $data['tier_price'] = [
206  'data' => [
207  'website' => $website
208  ]
209  ];
210  }
211 
212  if (isset($product['data'])) {
213  $data = array_merge($data, $product['data']);
214  }
215 
216  $product = $this->fixtureFactory->createByCode(
217  $product['fixture'],
218  [
219  'dataset' => $product['dataset'],
220  'data' => $data
221  ]
222  );
223  $product->persist();
224  $createdProducts[] = $product;
225  }
226 
227  return $createdProducts;
228  }
229 
235  public function tearDown()
236  {
237  if ($this->configData) {
238  $this->stepFactory->create(
239  \Magento\Config\Test\TestStep\SetupConfigurationStep::class,
240  ['configData' => 'price_scope_website', 'rollback' => true]
241  )->run();
242  }
243  }
244 }
__inject(TestStepFactory $stepFactory, FixtureFactory $fixtureFactory, AdminExportIndex $adminExportIndex, CatalogProductIndex $catalogProductIndexPage)
test( $exportData, array $products=[], $configData=null, Website $website=null, array $advancedPricingAttributes=[], $currencyCustomWebsite=null)