/** * Select order item. * * @param FixtureInterface $product * @return void */ public function selectItem(FixtureInterface $product) { /** @var BundleProduct $product */ $checkoutData = $product->getCheckoutData(); $bundleSelection = $product->getBundleSelections(); $bundleOptions = isset($checkoutData['options']['bundle_options']) ? $checkoutData['options']['bundle_options'] : []; $labels = []; foreach ($bundleOptions as $optionKey => $option) { $optionKey = substr($optionKey, -1); $productKey = substr($option['value']['name'], -1); $labels[] = $bundleSelection[$optionKey]['assigned_products'][$productKey]['name']; } $this->searchAndSelect(['name' => $product->getName()]); $this->getTemplateBlock()->waitLoader(); $this->getSelectItemsBlock()->fill($labels); $this->getTemplateBlock()->waitLoader(); }
/** * Get product options * * @param FixtureInterface $product * @return array * @throws \Exception */ public function getOptions(FixtureInterface $product) { /** @var BundleProduct $product */ $bundleSelections = $product->getBundleSelections(); $bundleOptions = isset($bundleSelections['bundle_options']) ? $bundleSelections['bundle_options'] : []; $listFormOptions = $this->getListOptions(); $formOptions = []; foreach ($bundleOptions as $option) { $title = $option['title']; if (!isset($listFormOptions[$title])) { throw new \Exception("Can't find option: \"{$title}\""); } /** @var SimpleElement $optionElement */ $optionElement = $listFormOptions[$title]; $getTypeData = 'get' . $this->optionNameConvert($option['type']) . 'Data'; $optionData = $this->{$getTypeData}($optionElement); $optionData['title'] = $title; $optionData['type'] = $option['type']; $optionData['is_require'] = $optionElement->find($this->required, Locator::SELECTOR_XPATH)->isVisible() ? 'Yes' : 'No'; $formOptions[] = $optionData; } return $formOptions; }