9 use Magento\Mtf\Block\Form;
10 use Magento\Mtf\Client\Element\SimpleElement;
11 use Magento\Mtf\Fixture\FixtureInterface;
12 use Magento\Mtf\Fixture\InjectableFixture;
13 use Magento\Mtf\Client\ElementInterface;
14 use Magento\Mtf\Client\Locator;
47 protected $closeButton =
'aside[style]:not([style=""]) [data-role="closeBtn"]';
56 $this->containers = $this->getFormMapping();
67 protected function getContainer($containerName)
69 $containerClass = $this->containers[$containerName][
'class'];
71 $container = $this->blockFactory->create($containerClass, [
'element' => $this->_rootElement]);
73 throw new \Exception(
'Wrong Container Class.');
75 $container->setWrapper(
76 isset($this->containers[$containerName][
'wrapper']) ? $this->containers[$containerName][
'wrapper'] :
'' 78 $container->setMapping(
79 isset($this->containers[$containerName][
'fields']) ? (array)$this->containers[$containerName][
'fields'] : []
94 public function getData(FixtureInterface $fixture =
null, SimpleElement
$element =
null)
98 if (
null === $fixture) {
99 foreach ($this->containers as $containerName => $containerData) {
101 $containerData = $this->getContainer($containerName)->getFieldsData();
105 $hasData = ($fixture instanceof InjectableFixture) ? $fixture->hasData() :
true;
107 foreach ($dataByContainers as $containerName => $containerFields) {
108 if (!$containerName) {
112 $containerData = $this->getContainer($containerName)->getFieldsData($containerFields);
127 public function fill(FixtureInterface $fixture, SimpleElement
$element =
null)
145 $dataByContainer = [];
146 $data = $fixture->getData();
148 $attributes = $fixture->getDataFieldConfig($field);
156 return $dataByContainer;
170 protected function fillContainers(array $dataByContainers, SimpleElement
$element =
null)
173 foreach ($dataByContainers as $containerName => $containerFields) {
176 $container = $this->getContainer($containerName);
177 $container->setFieldsData($containerFields, $context);
179 if (!empty($this->unassignedFields)) {
193 foreach (array_keys($this->containers) as $containerName) {
194 $container = $this->getContainer($containerName);
196 $mapping = $container->dataMapping($this->unassignedFields);
197 foreach ($mapping as $fieldName =>
$data) {
201 unset($this->unassignedFields[$fieldName]);
204 if ($this->browser->find($this->closeButton)->isVisible()) {
205 $this->browser->find($this->closeButton)->click();
207 if (empty($this->unassignedFields)) {
213 if (!empty($this->unassignedFields)) {
214 throw new \Exception(
215 'Could not find all elements on the tabs: ' . implode(
', ', array_keys($this->unassignedFields))
228 $selector = $this->containers[$containerName][
'selector'];
229 $strategy = isset($this->containers[$containerName][
'strategy'])
230 ? $this->containers[$containerName][
'strategy']
231 : Locator::SELECTOR_CSS;
232 return $this->_rootElement->find($selector, $strategy);
elseif(isset( $params[ 'redirect_parent']))