/**
  * Assert that price stored in fixture equals to product price on product page.
  *
  * @param CatalogProductSimple $productSimple
  * @param Browser $browser
  * @param CatalogProductView $catalogProductView
  * @return void
  */
 public function processAssert(CatalogProductSimple $productSimple, Browser $browser, CatalogProductView $catalogProductView)
 {
     $productSimple->persist();
     $browser->open($_ENV['app_frontend_url'] . $productSimple->getUrlKey() . '.html');
     $productPriceFromFixture = $productSimple->getPrice();
     $productPrice = number_format($catalogProductView->getViewBlock()->getPriceBlock()->getPrice(), 2);
     \PHPUnit_Framework_Assert::assertEquals($productPrice, $productPriceFromFixture);
 }
 /**
  * Prepare product, Catalog event and pages.
  *
  * @param CatalogEventNew $catalogEventNew
  * @param CatalogEventIndex $catalogEventIndex
  * @param FixtureFactory $fixtureFactory
  * @param CatalogProductSimple $product
  *
  * @return array
  */
 public function __inject(CatalogEventNew $catalogEventNew, CatalogEventIndex $catalogEventIndex, FixtureFactory $fixtureFactory, CatalogProductSimple $product)
 {
     $this->catalogEventNew = $catalogEventNew;
     $this->catalogEventIndex = $catalogEventIndex;
     $product->persist();
     /** @var CategoryIds $sourceCategories */
     $sourceCategory = $product->getDataFieldConfig('category_ids')['source']->getCategories()[0];
     $catalogEvent = $fixtureFactory->createByCode('catalogEvent', ['dataSet' => 'default_event', 'data' => ['category_id' => $sourceCategory->getId()]]);
     $catalogEvent->persist();
     return ['product' => $product, 'catalogEvent' => $catalogEvent];
 }
 /**
  * Run update product simple entity test.
  *
  * @param CatalogProductSimple $initialProduct
  * @param CatalogProductSimple $product
  * @return array
  */
 public function test(CatalogProductSimple $initialProduct, CatalogProductSimple $product)
 {
     // Preconditions
     $initialProduct->persist();
     // Steps
     $this->productGrid->open();
     $this->productGrid->getProductGrid()->searchAndOpen(['sku' => $initialProduct->getSku()]);
     $this->editProductPage->getProductForm()->fill($product);
     $this->editProductPage->getFormPageActions()->save();
     return ['category' => $this->getCategory($initialProduct, $product)];
 }
 /**
  * Assert that Gift Wrapping can be found during one page checkout on frontend.
  *
  * @param CatalogProductView $catalogProductView
  * @param CheckoutCart $checkoutCart
  * @param BrowserInterface $browser
  * @param CheckoutOnepage $checkoutOnepage
  * @param GiftWrapping $giftWrapping
  * @param Address $billingAddress
  * @param CatalogProductSimple $product
  * @param Customer $customer
  * @param CustomerAccountLogout $customerAccountLogout
  * @return void
  */
 public function processAssert(CatalogProductView $catalogProductView, CheckoutCart $checkoutCart, BrowserInterface $browser, CheckoutOnepage $checkoutOnepage, GiftWrapping $giftWrapping, Address $billingAddress, CatalogProductSimple $product, Customer $customer, CustomerAccountLogout $customerAccountLogout)
 {
     // Preconditions
     $customer->persist();
     $product->persist();
     // Steps
     $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
     $catalogProductView->getViewBlock()->addToCart($product);
     $checkoutCart->open()->getCartBlock()->getProceedToCheckoutBlock()->proceedToCheckout();
     $checkoutOnepage->getLoginBlock()->loginCustomer($customer);
     $checkoutOnepage->getBillingBlock()->fillBilling($billingAddress);
     $checkoutOnepage->getBillingBlock()->clickContinue();
     \PHPUnit_Framework_Assert::assertContains($giftWrapping->getDesign(), $checkoutOnepage->getGiftOptionsBlock()->getGiftWrappingsAvailable(), "Gift Wrapping '{$giftWrapping->getDesign()}' is not present in one page checkout on frontend.");
     $customerAccountLogout->open();
 }
 /**
  * Update Shopping Cart.
  *
  * @param CatalogProductSimple $product
  * @param int $qty
  * @return array
  */
 public function test(CatalogProductSimple $product, $qty)
 {
     // Preconditions
     $product->persist();
     $this->checkoutCart->getCartBlock()->clearShoppingCart();
     // Steps
     $this->addProductToCart($product, $qty);
     $this->updateShoppingCart($product);
     $cart['data']['items'] = ['products' => [$product]];
     return ['cart' => $this->fixtureFactory->createByCode('cart', $cart)];
 }
 /**
  * Default preconditions for target rules tests.
  *
  * @param CatalogProductSimple $product
  * @param CatalogProductSimple $promotedProduct
  * @param CustomerSegment $customerSegment
  * @return void
  */
 protected function defaultPreconditions(CatalogProductSimple $product, CatalogProductSimple $promotedProduct, CustomerSegment $customerSegment = null)
 {
     $product->persist();
     $promotedProduct->persist();
     if ($customerSegment) {
         $customerSegment->persist();
     }
 }
 /**
  * Login to frontend. Create product. Adding product to shopping cart.
  *
  * @param CheckoutCart $checkoutCart
  * @param CatalogProductSimple $product
  * @param CmsIndex $cmsIndex
  * @param CustomerAccountLogout $customerAccountLogout
  * @param CatalogProductView $catalogProductView
  * @param Customer $customer
  * @param CustomerSegment $customerSegment
  * @param CustomerSegmentIndex $customerSegmentIndex
  * @param BrowserInterface $browser
  * @param CustomerSegmentNew $customerSegmentNew
  * @return void
  */
 public function processAssert(CheckoutCart $checkoutCart, CatalogProductSimple $product, CmsIndex $cmsIndex, CustomerAccountLogout $customerAccountLogout, CatalogProductView $catalogProductView, Customer $customer, CustomerSegment $customerSegment, CustomerSegmentIndex $customerSegmentIndex, BrowserInterface $browser, CustomerSegmentNew $customerSegmentNew)
 {
     $this->checkoutCart = $checkoutCart;
     $this->cmsIndex = $cmsIndex;
     $this->customerAccountLogout = $customerAccountLogout;
     $this->catalogProductView = $catalogProductView;
     $this->customer = $customer;
     $this->customerSegment = $customerSegment;
     $this->customerSegmentIndex = $customerSegmentIndex;
     $this->customerSegmentNew = $customerSegmentNew;
     $this->cmsIndex->open();
     $this->objectManager->create('Mage\\Customer\\Test\\TestStep\\LoginCustomerOnFrontendStep', ['customer' => $this->customer])->run();
     $product->persist();
     $this->checkoutCart->open()->getCartBlock()->clearShoppingCart();
     $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
     $this->catalogProductView->getViewBlock()->clickAddToCart();
     $this->checkoutCart->getMessagesBlock()->getSuccessMessages();
     $this->assert();
     $this->customerAccountLogout->open();
 }
 /**
  * Test product prices with tax.
  *
  * @param CatalogProductSimple $product
  * @param string $config
  * @param string $salesRule
  * @param string $catalogRule
  * @return void
  */
 public function test(CatalogProductSimple $product, $config, $salesRule, $catalogRule)
 {
     // Steps:
     if ($salesRule !== "-") {
         $salesRule = $this->fixtureFactory->createByCode('salesRule', ['dataSet' => $salesRule]);
         $salesRule->persist();
         $this->salesRule = $salesRule;
     }
     if ($catalogRule !== "-") {
         $catalogRule = $this->fixtureFactory->createByCode('catalogRule', ['dataSet' => $catalogRule]);
         $catalogRule->persist();
         $this->catalogRule = $catalogRule;
     }
     $this->objectManager->create('Mage\\Core\\Test\\TestStep\\SetupConfigurationStep', ['configData' => $config])->run();
     $product->persist();
 }
 /**
  * Generate sitemap test.
  *
  * @param Sitemap $sitemap
  * @param CatalogProductSimple $product
  * @param CatalogCategory $category
  * @param CmsPage $cmsPage
  * @return void
  */
 public function test(Sitemap $sitemap, CatalogProductSimple $product, CatalogCategory $category, CmsPage $cmsPage)
 {
     // Preconditions
     $product->persist();
     $category->persist();
     $cmsPage->persist();
     // Steps
     $this->sitemapIndex->open();
     $this->sitemapIndex->getGridPageActions()->addNew();
     $this->sitemapNew->getSitemapForm()->fill($sitemap);
     $this->sitemapNew->getFormPageActions()->saveAndGenerate();
 }
 /**
  * Create customer and product.
  *
  * @param CatalogProductSimple $product
  * @param Customer $customer
  * @return array
  */
 public function __prepare(CatalogProductSimple $product, Customer $customer)
 {
     $product->persist();
     $customer->persist();
     return ['customer' => $customer, 'product' => $product];
 }
 /**
  * Create product URL Rewrite.
  *
  * @param CatalogProductSimple $product
  * @param UrlRewrite $urlRewrite
  * @return array
  */
 public function test(CatalogProductSimple $product, UrlRewrite $urlRewrite)
 {
     //Prepare data for tearDown
     $this->urlRewrite = $urlRewrite;
     //Precondition
     $product->persist();
     //Steps
     $filter = ['id' => $product->getId(), 'name' => $product->getName(), 'sku' => $product->getSku()];
     $this->urlRewriteIndex->open();
     $this->urlRewriteIndex->getGridPageActionBlock()->addNew();
     $this->urlRewriteSelect->getSelectTypeForm()->fill($urlRewrite);
     $this->urlRewriteSelectTypeProduct->getProductGridBlock()->searchAndOpen($filter);
     $this->urlRewriteSelectTypeProductCategory->getCategoryTreeBlock()->selectCategory($product->getCategoryIds());
     $this->urlRewriteEdit->getEditForm()->fill($urlRewrite);
     $this->urlRewriteEdit->getFormPageActions()->save();
     return ['product' => $product];
 }