/** * Assert that product is not visible in the assigned category * * @param CatalogCategoryView $catalogCategoryView * @param CmsIndex $cmsIndex * @param FixtureInterface $product * @param Category|null $category * @return void */ public function processAssert(CatalogCategoryView $catalogCategoryView, CmsIndex $cmsIndex, FixtureInterface $product, Category $category = null) { $categoryName = $category ? $category->getName() : $product->getCategoryIds()[0]; $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product->getName()); while (!$isProductVisible && $catalogCategoryView->getBottomToolbar()->nextPage()) { $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product->getName()); } \PHPUnit_Framework_Assert::assertFalse($isProductVisible, 'Product is exist on category page.'); }
/** * Assert that "Add to cart" button is not display on page. * * @param InjectableFixture $product * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductView $catalogProductView * @param Category $category [optional] * * @return void */ public function processAssert(InjectableFixture $product, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView, Category $category = null) { $cmsIndex->open(); $categoryName = $category === null ? $product->getCategoryIds()[0] : $category->getName(); $cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $isProductVisible = $catalogCategoryView->getListProductBlock()->getProductItem($product)->isVisible(); while (!$isProductVisible && $catalogCategoryView->getBottomToolbar()->nextPage()) { $isProductVisible = $catalogCategoryView->getListProductBlock()->getProductItem($product)->isVisible(); } \PHPUnit_Framework_Assert::assertTrue($isProductVisible, 'Product is absent on category page.'); \PHPUnit_Framework_Assert::assertFalse($catalogCategoryView->getListProductBlock()->getProductItem($product)->isVisibleAddToCardButton(), "Button 'Add to Card' is present on Category page."); $catalogCategoryView->getListProductBlock()->getProductItem($product)->open(); \PHPUnit_Framework_Assert::assertFalse($catalogProductView->getViewBlock()->isVisibleAddToCardButton(), "Button 'Add to Card' is present on Product page."); }
/** * Verify product displaying on frontend * * @param FixtureInterface $product * @return array */ protected function isNotDisplayingOnFrontendAssert(FixtureInterface $product) { $errors = []; // Check the product page is not available // TODO fix initialization url for frontend page $this->browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $titleBlock = $this->catalogProductView->getTitleBlock(); if ($titleBlock->getTitle() !== self::NOT_FOUND_MESSAGE) { $errors[] = '- the headline on the page does not match, the text should be -> "' . self::NOT_FOUND_MESSAGE . '".'; } $this->cmsIndex->open(); $this->cmsIndex->getSearchBlock()->search($product->getSku()); if ($this->catalogSearchResult->getListProductBlock()->isProductVisible($product->getName())) { $errors[] = '- successful product search.'; } $categoryName = $product->hasData('category_ids') ? $product->getCategoryIds()[0] : $this->category->getName(); $this->cmsIndex->open(); $this->cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $isProductVisible = $this->catalogCategoryView->getListProductBlock()->isProductVisible($product->getName()); while (!$isProductVisible && $this->catalogCategoryView->getBottomToolbar()->nextPage()) { $isProductVisible = $this->catalogCategoryView->getListProductBlock()->isProductVisible($product->getName()); } if ($isProductVisible) { $errors[] = "- product with name '{$product->getName()}' is found in this category."; } return $errors; }
/** * "Add to cart" button is display on Product page * * @return void */ protected function addToCardPresentOnProduct() { $this->cmsIndex->open(); $this->cmsIndex->getTopmenu()->selectCategoryByName($this->product->getCategoryIds()[0]); $this->catalogCategoryView->getListProductBlock()->openProductViewPage($this->product->getName()); \PHPUnit_Framework_Assert::assertTrue($this->catalogProductView->getViewBlock()->checkAddToCardButton(), "Button 'Add to Card' is absent on Product page."); }
/** * Assert that video is displayed on category page on Store front. * * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param InjectableFixture $initialProduct * @return void */ public function processAssert(CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, InjectableFixture $initialProduct) { $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategoryByName($initialProduct->getCategoryIds()[0]); $src = $catalogCategoryView->getListProductBlock()->getProductItem($initialProduct)->getBaseImageSource(); \PHPUnit_Framework_Assert::assertFalse(strpos($src, '/placeholder/') !== false, 'Video preview image is not displayed on category view when it should.'); }
/** * Assert that created entity was found on search page * * @param UrlRewrite $initialRewrite * @param UrlRewrite $urlRewrite * @param Browser $browser * @param CatalogCategoryView $categoryView * @return void */ public function processAssert(UrlRewrite $initialRewrite, UrlRewrite $urlRewrite, Browser $browser, CatalogCategoryView $categoryView) { $urlRequestPath = $urlRewrite->hasData('request_path') ? $urlRewrite->getRequestPath() : $initialRewrite->getRequestPath(); $browser->open($_ENV['app_frontend_url'] . $urlRequestPath); $entity = $initialRewrite->getDataFieldConfig('id_path')['source']->getEntity()->getName(); \PHPUnit_Framework_Assert::assertTrue($categoryView->getListProductBlock()->isProductVisible($entity), "Created entity '{$entity}' isn't found."); }
/** * Assert that product is visible in the assigned category * * @param CatalogCategoryView $catalogCategoryView * @param CmsIndex $cmsIndex * @param FixtureInterface $product * @param Category|null $category * @return void * * @SuppressWarnings(PHPMD.NPathComplexity) */ public function processAssert(CatalogCategoryView $catalogCategoryView, CmsIndex $cmsIndex, FixtureInterface $product, Category $category = null) { $categoryName = $product->hasData('category_ids') ? $product->getCategoryIds()[0] : $category->getName(); $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $isProductVisible = $catalogCategoryView->getListProductBlock()->getProductItem($product)->isVisible(); while (!$isProductVisible && $catalogCategoryView->getBottomToolbar()->nextPage()) { $isProductVisible = $catalogCategoryView->getListProductBlock()->getProductItem($product)->isVisible(); } if ($product->getVisibility() === 'Search' || $this->getStockStatus($product) === 'Out of Stock') { $isProductVisible = !$isProductVisible; $this->errorMessage = 'Product found in this category.'; $this->successfulMessage = 'Asserts that the product could not be found in this category.'; } \PHPUnit_Framework_Assert::assertTrue($isProductVisible, $this->errorMessage); }
/** * Assert that product is visible in the assigned category * * @param CatalogCategoryView $catalogCategoryView * @param CmsIndex $cmsIndex * @param FixtureInterface $product * @param CatalogCategory $category * @return void */ public function processAssert(CatalogCategoryView $catalogCategoryView, CmsIndex $cmsIndex, FixtureInterface $product, CatalogCategory $category) { $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategoryByName($category->getName()); $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product->getName()); while (!$isProductVisible && $catalogCategoryView->getToolbar()->nextPage()) { $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product->getName()); } $isInStock = $product->getQuantityAndStockStatus(); if ($product->getVisibility() === 'Search' || isset($isInStock['is_in_stock']) && $isInStock['is_in_stock'] === 'Out of Stock') { $isProductVisible = !$isProductVisible; $this->errorMessage = 'Product found in this category.'; $this->successfulMessage = 'Asserts that the product could not be found in this category.'; } \PHPUnit_Framework_Assert::assertTrue($isProductVisible, $this->errorMessage); }
/** * Assert that product is displayed in related products section * * @param CatalogProductSimple $product1 * @param CatalogProductSimple $product2 * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductView $catalogProductView * @return void */ public function processAssert(CatalogProductSimple $product1, CatalogProductSimple $product2, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView) { $categoryName = $product1->getCategoryIds()[0]; $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $catalogCategoryView->getListProductBlock()->openProductViewPage($product1->getName()); \PHPUnit_Framework_Assert::assertTrue($catalogProductView->getRelatedProductBlock()->isRelatedProductVisible($product2->getName()), 'Product \'' . $product2->getName() . '\' is absent in related products.'); }
/** * Verify product price on category view page. * * @param FixtureInterface $product * @param CatalogCategoryView $catalogCategoryView * @return void */ protected function assertPrice(FixtureInterface $product, CatalogCategoryView $catalogCategoryView) { $priceBlock = $catalogCategoryView->getListProductBlock()->getProductItem($product)->getPriceBlock(); \PHPUnit_Framework_Assert::assertEquals(number_format($product->getPrice(), 2, '.', ''), $priceBlock->isOldPriceVisible() ? $priceBlock->getOldPrice() : $priceBlock->getPrice(), 'Product regular price on category page is not correct.'); if ($product->hasData('special_price')) { \PHPUnit_Framework_Assert::assertEquals(number_format($product->getSpecialPrice(), 2, '.', ''), $priceBlock->getSpecialPrice(), 'Product special price on category page is not correct.'); } }
/** * Assert that displayed assigned products on category page equals passed from fixture * * @param CatalogCategory $category * @param CatalogCategoryView $categoryView * @param Browser $browser * @return void */ public function processAssert(CatalogCategory $category, CatalogCategoryView $categoryView, Browser $browser) { $browser->open($_ENV['app_frontend_url'] . strtolower($category->getUrlKey()) . '.html'); $products = $category->getDataFieldConfig('category_products')['source']->getProducts(); foreach ($products as $productFixture) { \PHPUnit_Framework_Assert::assertTrue($categoryView->getListProductBlock()->isProductVisible($productFixture->getName()), "Products '{$productFixture->getName()}' not find."); } }
/** * Assert that product is not displayed in up-sell section * * @param CatalogProductSimple $product1 * @param CatalogProductSimple $product2 * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductView $catalogProductView * @return void */ public function processAssert(CatalogProductSimple $product1, CatalogProductSimple $product2, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView) { $categoryName = $product1->getCategoryIds()[0]['name']; $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $catalogCategoryView->getListProductBlock()->openProductViewPage($product1->getName()); \PHPUnit_Framework_Assert::assertFalse($catalogProductView->getUpsellBlock()->isUpsellProductVisible($product2->getName()), 'Product \'' . $product2->getName() . '\' is exist in up-sells products.'); }
/** * Assert that displayed assigned products on category page equals passed from fixture * * @param Category $category * @param CatalogCategoryView $categoryView * @param BrowserInterface $browser * @return void */ public function processAssert(Category $category, CatalogCategoryView $categoryView, BrowserInterface $browser) { $categoryUrlKey = $category->hasData('url_key') ? strtolower($category->getUrlKey()) : trim(strtolower(preg_replace('#[^0-9a-z%]+#i', '-', $category->getName())), '-'); $products = $category->getDataFieldConfig('category_products')['source']->getProducts(); $browser->open($_ENV['app_frontend_url'] . $categoryUrlKey . '.html'); foreach ($products as $productFixture) { \PHPUnit_Framework_Assert::assertTrue($categoryView->getListProductBlock()->getProductItem($productFixture)->isVisible(), "Products '{$productFixture->getName()}' not find."); } }
/** * Verify product price on category view page * * @param CatalogProductConfigurable $configurable * @param CatalogCategoryView $catalogCategoryView * @return void */ protected function assertPrice(CatalogProductConfigurable $configurable, CatalogCategoryView $catalogCategoryView) { /** @var \Magento\ConfigurableProduct\Test\Fixture\CatalogProductConfigurable\Price $priceFixture */ $priceFixture = $configurable->getDataFieldConfig('price')['source']; $pricePresetData = $priceFixture->getPreset(); //Regular price verification if (isset($pricePresetData['category_special_price'])) { $regularPrice = $catalogCategoryView->getListProductBlock()->getProductPriceBlock($configurable->getName())->getRegularPrice(); \PHPUnit_Framework_Assert::assertEquals($pricePresetData['category_price'], $regularPrice, 'Product regular price on category page is not correct.'); //Special price verification $specialPrice = $catalogCategoryView->getListProductBlock()->getProductPriceBlock($configurable->getName())->getSpecialPrice(); \PHPUnit_Framework_Assert::assertEquals($pricePresetData['category_special_price'], $specialPrice, 'Product special price on category page is not correct.'); } else { //Price verification $price = $catalogCategoryView->getListProductBlock()->getProductPriceBlock($configurable->getName())->getPrice(); \PHPUnit_Framework_Assert::assertEquals($price['price_regular_price'], $pricePresetData['category_price'], 'Product price on category page is not correct.'); } }
/** * Assert that product is displayed in cross-sell section * * @param CatalogProductSimple $product1 * @param CatalogProductSimple $product2 * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductView $catalogProductView * @param CheckoutCart $checkoutCart * @return void */ public function processAssert(CatalogProductSimple $product1, CatalogProductSimple $product2, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView, CheckoutCart $checkoutCart) { $categoryName = $product1->getCategoryIds()[0]; $checkoutCart->open(); $checkoutCart->getCartBlock()->clearShoppingCart(); $cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $catalogCategoryView->getListProductBlock()->openProductViewPage($product1->getName()); $catalogProductView->getViewBlock()->addToCart($product1); \PHPUnit_Framework_Assert::assertTrue($checkoutCart->getCrosssellBlock()->verifyProductCrosssell($product2), 'Product \'' . $product2->getName() . '\' is absent in cross-sell section.'); }
/** * Assert that Catalog Price Rule is not applied for product(s) in Catalog. * * @param CmsIndex $cmsIndexPage * @param CatalogCategoryView $catalogCategoryViewPage * @param array $products * @return void */ public function processAssert(CmsIndex $cmsIndexPage, CatalogCategoryView $catalogCategoryViewPage, array $products) { $cmsIndexPage->open(); foreach ($products as $product) { $categoryName = $product->getCategoryIds()[0]; $cmsIndexPage->getTopmenu()->selectCategoryByName($categoryName); $priceBlock = $catalogCategoryViewPage->getListProductBlock()->getProductItem($product)->getPriceBlock(); \PHPUnit_Framework_Assert::assertFalse($priceBlock->isSpecialPriceVisible(), "Catalog price rule is applied!\n"); } }
/** * Verify product price on category view page * * @param CatalogProductBundle $bundle * @param CatalogCategoryView $catalogCategoryView * @return void */ protected function assertPrice(CatalogProductBundle $bundle, CatalogCategoryView $catalogCategoryView) { $priceData = $bundle->getDataFieldConfig('price')['source']->getPreset(); //Price from/to verification $priceBlock = $catalogCategoryView->getListProductBlock()->getProductPriceBlock($bundle->getName()); $priceLow = $bundle->getPriceView() == 'Price Range' ? $priceBlock->getPriceFrom() : $priceBlock->getRegularPrice(); \PHPUnit_Framework_Assert::assertEquals($priceData['price_from'], $priceLow, 'Bundle price From on category page is not correct.'); if ($bundle->getPriceView() == 'Price Range') { \PHPUnit_Framework_Assert::assertEquals($priceData['price_to'], $priceBlock->getPriceTo(), 'Bundle price To on category page is not correct.'); } }
/** * Assert that after applying changes, currency symbol changed on Catalog page * * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductSimple $product * @param CurrencySymbolEntity $currencySymbol * @return void */ public function processAssert(CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductSimple $product, CurrencySymbolEntity $currencySymbol) { $categoryName = $product->getCategoryIds()[0]; $cmsIndex->open(); $cmsIndex->getCurrencyBlock()->switchCurrency($currencySymbol); $cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $price = $catalogCategoryView->getListProductBlock()->getProductItem($product)->getPriceBlock()->getPrice(''); preg_match('`(.*?)\\d`', $price, $matches); $symbolOnPage = isset($matches[1]) ? $matches[1] : null; \PHPUnit_Framework_Assert::assertEquals($currencySymbol->getCustomCurrencySymbol(), $symbolOnPage, 'Wrong Currency Symbol is displayed on Category page.'); }
/** * Add products to cart. * * @param array $productQuantity * @return void */ protected function addProductsToCart(array $productQuantity) { foreach ($productQuantity as $product => $quantity) { if ($quantity > 0) { $categoryName = $this->{$product}->getCategoryIds()[0]; $this->cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $this->catalogCategoryView->getListProductBlock()->getProductItem($this->{$product})->open(); $this->catalogProductView->getViewBlock()->setQtyAndClickAddToCart($quantity); $this->catalogProductView->getMessagesBlock()->waitSuccessMessage(); } } }
/** * Assert that the category is no longer available on the top menu bar * * @param CmsIndex $cmsIndex * @param CatalogCategory $category * @param Browser $browser * @param CatalogCategoryView $categoryView * @return void */ public function processAssert(CmsIndex $cmsIndex, CatalogCategory $category, Browser $browser, CatalogCategoryView $categoryView) { $cmsIndex->open(); \PHPUnit_Framework_Assert::assertFalse($cmsIndex->getTopmenu()->isCategoryVisible($category->getName()), 'Category can be accessed from the navigation bar in the frontend.'); $browser->open($_ENV['app_frontend_url'] . $category->getUrlKey() . '.html'); \PHPUnit_Framework_Assert::assertEquals($category->getName(), $categoryView->getTitleBlock()->getTitle(), 'Wrong page is displayed.'); if (isset($category->getDataFieldConfig('category_products')['source'])) { $products = $category->getDataFieldConfig('category_products')['source']->getProducts(); foreach ($products as $productFixture) { \PHPUnit_Framework_Assert::assertTrue($categoryView->getListProductBlock()->isProductVisible($productFixture->getName()), "Products '{$productFixture->getName()}' not find."); } } }
/** * Assert currency rate applied on catalog page. * * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductSimple $product * @param CurrencySymbolEntity $currencySymbol * @param string $basePrice * @param string $convertedPrice * @return void */ public function processAssert(CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductSimple $product, CurrencySymbolEntity $currencySymbol, $basePrice, $convertedPrice) { $categoryName = $product->getCategoryIds()[0]; $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $priceBlock = $catalogCategoryView->getListProductBlock()->getProductItem($product)->getPriceBlock(); $actualPrice = $priceBlock->getPrice(''); \PHPUnit_Framework_Assert::assertEquals($basePrice, $actualPrice, 'Wrong price is displayed on Category page.'); $cmsIndex->getCurrencyBlock()->switchCurrency($currencySymbol); $cmsIndex->getTopmenu()->selectCategoryByName($categoryName); $actualPrice = $priceBlock->getPrice(''); \PHPUnit_Framework_Assert::assertEquals($convertedPrice, $actualPrice, 'Wrong price is displayed on Category page.'); }
/** * Assert product MAP related data on product view page. * * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductView $catalogProductView * @param InjectableFixture $product * @return void */ public function processAssert(CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView, InjectableFixture $product) { /** @var CatalogProductSimple $product */ $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategoryByName($product->getCategoryIds()[0]); $catalogCategoryView->getListProductBlock()->getProductItem($product)->open(); $viewBlock = $catalogProductView->getMsrpViewBlock(); $priceBlock = $viewBlock->getPriceBlock(); \PHPUnit_Framework_Assert::assertEquals($product->getMsrp(), $priceBlock->getOldPrice(), 'Displayed on Product view page MAP is incorrect'); \PHPUnit_Framework_Assert::assertFalse($priceBlock->isRegularPriceVisible(), 'Regular price on Product view page is visible and not expected.'); $viewBlock->openMapBlock(); $mapBlock = $viewBlock->getMapBlock(); \PHPUnit_Framework_Assert::assertContains($product->getMsrp(), $mapBlock->getOldPrice(), 'Displayed on Product view page MAP is incorrect.'); \PHPUnit_Framework_Assert::assertEquals($product->getPrice(), $mapBlock->getActualPrice(), 'Displayed on Product view page price is incorrect.'); }
/** * Verify product price on category view page. * * @param FixtureInterface $bundle * @param CatalogCategoryView $catalogCategoryView * @return void */ protected function assertPrice(FixtureInterface $bundle, CatalogCategoryView $catalogCategoryView) { /** @var BundleProduct $bundle */ $priceData = $bundle->getDataFieldConfig('price')['source']->getPreset(); //Price from/to verification $priceBlock = $catalogCategoryView->getListProductBlock()->getProductPriceBlock($bundle->getName()); if ($bundle->hasData('special_price') || $bundle->hasData('group_price')) { $priceLow = $priceBlock->getFinalPrice(); } else { $priceLow = $bundle->getPriceView() == 'Price Range' ? $priceBlock->getPriceFrom() : $priceBlock->getRegularPrice(); } \PHPUnit_Framework_Assert::assertEquals($priceData['price_from'], $priceLow, 'Bundle price From on category page is not correct.'); if ($bundle->getPriceView() == 'Price Range') { \PHPUnit_Framework_Assert::assertEquals($priceData['price_to'], $priceBlock->getPriceTo(), 'Bundle price To on category page is not correct.'); } }
/** * Assert that Catalog Price Rule is applied for product(s) in Catalog * according to Priority(Priority/Stop Further Rules Processing). * * @param CmsIndex $cmsIndexPage * @param CatalogCategoryView $catalogCategoryViewPage * @param array $products * @param array $productPrice * @param Customer $customer * @return void */ public function processAssert(CmsIndex $cmsIndexPage, CatalogCategoryView $catalogCategoryViewPage, array $products, array $productPrice, Customer $customer = null) { if ($customer !== null) { $this->objectManager->create('\\Magento\\Customer\\Test\\TestStep\\LoginCustomerOnFrontendStep', ['customer' => $customer])->run(); } $cmsIndexPage->open(); foreach ($products as $key => $product) { $categoryName = $product->getCategoryIds()[0]; $cmsIndexPage->getTopmenu()->selectCategoryByName($categoryName); $priceBlock = $catalogCategoryViewPage->getListProductBlock()->getProductItem($product)->getPriceBlock(); $actualPrice['regular'] = (double) $priceBlock->getOldPrice(); $actualPrice['special'] = (double) $priceBlock->getSpecialPrice(); $actualPrice['discount_amount'] = $actualPrice['regular'] - $actualPrice['special']; $diff = $this->verifyData($actualPrice, $productPrice[$key]); \PHPUnit_Framework_Assert::assertTrue(empty($diff), implode(' ', $diff)); } }
/** * Assertion that filtered product list via layered navigation are displayed correctly. * * @param Category $category * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param array $layeredNavigation * @return void */ public function processAssert(Category $category, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, array $layeredNavigation) { $this->products = $category->getDataFieldConfig('category_products')['source']->getProducts(); $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategoryByName($category->getName()); foreach ($layeredNavigation as $filters) { foreach ($filters as $filter) { $catalogCategoryView->getLayeredNavigationBlock()->applyFilter($filter['title'], $filter['linkPattern']); $productNames = $this->getProductNames($filter['products']); sort($productNames); $pageProductNames = $catalogCategoryView->getListProductBlock()->getProductNames(); sort($pageProductNames); \PHPUnit_Framework_Assert::assertEquals($productNames, $pageProductNames); } $catalogCategoryView->getLayeredNavigationBlock()->clearAll(); } }
/** * Assert product MAP related data in Shopping Cart. * * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductView $catalogProductView * @param CheckoutCart $checkoutCart * @param InjectableFixture $product * @return void */ public function processAssert(CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView, CheckoutCart $checkoutCart, InjectableFixture $product) { /** @var CatalogProductSimple $product */ $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategoryByName($product->getCategoryIds()[0]); $catalogCategoryView->getListProductBlock()->getProductItem($product)->open(); if ($product->hasData('checkout_data')) { $catalogProductView->getViewBlock()->addToCart($product); } else { $catalogProductView->getMsrpViewBlock()->openMapBlock(); $catalogProductView->getMsrpViewBlock()->getMapBlock()->addToCart(); } $catalogProductView->getMessagesBlock()->waitSuccessMessage(); $checkoutCart->open(); $productPrice = $product->hasData('checkout_data') ? $product->getCheckoutData()['cartItem']['price'] : $product->getPrice(); $unitPrice = $checkoutCart->getCartBlock()->getCartItem($product)->getPrice(); \PHPUnit_Framework_Assert::assertEquals($productPrice, $unitPrice, 'Incorrect unit price is displayed in Cart'); }
/** * Assert that specified prices are actual on category, product and cart pages. * * @param InjectableFixture $product * @param array $prices * @param int $qty * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductView $catalogProductView * @param CheckoutCart $checkoutCart * @param FixtureFactory $fixtureFactory * @return void * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function processAssert(InjectableFixture $product, array $prices, $qty, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView, CheckoutCart $checkoutCart, FixtureFactory $fixtureFactory) { $this->cmsIndex = $cmsIndex; $this->catalogCategoryView = $catalogCategoryView; $this->catalogProductView = $catalogProductView; $this->checkoutCart = $checkoutCart; $actualPrices = []; //Assertion steps $productCategory = $product->getCategoryIds()[0]; $this->openCategory($productCategory); $actualPrices = $this->getCategoryPrices($product, $actualPrices); $catalogCategoryView->getListProductBlock()->getProductItem($product)->open(); $catalogProductView->getViewBlock()->fillOptions($product); $actualPrices = $this->getProductPagePrices($actualPrices); $catalogProductView->getViewBlock()->clickAddToCart(); $catalogProductView->getMessagesBlock()->waitSuccessMessage(); $actualPrices = $this->getCartPrices($product, $actualPrices); $actualPrices = $this->getTotals($actualPrices); //Prices verification $message = 'Prices from dataset should be equal to prices on frontend'; \PHPUnit_Framework_Assert::assertEquals($prices, $actualPrices, $message); }
/** * Assert that specified prices are actual on category, product and cart pages. * * @param InjectableFixture $product * @param array $prices * @param int $qty * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductView $catalogProductView * @param CheckoutCart $checkoutCart * @param FixtureFactory $fixtureFactory * @return void */ public function processAssert(InjectableFixture $product, array $prices, $qty, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView, CheckoutCart $checkoutCart, FixtureFactory $fixtureFactory) { $this->cmsIndex = $cmsIndex; $this->catalogCategoryView = $catalogCategoryView; $this->catalogProductView = $catalogProductView; $this->checkoutCart = $checkoutCart; //Preconditions $address = $fixtureFactory->createByCode('address', ['dataset' => 'US_address_NY']); $shipping = ['shipping_service' => 'Flat Rate', 'shipping_method' => 'Fixed']; $actualPrices = []; //Assertion steps $productCategory = $product->getCategoryIds()[0]; $this->openCategory($productCategory); $actualPrices = $this->getCategoryPrices($product, $actualPrices); $catalogCategoryView->getListProductBlock()->getProductItem($product)->open(); $catalogProductView->getViewBlock()->fillOptions($product); $actualPrices = $this->getProductPagePrices($actualPrices); $catalogProductView->getViewBlock()->setQtyAndClickAddToCart($qty); $catalogProductView->getMessagesBlock()->waitSuccessMessage(); $this->checkoutCart->open(); $this->fillEstimateBlock($address, $shipping); $actualPrices = $this->getCartPrices($product, $actualPrices); $actualPrices = $this->getTotals($actualPrices); //Prices verification $message = 'Prices from dataset should be equal to prices on frontend.'; \PHPUnit_Framework_Assert::assertEquals($prices, $actualPrices, $message); }
/** * Verify product price on category view page * * @param FixtureInterface $product * @param CatalogCategoryView $catalogCategoryView * @return void */ protected function assertPrice(FixtureInterface $product, CatalogCategoryView $catalogCategoryView) { $price = $catalogCategoryView->getListProductBlock()->getProductPriceBlock($product->getName())->getRegularPrice(); \PHPUnit_Framework_Assert::assertEquals(number_format($product->getPrice(), 2), $price, 'Product regular price on category page is not correct.'); }