Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GridFilteringTest.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\Page\PageFactory;
12 use Magento\Mtf\TestCase\Injectable;
14 
28 class GridFilteringTest extends Injectable
29 {
30  /* tags */
31  const SEVERITY = 'S2';
32  const STABLE = 'no';
33  const MVP = 'no';
34  /* end tags */
35 
41  protected $pageFactory;
42 
48  protected $fixtureFactory;
49 
57  public function __inject(PageFactory $pageFactory, FixtureFactory $fixtureFactory)
58  {
59  $this->pageFactory = $pageFactory;
60  $this->fixtureFactory = $fixtureFactory;
61  }
62 
75  public function test(
76  $pageClass,
77  $gridRetriever,
78  $idGetter,
79  array $filters,
80  $fixtureName,
81  $itemsCount,
82  array $steps = [],
83  $fixtureDataSet = null,
84  $idColumn = null
85  ) {
86  $items = $this->createItems($itemsCount, $fixtureName, $fixtureDataSet, $steps);
87  $page = $this->pageFactory->create($pageClass);
88 
89  // Steps
90  $page->open();
92  $gridBlock = $page->$gridRetriever();
93  $gridBlock->resetFilter();
94 
95  $filterResults = [];
96  foreach ($filters as $index => $itemFilters) {
97  foreach ($itemFilters as $itemFiltersName => $itemFilterValue) {
98  if (substr($itemFilterValue, 0, 1) === ':') {
99  $value = $items[$index]->getData(substr($itemFilterValue, 1));
100  } else {
101  $value = $itemFilterValue;
102  }
103  $gridBlock->search([$itemFiltersName => $value]);
104  $idsInGrid = $gridBlock->getAllIds();
105  if ($idColumn) {
106  $filteredTargetIds = [];
107  foreach ($idsInGrid as $filteredId) {
108  $filteredTargetIds[] = $gridBlock->getColumnValue($filteredId, $idColumn);
109  }
110  $idsInGrid = $filteredTargetIds;
111  }
112  $filteredIds = $this->getActualIds($idsInGrid, $items, $idGetter);
113  $filterResults[$items[$index]->$idGetter()][$itemFiltersName] = $filteredIds;
114  }
115  }
116 
117  return ['filterResults' => $filterResults];
118  }
119 
126  protected function getActualIds(array $ids, array $items, $idGetter)
127  {
128  $actualIds = [];
129  foreach ($items as $item) {
130  if (in_array($item->$idGetter(), $ids)) {
131  $actualIds[] = $item->$idGetter();
132  }
133  }
134  return $actualIds;
135  }
136 
144  protected function createItems($itemsCount, $fixtureName, $fixtureDataSet, $steps)
145  {
146  $items = [];
147  for ($i = 0; $i < $itemsCount; $i++) {
148  $item = $this->fixtureFactory->createByCode($fixtureName, ['dataset' => $fixtureDataSet]);
149  $item->persist();
150  $items[$i] = $item;
151  if (!empty($steps)) {
152  $this->processSteps($item, $steps[$i]);
153  }
154  }
155 
156  return $items;
157  }
158 
163  protected function processSteps(FixtureInterface $item, $steps)
164  {
165  if (!is_array($steps) && $steps != '-') {
166  $steps = [$steps];
167  } elseif ($steps == '-') {
168  $steps = [];
169  }
170  foreach ($steps as $step) {
171  $products = $item->getEntityId()['products'];
172  $cart['data']['items'] = ['products' => $products];
173  $cart = $this->fixtureFactory->createByCode('cart', $cart);
174  $processStep = $this->objectManager->create($step, ['order' => $item, 'cart' => $cart]);
175  $processStep->run();
176  }
177  }
178 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
createItems($itemsCount, $fixtureName, $fixtureDataSet, $steps)
$value
Definition: gender.phtml:16
getActualIds(array $ids, array $items, $idGetter)
$page
Definition: pages.php:8
processSteps(FixtureInterface $item, $steps)
$filters
Definition: uploader.phtml:11
__inject(PageFactory $pageFactory, FixtureFactory $fixtureFactory)
$i
Definition: gallery.phtml:31
$index
Definition: list.phtml:44
$items