Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GridSortingTest.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 GridSortingTest extends Injectable
29 {
30  /* tags */
31  const SEVERITY = 'S2';
32  const MVP = 'no';
33  /* end tags */
34 
40  protected $pageFactory;
41 
47  protected $fixtureFactory;
48 
56  public function __inject(PageFactory $pageFactory, FixtureFactory $fixtureFactory)
57  {
58  $this->pageFactory = $pageFactory;
59  $this->fixtureFactory = $fixtureFactory;
60  }
61 
72  public function test(
73  $pageClass,
74  $gridRetriever,
75  array $columnsForSorting,
76  $fixtureName = null,
77  $fixtureDataSet = null,
78  $itemsCount = null,
79  array $steps = []
80  ) {
81  // Fill grid before sorting if needed
82  if ($fixtureName && $fixtureDataSet && $itemsCount && $steps) {
83  $this->createItems($itemsCount, $fixtureName, $fixtureDataSet, $steps);
84  }
85 
86  $page = $this->pageFactory->create($pageClass);
87 
88  // Steps
89  $page->open();
91  $gridBlock = $page->$gridRetriever();
92  $gridBlock->resetFilter();
93 
94  $sortingResults = [];
95  foreach ($columnsForSorting as $columnName) {
96  $gridBlock->sortByColumn($columnName);
97  $sortingResults[$columnName]['firstIdAfterFirstSoring'] = $gridBlock->getFirstItemId();
98  $gridBlock->sortByColumn($columnName);
99  $sortingResults[$columnName]['firstIdAfterSecondSoring'] = $gridBlock->getFirstItemId();
100  }
101 
102  return ['sortingResults' => $sortingResults];
103  }
104 
112  protected function createItems($itemsCount, $fixtureName, $fixtureDataSet, $steps)
113  {
114  $items = [];
115  for ($i = 0; $i < $itemsCount; $i++) {
116  $item = $this->fixtureFactory->createByCode($fixtureName, ['dataset' => $fixtureDataSet]);
117  $item->persist();
118  $items[$i] = $item;
119  $this->processSteps($item, $steps[$i]);
120  }
121 
122  return $items;
123  }
124 
129  protected function processSteps(FixtureInterface $item, $steps)
130  {
131  if (!is_array($steps) && $steps != '-') {
132  $steps = [$steps];
133  } elseif ($steps == '-') {
134  $steps = [];
135  }
136  foreach ($steps as $step) {
137  $products = $item->getEntityId()['products'];
138  $cart['data']['items'] = ['products' => $products];
139  $cart = $this->fixtureFactory->createByCode('cart', $cart);
140  $processStep = $this->objectManager->create($step, ['order' => $item, 'cart' => $cart]);
141  $processStep->run();
142  }
143  }
144 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
processSteps(FixtureInterface $item, $steps)
__inject(PageFactory $pageFactory, FixtureFactory $fixtureFactory)
$page
Definition: pages.php:8
createItems($itemsCount, $fixtureName, $fixtureDataSet, $steps)
$i
Definition: gallery.phtml:31
$items