/** * Assert that product is not displayed in up-sell section. * * @param BrowserInterface $browser * @param CatalogProductSimple $product * @param CatalogProductView $catalogProductView * @param InjectableFixture[]|null $promotedProducts * @return void */ public function processAssert(BrowserInterface $browser, CatalogProductSimple $product, CatalogProductView $catalogProductView, array $promotedProducts = null) { if (!$promotedProducts) { $promotedProducts = $product->hasData('up_sell_products') ? $product->getDataFieldConfig('up_sell_products')['source']->getProducts() : []; } $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); foreach ($promotedProducts as $promotedProduct) { \PHPUnit_Framework_Assert::assertFalse($catalogProductView->getUpsellBlock()->getProductItem($promotedProduct)->isVisible(), 'Product \'' . $promotedProduct->getName() . '\' is exist in up-sells products.'); } }
/** * Check whether the attribute is unique. * * @param CatalogProductIndex $catalogProductIndex * @param CatalogProductEdit $catalogProductEdit * @param CatalogProductAttribute $attribute * @param CatalogProductSimple $product, * @param FixtureFactory $fixtureFactory * @throws \Exception * @return void */ public function processAssert(CatalogProductIndex $catalogProductIndex, CatalogProductEdit $catalogProductEdit, CatalogProductAttribute $attribute, CatalogProductSimple $product, FixtureFactory $fixtureFactory) { $simpleProduct = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'product_with_category_with_anchor', 'data' => ['attribute_set_id' => ['attribute_set' => $product->getDataFieldConfig('attribute_set_id')['source']->getAttributeSet()], 'custom_attribute' => $attribute]]); $catalogProductIndex->open()->getGridPageActionBlock()->addProduct('simple'); $productForm = $catalogProductEdit->getProductForm(); $productForm->fill($simpleProduct); $catalogProductEdit->getFormPageActions()->save(); $failedAttributes = $productForm->getRequireNoticeAttributes($simpleProduct); $actualMessage = isset($failedAttributes['product-details'][$attribute->getFrontendLabel()]) ? $failedAttributes['product-details'][$attribute->getFrontendLabel()] : null; \PHPUnit_Framework_Assert::assertEquals(sprintf(self::UNIQUE_MESSAGE, $attribute->getFrontendLabel()), $actualMessage, 'JS error notice on product edit page is not equal to expected.'); }
/** * Assert that specified prices with fpt are actual on category, product and cart pages * * @param CatalogProductSimple $product * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductView $catalogProductView * @param CheckoutCart $checkoutCart * @param array $prices * @return void */ public function processAssert(CatalogProductSimple $product, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView, CheckoutCart $checkoutCart, array $prices) { $this->cmsIndex = $cmsIndex; $this->catalogCategoryView = $catalogCategoryView; $this->catalogProductView = $catalogProductView; $this->checkoutCart = $checkoutCart; $this->fptLabel = $product->getDataFieldConfig('attribute_set_id')['source']->getAttributeSet()->getDataFieldConfig('assigned_attributes')['source']->getAttributes()[0]->getFrontendLabel(); $this->clearShoppingCart(); $actualPrices = $this->getPrices($product); //Prices verification \PHPUnit_Framework_Assert::assertEquals($prices, $actualPrices, 'Prices on front should be equal to defined in dataset'); }
/** * Assert that product url in url rewrite grid. * * @param CatalogProductSimple $product * @param CatalogProductSimple $initialProduct * @param UrlRewriteIndex $urlRewriteIndex * @return void */ public function processAssert(CatalogProductSimple $product, CatalogProductSimple $initialProduct, UrlRewriteIndex $urlRewriteIndex) { $urlRewriteIndex->open(); $category = $product->getDataFieldConfig('category_ids')['source']->getCategories()[0]; $targetPath = "catalog/product/view/id/{$initialProduct->getId()}/category/{$category->getId()}"; $url = strtolower($product->getCategoryIds()[0] . '/' . $product->getUrlKey()); $filter = ['request_path' => $url, 'target_path' => $targetPath]; \PHPUnit_Framework_Assert::assertTrue($urlRewriteIndex->getUrlRedirectGrid()->isRowVisible($filter, true, false), "URL Rewrite with request path '{$url}' is absent in grid."); $categoryInitial = $initialProduct->getDataFieldConfig('category_ids')['source']->getCategories()[0]; $targetPath = "catalog/product/view/id/{$initialProduct->getId()}/category/{$categoryInitial->getId()}"; \PHPUnit_Framework_Assert::assertFalse($urlRewriteIndex->getUrlRedirectGrid()->isRowVisible(['target_path' => $targetPath], true, false), "URL Rewrite with target path '{$targetPath}' is present in grid."); }
/** * Run update product simple entity test * * @param CatalogProductSimple $initialProduct * @param CatalogProductSimple $product * @return array */ public function test(CatalogProductSimple $initialProduct, CatalogProductSimple $product) { // Preconditions $initialProduct->persist(); $initialCategory = $initialProduct->hasData('category_ids') ? $initialProduct->getDataFieldConfig('category_ids')['source']->getCategories()[0] : null; $category = $product->hasData('category_ids') && $product->getCategoryIds()[0] ? $product->getDataFieldConfig('category_ids')['source']->getCategories()[0] : $initialCategory; // Steps $filter = ['sku' => $initialProduct->getSku()]; $this->productGrid->open(); $this->productGrid->getProductGrid()->searchAndOpen($filter); $this->editProductPage->getProductForm()->fill($product); $this->editProductPage->getFormPageActions()->save(); return ['category' => $category]; }
/** * Assert that product is not displayed in cross-sell section. * * @param BrowserInterface $browser * @param CatalogProductSimple $product * @param CatalogProductView $catalogProductView * @param CheckoutCart $checkoutCart * @param InjectableFixture[]|null $promotedProducts * @return void */ public function processAssert(BrowserInterface $browser, CatalogProductSimple $product, CatalogProductView $catalogProductView, CheckoutCart $checkoutCart, array $promotedProducts = null) { if (!$promotedProducts) { $promotedProducts = $product->hasData('cross_sell_products') ? $product->getDataFieldConfig('cross_sell_products')['source']->getProducts() : []; } $checkoutCart->open(); $checkoutCart->getCartBlock()->clearShoppingCart(); $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->addToCart($product); $catalogProductView->getMessagesBlock()->waitSuccessMessage(); $checkoutCart->open(); foreach ($promotedProducts as $promotedProduct) { \PHPUnit_Framework_Assert::assertFalse($checkoutCart->getCrosssellBlock()->getProductItem($promotedProduct)->isVisible(), 'Product \'' . $promotedProduct->getName() . '\' is exist in cross-sell section.'); } }
/** * Create product URL Rewrite. * * @param CatalogProductSimple $product * @param UrlRewrite $urlRewrite * @return void */ public function test(CatalogProductSimple $product, UrlRewrite $urlRewrite) { //Precondition $product->persist(); $filter = ['id' => $product->getId()]; //Steps $this->urlRewriteIndex->open(); $this->urlRewriteIndex->getPageActionsBlock()->addNew(); $this->urlRewriteEdit->getFormBlock()->fill($urlRewrite); $this->urlRewriteEdit->getProductGridBlock()->searchAndOpen($filter); $category = $product->hasData('category_ids') ? $product->getDataFieldConfig('category_ids')['source']->getCategories()[0] : null; $this->urlRewriteEdit->getTreeBlock()->selectCategory($category); $this->urlRewriteEdit->getFormBlock()->fill($urlRewrite); $this->urlRewriteEdit->getPageMainActions()->save(); }
/** * Run update product simple entity test. * * @param CatalogProductSimple $initialProduct * @param CatalogProductSimple $product * @param string $configData * @return array */ public function test(CatalogProductSimple $initialProduct, CatalogProductSimple $product, $configData = '') { $this->configData = $configData; // Preconditions $initialProduct->persist(); $initialCategory = $initialProduct->hasData('category_ids') ? $initialProduct->getDataFieldConfig('category_ids')['source']->getCategories()[0] : null; $category = $product->hasData('category_ids') && $product->getCategoryIds()[0] ? $product->getDataFieldConfig('category_ids')['source']->getCategories()[0] : $initialCategory; $this->objectManager->create('Magento\\Config\\Test\\TestStep\\SetupConfigurationStep', ['configData' => $configData])->run(); // Steps $filter = ['sku' => $initialProduct->getSku()]; $this->productGrid->open(); $this->productGrid->getProductGrid()->searchAndOpen($filter); $this->editProductPage->getProductForm()->fill($product); $this->editProductPage->getFormPageActions()->save(); return ['category' => $category]; }
/** * Create simple product fixture. * * @param CatalogProductSimple $product * @param CatalogProductAttribute $attribute * @return CatalogProductSimple */ protected function createSimpleProductFixture(CatalogProductSimple $product, CatalogProductAttribute $attribute) { return $this->fixtureFactory->createByCode('catalogProductSimple', ['dataset' => 'product_with_category_with_anchor', 'data' => ['attribute_set_id' => ['attribute_set' => $product->getDataFieldConfig('attribute_set_id')['source']->getAttributeSet()], 'custom_attribute' => $attribute]]); }
/** * Prepare condition for catalog price rule. * * @param CatalogProductSimple $productSimple * @param string $conditionEntity * @return array */ protected function prepareCondition(CatalogProductSimple $productSimple, $conditionEntity) { $result = []; switch ($conditionEntity) { case 'category': $result['%category_id%'] = $productSimple->getDataFieldConfig('category_ids')['source']->getIds()[0]; break; case 'attribute': /** @var \Magento\Catalog\Test\Fixture\CatalogProductAttribute[] $attrs */ $attributes = $productSimple->getDataFieldConfig('attribute_set_id')['source']->getAttributeSet()->getDataFieldConfig('assigned_attributes')['source']->getAttributes(); $result['%attribute_name%'] = $attributes[0]->getFrontendLabel(); $result['%attribute_value%'] = $attributes[0]->getOptions()[0]['view']; break; } return ['conditions' => ['conditions' => $result]]; }
/** * Run mass update product simple entity test. * * @param CatalogProductSimple $initialProduct * @param CatalogProductSimple $product * @param string $configData * @return array */ public function test(CatalogProductSimple $initialProduct, CatalogProductSimple $product, $configData) { $this->configData = $configData; // Preconditions $initialProduct->persist(); $this->objectManager->create('Magento\\Config\\Test\\TestStep\\SetupConfigurationStep', ['configData' => $configData])->run(); // Steps $this->productGrid->open(); $this->productGrid->getProductGrid()->updateAttributes([['sku' => $initialProduct->getSku()]]); $this->attributeMassActionPage->getAttributesBlockForm()->fill($product); $this->attributeMassActionPage->getFormPageActions()->save(); $data = array_merge($initialProduct->getData(), $product->getData()); $product = $this->objectManager->create('Magento\\Catalog\\Test\\Fixture\\CatalogProductSimple', ['data' => $data]); return ['category' => $initialProduct->getDataFieldConfig('category_ids')['source']->getCategories()[0], 'product' => $product]; }