/** * Assert that Wishlist can't be find by another Customer (or guest) via "Wishlist Search". * * @param CustomerAccountLogout $customerAccountLogout * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param SearchResult $searchResult * @param CatalogCategory $category * @param Customer $customer * @param Wishlist $wishlist * @return void */ public function processAssert(CustomerAccountLogout $customerAccountLogout, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, SearchResult $searchResult, CatalogCategory $category, Customer $customer, Wishlist $wishlist) { $customerAccountLogout->open(); $cmsIndex->open()->getTopmenu()->selectCategory($category->getName()); $catalogCategoryView->getWishlistSearchBlock()->searchByCustomer($customer); \PHPUnit_Framework_Assert::assertFalse($searchResult->getWishlistSearchResultBlock()->isWishlistVisibleInGrid($wishlist), "Multiple wishlist is visible on wishlist search result page."); }
/** * Get form prices. * * @param InjectableFixture $product * @param CatalogCategoryView $catalogCategoryView * @return array */ protected function getFormPrices(InjectableFixture $product, CatalogCategoryView $catalogCategoryView) { $productPriceBlock = $catalogCategoryView->getListProductBlock()->getProductPriceBlock($product->getName()); $actualPrices = ['regular' => $productPriceBlock->getRegularPrice(), 'special' => $productPriceBlock->getSpecialPrice()]; $actualPrices['discount_amount'] = number_format($actualPrices['regular'] - $actualPrices['special'], 2); return $actualPrices; }
/** * Assert that products' MAP has been applied before checkout. * * @param CatalogCategory $category * @param Customer $customer * @param Address $address * @param CatalogCategoryView $catalogCategoryView * @param CmsIndex $cmsIndex * @param CatalogProductView $catalogProductView * @param CheckoutCart $cart * @param CheckoutOnepage $checkoutOnePage * @param array $products * @return void */ public function processAssert(CatalogCategory $category, Customer $customer, Address $address, CatalogCategoryView $catalogCategoryView, CmsIndex $cmsIndex, CatalogProductView $catalogProductView, CheckoutCart $cart, CheckoutOnepage $checkoutOnePage, array $products) { for ($i = 0; $i < count($products); $i++) { $cart->getCartBlock()->clearShoppingCart(); $productName = $products[$i]->getName(); $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($category->getName()); // Check that price is not present on category page. $listProductBlock = $catalogCategoryView->getListProductBlock(); $productPriceBlock = $listProductBlock->getProductPriceBlock($productName); $productPriceBlock->clickForPrice(); \PHPUnit_Framework_Assert::assertFalse($productPriceBlock->getMapBlock()->isPriceVisible(), 'Price is present in MSRP dialog on category page.'); // Check that price is not present on product page. $listProductBlock->openProductViewPage($productName); \PHPUnit_Framework_Assert::assertFalse($catalogProductView->getViewBlock()->getPriceBlock()->isRegularPriceVisible(), 'Price is present in View block on product page.'); // Check that price is not present on cart. $catalogProductView->getViewBlock()->addToCart($products[$i]); \PHPUnit_Framework_Assert::assertTrue($cart->getCartBlock()->getCartItem($products[$i])->isMsrpVisible(), "MSRP link is not visible in cart."); // Check that price is present on review block in onepage checkout page. $cart->getCartBlock()->getProceedToCheckoutBlock()->proceedToCheckout(); $checkoutMethodBlock = $checkoutOnePage->getLoginBlock(); $billingBlock = $checkoutOnePage->getBillingBlock(); $paymentMethodBlock = $checkoutOnePage->getPaymentMethodsBlock(); $shippingBlock = $checkoutOnePage->getShippingMethodBlock(); $checkoutMethodBlock->guestCheckout(); $checkoutMethodBlock->clickContinue(); $billingBlock->fillBilling($address, $customer); $billingBlock->clickContinue(); $shippingBlock->selectShippingMethod(['shipping_service' => 'Flat Rate', 'shipping_method' => 'Fixed']); $shippingBlock->clickContinue(); $paymentMethodBlock->selectPaymentMethod(['method' => 'checkmo']); $paymentMethodBlock->clickContinue(); \PHPUnit_Framework_Assert::assertEquals(number_format($products[$i]->getPrice(), 2), $checkoutOnePage->getReviewBlock()->getTotalBlock()->getData('subtotal'), "Subtotal in checkout one page for {$productName} is not equal to expected."); } }
/** * 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), "Products '{$productFixture->getName()}' is not find."); } }
/** * Assert that filtered product is present on category page by attribute and another products are absent. * * @param CatalogCategoryView $catalogCategoryView * @param ProcessList $processList * @param Browser $browser * @param CatalogCategory $category * @param InjectableFixture[] $products * @param string $searchProductsIndexes * @param string $filterLink * @return void */ public function processAssert(CatalogCategoryView $catalogCategoryView, ProcessList $processList, Browser $browser, CatalogCategory $category, array $products, $searchProductsIndexes, $filterLink) { $processList->open()->getIndexManagementGrid()->massactionForAll('Reindex Data'); $browser->open($_ENV['app_frontend_url'] . strtolower($category->getUrlKey()) . '.html'); $filter = $this->prepareFilter($products[$searchProductsIndexes], $filterLink); $catalogCategoryView->getLayeredNavigationBlock()->selectAttribute($filter); $this->verify($catalogCategoryView, $products, $searchProductsIndexes); }
/** * Assert that Catalog Price Rule is applied for product(s) in Shopping Cart * according to Priority(Priority/Stop Further Rules Processing). * * @param InjectableFixture $product * @param CatalogProductView $pageCatalogProductView * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CheckoutCart $pageCheckoutCart * @param array $prices * @return void */ public function processAssert(InjectableFixture $product, CatalogProductView $pageCatalogProductView, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CheckoutCart $pageCheckoutCart, array $prices) { $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($product->getCategoryIds()[0]); $catalogCategoryView->getListProductBlock()->openProductViewPage($product->getName()); $pageCatalogProductView->getViewBlock()->addToCart($product); $actualGrandTotal = $pageCheckoutCart->getCartBlock()->getCartItem($product)->getCartItemTypePrice('price'); \PHPUnit_Framework_Assert::assertEquals($prices['grand_total'], $actualGrandTotal); }
/** * Assert that product is absent in the category page. * * @param CatalogCategoryView $catalogCategoryView * @param CmsIndex $cmsIndex * @param InjectableFixture $product * @param CatalogCategory $category * @return void */ public function processAssert(CatalogCategoryView $catalogCategoryView, CmsIndex $cmsIndex, InjectableFixture $product, CatalogCategory $category) { $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($category->getName()); $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product); while (!$isProductVisible && $catalogCategoryView->getBottomToolbar()->nextPage()) { $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product); } \PHPUnit_Framework_Assert::assertFalse($isProductVisible, 'Product is present on category page.'); }
/** * Assert that created CMS block displayed on frontend category page (in order to assign block to category: * go to category page> Display settings> CMS Block). * * @param CmsIndex $cmsIndex * @param CmsBlock $cmsBlock * @param CatalogCategoryView $catalogCategoryView * @param FixtureFactory $fixtureFactory * @return void */ public function processAssert(CmsIndex $cmsIndex, CmsBlock $cmsBlock, CatalogCategoryView $catalogCategoryView, FixtureFactory $fixtureFactory) { $category = $fixtureFactory->createByCode('catalogCategory', ['dataSet' => 'default_subcategory', 'data' => ['display_mode' => 'Static block and products', 'landing_page' => $cmsBlock->getTitle()]]); $category->persist(); $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($category->getName()); $categoryViewContent = $catalogCategoryView->getViewBlock()->getText(); $cmsBlockContent = explode("\n", $categoryViewContent); \PHPUnit_Framework_Assert::assertContains($cmsBlock->getContent(), $cmsBlockContent); }
/** * Assert that out of stock product is visible in the assigned category. * * @param CatalogCategoryView $catalogCategoryView * @param CmsIndex $cmsIndex * @param InjectableFixture $product * @param CatalogCategory|null $category * @return void */ public function processAssert(CatalogCategoryView $catalogCategoryView, CmsIndex $cmsIndex, InjectableFixture $product, CatalogCategory $category = null) { $categoryName = $product->hasData('category_ids') ? $product->getCategoryIds()[0] : $category->getName(); $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($categoryName); $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product); while (!$isProductVisible && $catalogCategoryView->getBottomToolbar()->nextPage()) { $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product); } \PHPUnit_Framework_Assert::assertTrue($isProductVisible, "Product is absent on category page."); }
/** * 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()->selectCategory($categoryName); $price = $catalogCategoryView->getListProductBlock()->getPrice($product->getId()); 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.'); }
/** * Check is visible product on category page. * * @param CatalogCategoryView $catalogCategoryView * @param InjectableFixture[] $products * @param string $searchProductsIndexes * @return void */ protected function verify(CatalogCategoryView $catalogCategoryView, array $products, $searchProductsIndexes) { $searchProductsIndexes = explode(',', $searchProductsIndexes); foreach ($products as $key => $product) { $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product); while (!$isProductVisible && $catalogCategoryView->getBottomToolbar()->nextPage()) { $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product); } $expected = in_array($key, $searchProductsIndexes) ? true : false; \PHPUnit_Framework_Assert::assertEquals($expected, $isProductVisible); } }
/** * Assert that Catalog Price Rule is applied & it impacts on product's discount price on Product page. * * @param InjectableFixture $product * @param CatalogProductView $pageCatalogProductView * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param array $prices * @return void */ public function processAssert(InjectableFixture $product, CatalogProductView $pageCatalogProductView, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, array $prices) { $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($product->getCategoryIds()[0]); $catalogCategoryView->getListProductBlock()->openProductViewPage($product->getName()); $productPriceBlock = $pageCatalogProductView->getViewBlock()->getPriceBlock(); $actualPrices['regular'] = $productPriceBlock->getRegularPrice(); $actualPrices['special'] = $productPriceBlock->getSpecialPrice(); $actualPrices['discount_amount'] = number_format($actualPrices['regular'] - $actualPrices['special'], 2); $diff = $this->verifyData($actualPrices, $prices); \PHPUnit_Framework_Assert::assertEmpty($diff, $diff); }
/** * Assert that products are absent in category frontend page. * * @param CatalogCategoryView $catalogCategoryView * @param CmsIndex $cmsIndex * @param CatalogCategory $category * @param array $unassignedProducts * @return void */ public function processAssert(CatalogCategoryView $catalogCategoryView, CmsIndex $cmsIndex, CatalogCategory $category, array $unassignedProducts) { $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($category->getName()); foreach ($unassignedProducts as $product) { $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product); while (!$isProductVisible && $catalogCategoryView->getBottomToolbar()->nextPage()) { $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product); } \PHPUnit_Framework_Assert::assertFalse($isProductVisible, "Product {$product->getName()} is present in category page."); } }
/** * Assert that created Order By Sku widget displayed on frontend in Catalog. * * @param CatalogCategory $category * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param Widget $widget * @param Cache $adminCache * @return void */ public function processAssert(CatalogCategory $category, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, Widget $widget, Cache $adminCache) { $category->persist(); // Flush cache $adminCache->open(); $adminCache->getPageActions()->flushCacheStorage(); $adminCache->getMessagesBlock()->waitSuccessMessage(); $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($category->getName()); $errors = $catalogCategoryView->getWidgetView()->checkWidget($widget, "Order by SKU"); \PHPUnit_Framework_Assert::assertEmpty($errors, $errors); }
/** * Assert that banner presents on specific category page. * * @param CatalogProductSimple $product * @param CmsIndex $cmsIndex * @param Banner $banner * @param CatalogCategoryView $catalogCategoryView * @param Customer $customer[optional] * @param Cache $adminCache * @return void */ public function processAssert(CatalogProductSimple $product, CmsIndex $cmsIndex, Banner $banner, CatalogCategoryView $catalogCategoryView, Customer $customer = null, Cache $adminCache) { // Flush cache $adminCache->open(); $adminCache->getPageActions()->flushCacheStorage(); $adminCache->getMessagesBlock()->waitSuccessMessage(); if ($customer !== null) { $this->objectManager->create('Mage\\Customer\\Test\\TestStep\\LoginCustomerOnFrontendStep', ['customer' => $customer])->run(); } else { $cmsIndex->open(); } $cmsIndex->getTopmenu()->selectCategory($product->getCategoryIds()[0]); \PHPUnit_Framework_Assert::assertTrue($catalogCategoryView->getBannerViewBlock()->checkWidgetBanners($banner), 'Banner is absent on Category page.'); }
/** * Assert that event block is absent on category/product pages. * * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductSimple $product * @param CatalogProductView $catalogProductView * @param Cache $adminCache * @return void */ public function processAssert(CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductSimple $product, CatalogProductView $catalogProductView, Cache $adminCache) { // Flush cache $adminCache->open(); $adminCache->getPageActions()->flushCacheStorage(); $adminCache->getMessagesBlock()->waitSuccessMessage(); $categoryName = $product->getCategoryIds()[0]; $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($categoryName); \PHPUnit_Framework_Assert::assertFalse($catalogCategoryView->getEventBlock()->isVisible(), "Event block is present on Category page."); $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($categoryName); $catalogCategoryView->getListProductBlock()->openProductViewPage($product->getName()); \PHPUnit_Framework_Assert::assertFalse($catalogProductView->getEventBlock()->isVisible(), "Event block is present on Product page."); }
/** * Assert that product products' MAP has been applied on gesture. * * @param CatalogCategoryView $catalogCategoryView * @param CmsIndex $cmsIndex * @param CatalogCategory $category * @param array $products * @return void */ public function processAssert(CatalogCategoryView $catalogCategoryView, CmsIndex $cmsIndex, CatalogCategory $category, array $products) { foreach ($products as $product) { $productName = $product->getName(); $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($category->getName()); $listProductBlock = $catalogCategoryView->getListProductBlock(); // Check that price is present in MAP popup. $productPriceBlock = $listProductBlock->getProductPriceBlock($productName); $productPriceBlock->clickForPrice(); $msrpPopupBlock = $productPriceBlock->getMapBlock(); $map = $msrpPopupBlock->isVisible() ? $msrpPopupBlock->getMap() : null; \PHPUnit_Framework_Assert::assertEquals(number_format($product->getPrice(), 2), $map, "MAP of {$productName} product is not visible or not equal to product price."); } }
/** * Verify product displaying on frontend. * * @param InjectableFixture $product * @return array */ protected function isNotDisplayingOnFrontendAssert(InjectableFixture $product) { $errors = []; //Check that product is not available by url $this->browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); if ($this->catalogProductView->getViewBlock()->isVisible()) { $errors[] = '- product view block is visible in product page.'; } //Check that product can't be found $this->cmsIndex->open()->getSearchBlock()->search($product->getSku()); if ($this->catalogSearchResult->getListProductBlock()->isProductVisible($product)) { $errors[] = '- successful product search.'; } //Check that product is not available in category page $categoryName = $product->hasData('category_ids') ? $product->getCategoryIds()[0] : $this->category->getName(); $this->cmsIndex->open()->getTopmenu()->selectCategory($categoryName); $isProductVisible = $this->catalogCategoryView->getListProductBlock()->isProductVisible($product); $bottomToolBar = $this->catalogCategoryView->getBottomToolbar(); while (!$isProductVisible && $bottomToolBar->nextPage()) { $isProductVisible = $this->catalogCategoryView->getListProductBlock()->isProductVisible($product); } if ($isProductVisible) { $errors[] = "- product with name '{$product->getName()}' is found in this category."; } return $errors; }
/** * Assert that product is visible in the assigned category. * * @param CatalogCategoryView $catalogCategoryView * @param CmsIndex $cmsIndex * @param InjectableFixture $product * @param CatalogCategory|null $category * @return void * * @SuppressWarnings(PHPMD.NPathComplexity) */ public function processAssert(CatalogCategoryView $catalogCategoryView, CmsIndex $cmsIndex, InjectableFixture $product, CatalogCategory $category = null) { $categoryName = $product->hasData('category_ids') ? $product->getCategoryIds()[0] : $category->getName(); $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($categoryName); $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product); while (!$isProductVisible && $catalogCategoryView->getBottomToolbar()->nextPage()) { $isProductVisible = $catalogCategoryView->getListProductBlock()->isProductVisible($product); } 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); }
/** * Event block has $this->eventStatus on Product Page. * * @return void */ protected function checkEventStatusOnProductPage() { $categoryName = $this->product->getDatafieldConfig('category_ids')['source']->getProductCategory()->getName(); $this->cmsIndex->open(); $this->cmsIndex->getTopmenu()->selectCategory($categoryName); $this->catalogCategoryView->getListProductBlock()->openProductViewPage($this->product->getName()); \PHPUnit_Framework_Assert::assertEquals($this->eventStatus, $this->catalogProductView->getEventBlock()->getEventStatus(), 'Wrong event status is displayed.'); }
/** * Check event block on visibility on specified page. * * @param string $page * @param bool $positive [optional] * @return void */ protected function checkEventBlockOnPage($page, $positive = true) { $this->cmsIndex->open(); $this->cmsIndex->getTopmenu()->selectCategory($this->categoryName); if ($page == 'product_page') { $this->catalogCategoryView->getListProductBlock()->openProductViewPage($this->productName); } $eventBlockVisibility = $this->catalogProductView->getEventBlock()->isVisible(); $positive == true ? \PHPUnit_Framework_Assert::assertTrue($eventBlockVisibility, "EventBlock is absent on {$page} page.") : \PHPUnit_Framework_Assert::assertFalse($eventBlockVisibility, "EventBlock is present on {$page} page."); }
/** * Assert that product products' MAP has been applied in cart. * * @param CatalogCategoryView $catalogCategoryView * @param CmsIndex $cmsIndex * @param CatalogCategory $category * @param CatalogProductView $catalogProductView * @param CheckoutCart $cart * @param array $products * @return void */ public function processAssert(CatalogCategoryView $catalogCategoryView, CmsIndex $cmsIndex, CatalogCategory $category, CatalogProductView $catalogProductView, CheckoutCart $cart, array $products) { foreach ($products as $product) { $cart->getCartBlock()->clearShoppingCart(); $productName = $product->getName(); $cmsIndex->open(); $cmsIndex->getTopmenu()->selectCategory($category->getName()); $listProductBlock = $catalogCategoryView->getListProductBlock(); // Check that price is not present on category page. $productPriceBlock = $listProductBlock->getProductPriceBlock($productName); $productPriceBlock->clickForPrice(); \PHPUnit_Framework_Assert::assertFalse($productPriceBlock->getMapBlock()->isPriceVisible(), 'Price is present in MSRP dialog on category page.'); // Check that price is not present on product page. $listProductBlock->openProductViewPage($productName); \PHPUnit_Framework_Assert::assertFalse($catalogProductView->getViewBlock()->getPriceBlock()->isRegularPriceVisible(), 'Price is present in View block on product page.'); // Check that price is present in cart. $catalogProductView->getViewBlock()->addToCart($product); \PHPUnit_Framework_Assert::assertEquals(number_format($product->getPrice(), 2), $cart->getCartBlock()->getCartItem($product)->getCartItemTypePrice('price'), "MAP of {$productName} product in cart is not equal to product price."); } }
/** * Assert that widget catalog event carousel is present on category page and link "Go To Sale" on widget redirects * you to category page. * * @param CmsIndex $cmsIndex * @param CatalogEventWidget $widget * @param CatalogCategoryView $catalogCategoryView * @param Cache $adminCache * @param CatalogEvent $event1 * @param CatalogEvent $event2 * @return void */ public function processAssert(CmsIndex $cmsIndex, CatalogEventWidget $widget, CatalogCategoryView $catalogCategoryView, Cache $adminCache, CatalogEvent $event1, CatalogEvent $event2) { // Flush cache $adminCache->open(); $adminCache->getPageActions()->flushCacheStorage(); $adminCache->getMessagesBlock()->waitSuccessMessage(); $event1->persist(); $event2->persist(); $cmsIndex->open(); $categoryName = $event2->getCategoryId(); $cmsIndex->getTopmenu()->selectCategory($categoryName); $errors = $catalogCategoryView->getWidgetView()->checkWidget($widget, $categoryName); \PHPUnit_Framework_Assert::assertEmpty($errors, implode(" ", $errors)); $cmsIndex->open(); $cmsIndex->getWidgetView()->clickToWidget($widget, $categoryName); $pageTitle = $cmsIndex->getCmsPageBlock()->getPageTitle(); $expected = strtolower($categoryName); $actual = strtolower($pageTitle); \PHPUnit_Framework_Assert::assertEquals($expected, $actual, "Wrong page title on Category page: expected = '{$expected}', actual = '{$actual}'"); }
/** * Assert that displayed category data on category page equals to passed from fixture. * * @param CatalogCategory $category * @param CatalogCategory $initialCategory * @param FixtureFactory $fixtureFactory * @param CatalogCategoryView $categoryView * @param Browser $browser * @return void */ public function processAssert(CatalogCategory $category, CatalogCategory $initialCategory, FixtureFactory $fixtureFactory, CatalogCategoryView $categoryView, Browser $browser) { $product = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'default', 'data' => ['category_ids' => ['category' => $initialCategory]]]); $categoryData = array_merge($initialCategory->getData(), $category->getData()); $product->persist(); $url = $_ENV['app_frontend_url'] . strtolower($category->getUrlKey()) . '.html'; $browser->open($url); \PHPUnit_Framework_Assert::assertEquals($url, $browser->getUrl(), 'Wrong page URL.'); if (isset($categoryData['name'])) { \PHPUnit_Framework_Assert::assertEquals(strtoupper($categoryData['name']), $categoryView->getTitleBlock()->getTitle(), 'Wrong page title.'); } if (isset($categoryData['description'])) { \PHPUnit_Framework_Assert::assertEquals($categoryData['description'], $categoryView->getViewBlock()->getDescription(), 'Wrong category description.'); } if (isset($categoryData['default_sort_by'])) { $sortBy = strtolower($categoryData['default_sort_by']); $sortType = $categoryView->getTopToolbar()->getSelectSortType(); \PHPUnit_Framework_Assert::assertEquals($sortBy, $sortType, 'Wrong sorting type.'); } }
/** * Assert that specified prices are actual on category, product and cart pages. * * @param InjectableFixture $product * @param CmsIndex $cmsIndex * @param CatalogCategoryView $catalogCategoryView * @param CatalogProductView $catalogProductView * @param CheckoutCart $checkoutCart * @param Address $address * @param Cache $cachePage * @param array $prices * @param array $arguments * @return void */ public function processAssert(InjectableFixture $product, CmsIndex $cmsIndex, CatalogCategoryView $catalogCategoryView, CatalogProductView $catalogProductView, CheckoutCart $checkoutCart, Address $address, Cache $cachePage, array $prices, array $arguments) { $cachePage->open()->getPageActions()->flushCacheStorage(); $this->cmsIndex = $cmsIndex; $this->catalogCategoryView = $catalogCategoryView; $this->catalogProductView = $catalogProductView; $this->checkoutCart = $checkoutCart; $prices = $this->prepareVerifyFields($prices); //Assertion steps $productName = $product->getName(); $this->cmsIndex->open()->getTopmenu()->selectCategory($product->getCategoryIds()[0]); $actualPrices = $this->getCategoryPrices($product); $catalogCategoryView->getListProductBlock()->openProductViewPage($productName); $this->fillCheckoutData($product); $actualPrices = array_merge($actualPrices, $this->getProductPagePrices()); $catalogProductView->getViewBlock()->clickAddToCart(); if (isset($arguments['shipping'])) { $this->fillEstimateBlock($address, $arguments['shipping']); } $actualPrices = array_merge($actualPrices, $this->getCartPrices($product), $this->getTotals($actualPrices)); //Prices verification $error = $this->verifyData($prices, $actualPrices); \PHPUnit_Framework_Assert::assertTrue(empty($error), $error); }
/** * Assert category is not present on frontend. * * @param Browser $browser * @param CatalogCategoryView $categoryView * @param CatalogCategory $category * @return void */ public function processAssert(Browser $browser, CatalogCategoryView $categoryView, CatalogCategory $category) { $browser->open($_ENV['app_frontend_url'] . $category->getUrlKey() . '.html'); \PHPUnit_Framework_Assert::assertContains(self::NOT_FOUND_MESSAGE, $categoryView->getViewBlock()->getText(), 'Category is present on frontend.'); }
/** * Get prices on category page. * * @param string $productName * @param array $actualPrices * @return array */ protected function getCategoryPrice($productName, array $actualPrices) { $priceBlock = $this->catalogCategoryView->getListProductBlock()->getProductPriceBlock($productName); $actualPrices['category_price_incl_tax'] = $this->getPrice($priceBlock, 'category_price_incl_tax'); return $actualPrices; }
/** * Assert that old category URL lead to appropriate Category in frontend. * * @param CatalogCategory $category * @param Browser $browser * @param CatalogCategory $initialCategory * @param CatalogCategoryView $catalogCategoryView * @return void */ public function processAssert(CatalogCategory $category, Browser $browser, CatalogCategory $initialCategory, CatalogCategoryView $catalogCategoryView) { $browser->open(str_replace('index', 'cron', $_ENV['app_frontend_url'])); $browser->open($_ENV['app_frontend_url'] . $initialCategory->getUrlKey() . '.html'); \PHPUnit_Framework_Assert::assertEquals($catalogCategoryView->getTitleBlock()->getTitle(), strtoupper($category->getName()), 'Old category URL does not lead to appropriate Category in frontend.'); }
/** * Check whether the attribute filter is displayed on the frontend in Layered navigation. * * @param CatalogCategoryView $catalogCategoryView * @param InjectableFixture $product * @param CatalogProductAttribute $attribute * @param CmsIndex $cmsIndex * @return void */ public function processAssert(CatalogCategoryView $catalogCategoryView, InjectableFixture $product, CatalogProductAttribute $attribute, CmsIndex $cmsIndex) { $cmsIndex->open()->getTopmenu()->selectCategory($product->getCategoryIds()[0]); $label = $attribute->hasData('manage_frontend_label') ? $attribute->getManageFrontendLabel() : $attribute->getFrontendLabel(); \PHPUnit_Framework_Assert::assertTrue(in_array(strtoupper($label), $catalogCategoryView->getLayeredNavigationBlock()->getFilters()), 'Attribute is absent in layered navigation on category page.'); }
/** * Verify product price on category view page. * * @param InjectableFixture $product * @param CatalogCategoryView $catalogCategoryView * @return void */ protected function assertPrice(InjectableFixture $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.'); }