Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ParametersForm.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Mtf\Block\Form;
10 use Magento\Mtf\Client\Locator;
11 use Magento\Mtf\Fixture\InjectableFixture;
12 use Magento\Mtf\Client\Element\SimpleElement;
14 
18 class ParametersForm extends Form
19 {
25  protected $selectEntity = '.btn-chooser';
26 
32  protected $gridBlock = '';
33 
39  protected $pathToGrid = '';
40 
46  protected $template = './ancestor::body';
47 
55  public function fillForm(array $parametersFields, SimpleElement $element = null)
56  {
57  $element = $element === null ? $this->_rootElement : $element;
58  $mapping = $this->dataMapping($parametersFields);
59  $this->_fill(array_diff_key($mapping, ['entities' => '']), $element);
60  if (isset($parametersFields['entities'])) {
61  $this->selectEntity($mapping['entities']);
62  }
63  }
64 
72  public function getDataOptions(array $fields = null, SimpleElement $element = null)
73  {
74  $element = $element === null ? $this->_rootElement : $element;
75  $mapping = $this->dataMapping($fields);
76  return $this->_getData($mapping, $element);
77  }
78 
85  protected function selectEntity(array $entities)
86  {
87  foreach ($entities['value'] as $entity) {
88  $this->_rootElement->find($this->selectEntity)->click();
89  $this->getTemplateBlock()->waitLoader();
90  $grid = $this->blockFactory->create(
91  $this->pathToGrid,
92  [
93  'element' => $this->_rootElement->find($this->gridBlock, Locator::SELECTOR_XPATH)
94  ]
95  );
96  $grid->searchAndSelect($this->prepareFilter($entity));
97  }
98  }
99 
106  protected function prepareFilter(InjectableFixture $entity)
107  {
108  return ['title' => $entity->getTitle()];
109  }
110 
116  public function getTemplateBlock()
117  {
118  return $this->blockFactory->create(
119  \Magento\Backend\Test\Block\Template::class,
120  ['element' => $this->_rootElement->find($this->template, Locator::SELECTOR_XPATH)]
121  );
122  }
123 }
$fields
Definition: details.phtml:14
$entity
Definition: element.phtml:22
$element
Definition: element.phtml:12