Example #1
0
 /**
  * Find cart item blocks for associated products.
  *
  * @param FixtureInterface $product
  * @return array
  */
 protected function findCartItems(FixtureInterface $product)
 {
     $cartItems = [];
     /** @var GroupedProduct $product */
     $associatedProducts = $product->getAssociated()['products'];
     foreach ($associatedProducts as $product) {
         $cartItems[$product->getSku()] = parent::getCartItem($product);
     }
     return $cartItems;
 }
 /**
  * Prepare options
  *
  * @param FixtureInterface $product
  * @return array
  */
 protected function prepareOptions(FixtureInterface $product)
 {
     /** @var GroupedProduct $product */
     $productOptions = [];
     $checkoutData = $product->getCheckoutData()['options'];
     if (count($checkoutData)) {
         $associated = $product->getAssociated();
         foreach ($checkoutData as $optionData) {
             $productKey = str_replace('product_key_', '', $optionData['name']);
             $productOptions[] = ['option_name' => $associated['assigned_products'][$productKey]['name'], 'value' => $optionData['qty']];
         }
     }
     return $productOptions;
 }
Example #3
0
 /**
  * @constructor
  * @param FixtureInterface $product
  */
 public function __construct(FixtureInterface $product)
 {
     /** @var GroupedProduct $product */
     $checkoutData = $product->getCheckoutData();
     $this->data = isset($checkoutData['cartItem']) ? $checkoutData['cartItem'] : [];
     $associatedProducts = [];
     $cartItem = [];
     foreach ($product->getAssociated()['products'] as $key => $product) {
         $key = 'product_key_' . $key;
         $associatedProducts[$key] = $product;
     }
     // Replace key in checkout data
     foreach ($this->data as $fieldName => $fieldValues) {
         foreach ($fieldValues as $key => $value) {
             $product = $associatedProducts[$key];
             $cartItem[$fieldName][$product->getSku()] = $value;
         }
     }
     // Add empty "options" field
     foreach ($associatedProducts as $product) {
         $cartItem['options'][] = ['title' => $product->getName(), 'value' => $cartItem['qty'][$product->getSku()]];
     }
     $this->data = $cartItem;
 }
Example #4
0
 /**
  * Return product options on view page.
  *
  * @param FixtureInterface $product
  * @return array
  */
 public function getOptions(FixtureInterface $product)
 {
     /** @var GroupedProduct $product */
     $associatedProducts = $product->getAssociated()['products'];
     $options = [];
     foreach ($associatedProducts as $subProduct) {
         /** @var CatalogProductSimple $subProduct */
         $subProductBlock = $this->_rootElement->find(sprintf($this->subProductByName, $subProduct->getName()), Locator::SELECTOR_XPATH);
         $options[] = ['name' => $subProductBlock->find($this->productName)->getText(), 'price' => $subProductBlock->find($this->price)->getText(), 'qty' => $subProductBlock->find($this->qty)->getValue()];
     }
     return $options;
 }