/**
  * Test update grouped product.
  *
  * @param GroupedProduct $product
  * @param GroupedProduct $originalProduct
  * @return void
  */
 public function test(GroupedProduct $product, GroupedProduct $originalProduct)
 {
     // Precondition
     $originalProduct->persist();
     // Steps
     $this->catalogProductIndex->open();
     $this->catalogProductIndex->getProductGrid()->searchAndOpen(['sku' => $originalProduct->getSku()]);
     $this->catalogProductEdit->getProductForm()->fill($product);
     $this->catalogProductEdit->getFormPageActions()->save();
 }
 /**
  * Verify product price on grouped product view page
  *
  * @param GroupedProduct $product
  * @param CatalogProductView $catalogProductView
  * @param AssertPriceOnProductPageInterface $object
  * @param BrowserInterface $browser
  * @param string $typePrice [optional]
  * @return bool|string
  */
 protected function processAssertPrice(GroupedProduct $product, CatalogProductView $catalogProductView, AssertPriceOnProductPageInterface $object, BrowserInterface $browser, $typePrice = '')
 {
     $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
     $groupedData = $product->getAssociated();
     /** @var CatalogProductSimple $subProduct */
     foreach ($groupedData['products'] as $key => $subProduct) {
         //Process assertions
         $catalogProductView->getGroupedProductViewBlock()->{'item' . $typePrice . 'PriceProductBlock'}(++$key);
         $object->setErrorMessage(sprintf($this->errorMessage, $subProduct->getData('name')));
         $object->assertPrice($subProduct, $catalogProductView->getGroupedProductViewBlock(), 'Grouped');
     }
 }
 /**
  * Assert that default qty for sub products in grouped product displays according to dataset on product page
  *
  * @param CatalogProductView $groupedProductView
  * @param GroupedProduct $product
  * @param BrowserInterface $browser
  * @return void
  */
 public function processAssert(CatalogProductView $groupedProductView, GroupedProduct $product, BrowserInterface $browser)
 {
     $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
     $associatedProducts = $product->getAssociated();
     $fixtureQtyData = [];
     $pageOptions = $groupedProductView->getViewBlock()->getOptions($product);
     $pageQtyData = [];
     foreach ($associatedProducts['assigned_products'] as $productData) {
         $fixtureQtyData[] = ['name' => $productData['name'], 'qty' => $productData['qty']];
     }
     foreach ($pageOptions['grouped_options'] as $productData) {
         $pageQtyData[] = ['name' => $productData['name'], 'qty' => $productData['qty']];
     }
     $fixtureQtyData = $this->sortDataByPath($fixtureQtyData, '::name');
     $pageQtyData = $this->sortDataByPath($pageQtyData, '::name');
     $error = $this->verifyData($fixtureQtyData, $pageQtyData);
     \PHPUnit_Framework_Assert::assertEmpty($error, $error);
 }
Exemple #4
0
 /**
  * Assert Grouped product on Frontend
  *
  * @param GroupedProduct $product
  * @return void
  */
 protected function assertOnFrontend(GroupedProduct $product)
 {
     //Pages
     $frontendHomePage = Factory::getPageFactory()->getCmsIndexIndex();
     $categoryPage = Factory::getPageFactory()->getCatalogCategoryView();
     $productPage = Factory::getPageFactory()->getCatalogProductView();
     //Steps
     $frontendHomePage->open();
     $frontendHomePage->getTopmenu()->selectCategoryByName($product->getCategoryName());
     //Verification on category product list
     $productListBlock = $categoryPage->getListProductBlock();
     $this->assertTrue($productListBlock->isProductVisible($product->getName()), 'Product is absent on category page.');
     //Verification on product detail page
     $productViewBlock = $productPage->getViewBlock();
     $productListBlock->openProductViewPage($product->getName());
     $this->assertEquals($product->getName(), $productViewBlock->getProductName(), 'Product name does not correspond to specified.');
     $optionsOnPage = $productViewBlock->getOptions($product);
     $pageAssociatedProductNames = [];
     foreach ($optionsOnPage['grouped_options'] as $optionOnPage) {
         $pageAssociatedProductNames[] = $optionOnPage['name'];
     }
     $this->assertEquals($product->getAssociatedProductNames(), $pageAssociatedProductNames);
 }