/**
  * Move last ordered products on order page.
  *
  * @param OrderInjectable $order
  * @return array
  */
 public function test(OrderInjectable $order)
 {
     // Preconditions:
     $order->persist();
     $customer = $order->getDataFieldConfig('customer_id')['source']->getCustomer();
     // Steps:
     $this->customerIndex->open();
     $this->customerIndex->getCustomerGridBlock()->searchAndOpen(['email' => $customer->getEmail()]);
     $this->customerIndexEdit->getPageActionsBlock()->createOrder();
     $this->orderCreateIndex->getStoreBlock()->selectStoreView();
     $products = $order->getEntityId()['products'];
     $activitiesBlock = $this->orderCreateIndex->getCustomerActivitiesBlock();
     $activitiesBlock->getLastOrderedItemsBlock()->addProductsToOrder($products);
     $activitiesBlock->updateChanges();
     return ['products' => $products];
 }
 /**
  * Create order from customer page (cartActions).
  *
  * @param Customer $customer
  * @param string $product
  * @return array
  */
 public function test(Customer $customer, $product)
 {
     //Preconditions
     // Create product
     $product = $this->objectManager->create('\\Magento\\Catalog\\Test\\TestStep\\CreateProductStep', ['product' => $product])->run()['product'];
     // Login under customer
     $this->objectManager->create('Magento\\Customer\\Test\\TestStep\\LoginCustomerOnFrontendStep', ['customer' => $customer])->run();
     $this->browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
     $this->catalogProductView->getViewBlock()->addToCart($product);
     //Steps
     $this->customerIndex->open();
     $this->customerIndex->getCustomerGridBlock()->searchAndOpen(['email' => $customer->getEmail()]);
     $this->customerIndexEdit->getPageActionsBlock()->createOrder();
     $this->orderCreateIndex->getStoreBlock()->selectStoreView();
     $this->orderCreateIndex->getCustomerActivitiesBlock()->getShoppingCartItemsBlock()->addProductsToOrder([$product]);
     $this->orderCreateIndex->getCustomerActivitiesBlock()->updateChanges();
     return ['products' => [$product]];
 }
 /**
  * Move compare products on order page.
  *
  * @param Customer $customer
  * @param string $products
  * @return array
  */
 public function test(Customer $customer, $products)
 {
     // Preconditions
     // Create products
     $products = $this->objectManager->create('\\Magento\\Catalog\\Test\\TestStep\\CreateProductsStep', ['products' => $products])->run()['products'];
     // Add products to compare
     foreach ($products as $itemProduct) {
         $this->browser->open($_ENV['app_frontend_url'] . $itemProduct->getUrlKey() . '.html');
         $this->catalogProductView->getViewBlock()->clickAddToCompare();
     }
     // Steps
     $this->customerIndex->open();
     $this->customerIndex->getCustomerGridBlock()->searchAndOpen(['email' => $customer->getEmail()]);
     $this->customerIndexEdit->getPageActionsBlock()->createOrder();
     $this->orderCreateIndex->getStoreBlock()->selectStoreView();
     $activitiesBlock = $this->orderCreateIndex->getCustomerActivitiesBlock();
     $activitiesBlock->getProductsInComparisonBlock()->addProductsToOrder($products);
     $activitiesBlock->updateChanges();
     return ['products' => $products, 'productsIsConfigured' => false];
 }
 /**
  * Move recently compared products on order page.
  *
  * @param Customer $customer
  * @param string $products
  * @return array
  */
 public function test(Customer $customer, $products)
 {
     // Preconditions
     // Create product
     $products = $this->objectManager->create('\\Magento\\Catalog\\Test\\TestStep\\CreateProductsStep', ['products' => $products])->run()['products'];
     // Login under customer
     $this->objectManager->create('Magento\\Customer\\Test\\TestStep\\LoginCustomerOnFrontendStep', ['customer' => $customer])->run();
     foreach ($products as $itemProduct) {
         $this->browser->open($_ENV['app_frontend_url'] . $itemProduct->getUrlKey() . '.html');
         $this->catalogProductView->getViewBlock()->clickAddToCompare();
     }
     $this->cmsIndex->getLinksBlock()->openLink("Compare Products");
     $this->catalogProductCompare->getCompareProductsBlock()->removeAllProducts();
     // Steps:
     $this->customerIndex->open();
     $this->customerIndex->getCustomerGridBlock()->searchAndOpen(['email' => $customer->getEmail()]);
     $this->customerIndexEdit->getPageActionsBlock()->createOrder();
     $this->orderCreateIndex->getStoreBlock()->selectStoreView();
     $activitiesBlock = $this->orderCreateIndex->getCustomerActivitiesBlock();
     $activitiesBlock->getRecentlyComparedProductsBlock()->addProductsToOrder($products);
     $activitiesBlock->updateChanges();
     return ['products' => $products, 'productsIsConfigured' => false];
 }
 /**
  * Add Recently Viewed Products to cart.
  *
  * @return void
  */
 public function run()
 {
     $recentlyBlock = $this->orderCreateIndex->getCustomerActivitiesBlock();
     $recentlyBlock->getRecentlyViewedItemsBlock()->addProductsToOrder($this->products);
     $recentlyBlock->updateChanges();
 }
 /**
  * Add Recently Viewed Products to cart.
  *
  * @return void
  */
 public function run()
 {
     $recentlyBlock = $this->orderCreateIndex->getCustomerActivitiesBlock();
     $recentlyBlock->getRecentlyViewedItemsBlock()->addToOrderByName($this->extractProductNames());
     $recentlyBlock->updateChanges();
 }