Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GridFullTextSearchTest.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 GridFullTextSearchTest 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  $fieldGetter,
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 ($items as $item) {
97  $gridBlock->fullTextSearch($item->$fieldGetter());
98  $idsInGrid = $gridBlock->getAllIds();
99  if ($idColumn) {
100  $filteredTargetIds = [];
101  foreach ($idsInGrid as $filteredId) {
102  $filteredTargetIds[] = $gridBlock->getColumnValue($filteredId, $idColumn);
103  }
104  $idsInGrid = $filteredTargetIds;
105  }
106  $filteredIds = $this->getActualIds($idsInGrid, $items, $idGetter);
107  $filterResults[$item->$idGetter()] = $filteredIds;
108  }
109 
110  return ['results' => $filterResults];
111  }
112 
119  protected function getActualIds(array $ids, array $items, $idGetter)
120  {
121  $actualIds = [];
122  foreach ($items as $item) {
123  if (in_array($item->$idGetter(), $ids)) {
124  $actualIds[] = $item->$idGetter();
125  }
126  }
127  return $actualIds;
128  }
129 
137  protected function createItems($itemsCount, $fixtureName, $fixtureDataSet, $steps)
138  {
139  $items = [];
140  for ($i = 0; $i < $itemsCount; $i++) {
141  $item = $this->fixtureFactory->createByCode($fixtureName, ['dataset' => $fixtureDataSet]);
142  $item->persist();
143  $items[$i] = $item;
144  if (!empty($steps)) {
145  $this->processSteps($item, $steps[$i]);
146  }
147  }
148 
149  return $items;
150  }
151 
156  protected function processSteps(FixtureInterface $item, $steps)
157  {
158  if (!is_array($steps) && $steps != '-') {
159  $steps = [$steps];
160  } elseif ($steps == '-') {
161  $steps = [];
162  }
163  foreach ($steps as $step) {
164  $products = $item->getEntityId()['products'];
165  $cart['data']['items'] = ['products' => $products];
166  $cart = $this->fixtureFactory->createByCode('cart', $cart);
167  $processStep = $this->objectManager->create($step, ['order' => $item, 'cart' => $cart]);
168  $processStep->run();
169  }
170  }
171 }
__inject(PageFactory $pageFactory, FixtureFactory $fixtureFactory)
getActualIds(array $ids, array $items, $idGetter)
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
createItems($itemsCount, $fixtureName, $fixtureDataSet, $steps)
$page
Definition: pages.php:8
$i
Definition: gallery.phtml:31
$items