/** * @constructor * @param FixtureFactory $fixtureFactory * @param array $params * @param array $data */ public function __construct(FixtureFactory $fixtureFactory, array $params, array $data) { $this->params = $params; if (isset($data['entity'])) { list($type, $entity) = explode('/', $data['entity']); list($fixture, $dataSet) = explode('::', $entity); $this->entity = $fixtureFactory->createByCode($fixture, ['dataSet' => $dataSet]); $this->entity->persist(); $this->data = sprintf("catalog/%s/view/id/%s", $type, $this->entity->getId()); } if (isset($data['custom'])) { $this->data = $data['custom']; } if (isset($data['readyEntity'])) { $this->entity = $data['readyEntity']; } }
/** * @param FixtureFactory $fixtureFactory * @param array $params * @param string $data [optional] */ public function __construct(FixtureFactory $fixtureFactory, array $params, $data = '') { $this->params = $params; if (!isset($data['entity']) || $data['entity'] === '-') { $this->data = $data; return; } preg_match('`%(.*?)%`', $data['entity'], $dataSet); $entityConfig = isset($dataSet[1]) ? explode('::', $dataSet[1]) : []; if (count($entityConfig) > 1) { /** @var FixtureInterface $fixture */ $this->entity = $fixtureFactory->createByCode($entityConfig[0], ['dataSet' => $entityConfig[1]]); $this->entity->persist(); $id = $this->entity->hasData('id') ? $this->entity->getId() : $this->entity->getPageId(); $this->data = preg_replace('`(%.*?%)`', $id, $data['entity']); } else { $this->data = strval($data['entity']); } }
/** * Prepare data. * * @param FixtureInterface $fixture * @param $isSearchByEmail * @return array */ protected function prepareData(FixtureInterface $fixture, $isSearchByEmail) { /** @var Order $fixture */ /** @var Customer $customer */ $customer = $fixture->getDataFieldConfig('customer_id')['source']->getCustomer(); $data = ['order_id' => $fixture->getId(), 'billing_last_name' => $customer->getLastname()]; if ($isSearchByEmail) { $data['find_order_by'] = 'Email'; $data['email_address'] = $customer->getEmail(); } else { $data['find_order_by'] = 'ZIP Code'; $data['billing_zip_code'] = $fixture->getDataFieldConfig('billing_address_id')['source']->getPostcode(); } return $data; }
/** * Fill the form. * * @param FixtureInterface $fixture * @param SimpleElement|null $element * @param bool $isSearchByEmail [optional] * @return $this */ public function fill(FixtureInterface $fixture, SimpleElement $element = null, $isSearchByEmail = true) { /** @var OrderInjectable $fixture */ /** @var Customer $customer */ $customer = $fixture->getDataFieldConfig('customer_id')['source']->getCustomer(); $data = ['order_id' => $fixture->getId(), 'billing_last_name' => $customer->getLastname()]; if ($isSearchByEmail) { $data['find_order_by'] = 'Email'; $data['email_address'] = $customer->getEmail(); } else { $data['find_order_by'] = 'ZIP Code'; $data['billing_zip_code'] = $fixture->getDataFieldConfig('billing_address_id')['source']->getPostcode(); } $fields = isset($data['fields']) ? $data['fields'] : $data; $mapping = $this->dataMapping($fields); $this->waitLoadForm(); $this->_fill($mapping, $element); return $this; }