/** * Assert that product is displayed in related products section. * * @param Browser $browser * @param CatalogProductSimple $product * @param InjectableFixture[] $relatedProducts * @param CatalogProductView $catalogProductView * @return void */ public function processAssert(Browser $browser, CatalogProductSimple $product, array $relatedProducts, CatalogProductView $catalogProductView) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); foreach ($relatedProducts as $relatedProduct) { \PHPUnit_Framework_Assert::assertTrue($catalogProductView->getRelatedProductBlock()->getItemBlock($relatedProduct)->isVisible(), "Product {$relatedProduct->getName()} is absent in related products."); } }
/** * 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); }
/** * Assert that gift card usable in frontend. * * @param CatalogProductView $catalogProductView * @param CheckoutCart $checkoutCart * @param CatalogProductSimple $product * @param Browser $browser * @param string $code * @return void */ public function processAssert(CatalogProductView $catalogProductView, CheckoutCart $checkoutCart, CatalogProductSimple $product, Browser $browser, $code) { $this->checkoutCart = $checkoutCart; $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->clickAddToCart(); $checkoutCart->getGiftCardAccountBlock()->addGiftCard($code); $this->assert(); }
/** * 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()->isUpsellProductVisible($promotedProduct), 'Product \'' . $promotedProduct->getName() . '\' is exist in up-sells products.'); } }
/** * Assert that created gift card account can be verified on the frontend in Shopping Cart. * * @param Customer $customer * @param Browser $browser * @param CatalogProductSimple $product * @param CatalogProductView $catalogProductView * @param GiftCardAccount $giftCardAccount * @param CheckoutCart $checkoutCart * @param string $code * @return void */ public function processAssert(Customer $customer, Browser $browser, CatalogProductSimple $product, CatalogProductView $catalogProductView, GiftCardAccount $giftCardAccount, CheckoutCart $checkoutCart, $code) { $this->objectManager->create('Mage\\Customer\\Test\\TestStep\\LoginCustomerOnFrontendStep', ['customer' => $customer])->run(); $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->clickAddToCart(); $data = $giftCardAccount->getData(); $checkoutCart->getGiftCardAccountBlock()->checkStatusAndBalance($code); $fixtureData = ['code' => $code, 'balance' => $data['balance'], 'date_expires' => $data['date_expires']]; \PHPUnit_Framework_Assert::assertEquals($fixtureData, $checkoutCart->getCheckBlock()->getGiftCardAccountData($fixtureData)); }
/** * Assert that sitemap.xml file contains correct content according to dataset: * - product url * - category url * - CMS page url * * @param CatalogProductSimple $product * @param CatalogCategory $category * @param CmsPage $cmsPage * @param Sitemap $sitemap * @param SitemapIndex $sitemapIndex * @return void */ public function processAssert(CatalogProductSimple $product, CatalogCategory $category, CmsPage $cmsPage, Sitemap $sitemap, SitemapIndex $sitemapIndex) { $sitemapIndex->open()->getSitemapGrid()->sortGridByField('sitemap_id'); $filter = ['sitemap_filename' => $sitemap->getSitemapFilename(), 'sitemap_path' => $sitemap->getSitemapPath()]; $sitemapIndex->getSitemapGrid()->search($filter); $content = file_get_contents($sitemapIndex->getSitemapGrid()->getLinkForGoogle()); $frontendUrl = str_replace('index.php/', '', $_ENV['app_frontend_url']); $urls = [$frontendUrl . $product->getUrlKey() . '.html', $frontendUrl . $category->getUrlKey() . '.html', $frontendUrl . $cmsPage->getIdentifier()]; \PHPUnit_Framework_Assert::assertTrue($this->checkContent($content, $urls), "File '{$sitemap->getSitemapFilename()}' does not contains correct content."); }
/** * Assert that banner is absent on Shopping Cart page. * * @param Browser $browser * @param CatalogProductSimple $product * @param CatalogProductView $catalogProductView * @param Banner $banner * @param CheckoutCart $checkoutCart * @param Cache $adminCache * @return void */ public function processAssert(Browser $browser, CatalogProductSimple $product, CatalogProductView $catalogProductView, Banner $banner, CheckoutCart $checkoutCart, Cache $adminCache) { // Flush cache $adminCache->open(); $adminCache->getPageActions()->flushCacheStorage(); $adminCache->getMessagesBlock()->waitSuccessMessage(); $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->addToCart($product); \PHPUnit_Framework_Assert::assertFalse($checkoutCart->getBannerViewBlock()->checkWidgetBanners($banner), 'Banner is present on Shopping Cart page.'); }
/** * Assert that product is not displayed in related products 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('related_products') ? $product->getDataFieldConfig('related_products')['source']->getProducts() : []; } $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); foreach ($promotedProducts as $promotedProduct) { \PHPUnit_Framework_Assert::assertFalse($catalogProductView->getRelatedProductBlock()->getItemBlock($promotedProduct)->isVisible(), "Product {$promotedProduct->getName()} is exist in related products."); } }
/** * Assert that product rating is displayed on product review page(frontend). * * @param CatalogProductView $catalogProductView * @param ReviewProductList $reviewProductList * @param BrowserInterface $browser * @param CatalogProductSimple $product * @param Review $review * @return void */ public function processAssert(CatalogProductView $catalogProductView, ReviewProductList $reviewProductList, BrowserInterface $browser, CatalogProductSimple $product, Review $review) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->openCustomInformationTab('Reviews'); $catalogProductView->getReviewsBlock()->clickAddReviewLink(); $reviewForm = $reviewProductList->getReviewFormBlock(); $ratings = $review->getDataFieldConfig('ratings')['source']->getRatings(); foreach ($ratings as $rating) { \PHPUnit_Framework_Assert::assertTrue($reviewForm->isVisibleRating($rating), 'Product rating "' . $rating->getRatingCode() . '" is not displayed on review product page.'); } }
/** * 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); $checkoutCart->open(); foreach ($promotedProducts as $promotedProduct) { \PHPUnit_Framework_Assert::assertFalse($checkoutCart->getCrosssellBlock()->getItemBlock($promotedProduct)->isVisible(), 'Product \'' . $promotedProduct->getName() . '\' is exist in cross-sell section.'); } }
/** * Assert that after applying changes, currency symbol changed on Product Details Page. * * @param CatalogProductSimple $product * @param Browser $browser * @param CmsIndex $cmsIndex * @param CatalogProductView $catalogProductView * @param CurrencySymbolEntity $currencySymbol * @param Cache $adminCache * @return void */ public function processAssert(CatalogProductSimple $product, Browser $browser, CmsIndex $cmsIndex, CatalogProductView $catalogProductView, CurrencySymbolEntity $currencySymbol, Cache $adminCache) { // Flush cache $adminCache->open(); $adminCache->getPageActions()->flushCacheStorage(); $adminCache->getMessagesBlock()->waitSuccessMessage(); $cmsIndex->open(); $cmsIndex->getCurrencyBlock()->switchCurrency($currencySymbol); $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $price = $catalogProductView->getViewBlock()->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 Product page.'); }
/** * Assert that products are displayed in cross-sell section. * * @param Browser $browser * @param CheckoutCart $checkoutCart * @param CatalogProductSimple $product * @param CatalogProductView $catalogProductView * @param InjectableFixture[] $crossSellProducts * @return void */ public function processAssert(Browser $browser, CheckoutCart $checkoutCart, CatalogProductSimple $product, CatalogProductView $catalogProductView, array $crossSellProducts) { $checkoutCart->open()->getCartBlock()->clearShoppingCart(); $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->addToCart($product); $errors = []; $crosssellBlock = $checkoutCart->getCrosssellBlock(); foreach ($crossSellProducts as $crossSellProduct) { if (!$crosssellBlock->getItemBlock($crossSellProduct)->isVisible()) { $errors[] = "Product {$crossSellProduct->getName()} is absent in cross-sell section."; } } \PHPUnit_Framework_Assert::assertEmpty($errors, implode(" ", $errors)); }
/** * 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(); }
/** * Assert that product is displayed in cross-sell section. * * @param BrowserInterface $browser * @param CheckoutCart $checkoutCart * @param CatalogProductSimple $product * @param CatalogProductView $catalogProductView * @param InjectableFixture[]|null $promotedProducts * @return void */ public function processAssert(BrowserInterface $browser, CheckoutCart $checkoutCart, CatalogProductSimple $product, CatalogProductView $catalogProductView, array $promotedProducts = null) { $errors = []; 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); $checkoutCart->open(); foreach ($promotedProducts as $promotedProduct) { if (!$checkoutCart->getCrosssellBlock()->verifyProductCrosssell($promotedProduct)) { $errors[] = 'Product \'' . $promotedProduct->getName() . '\' is absent in cross-sell section.'; } } \PHPUnit_Framework_Assert::assertEmpty($errors, implode(" ", $errors)); }
/** * Assert that product is displayed in cross-sell section for customer segment. * * @param Browser $browser * @param Customer $customer * @param CheckoutCart $checkoutCart * @param CatalogProductSimple $product * @param CatalogProductView $catalogProductView * @param CustomerAccountLogout $customerAccountLogout * @param InjectableFixture[] $promotedProducts * @return void */ public function processAssert(Browser $browser, Customer $customer, CheckoutCart $checkoutCart, CatalogProductSimple $product, CatalogProductView $catalogProductView, CustomerAccountLogout $customerAccountLogout, array $promotedProducts) { // Create customer, logout and login to frontend $customer->persist(); $customerAccountLogout->open(); $this->objectManager->create('Mage\\Customer\\Test\\TestStep\\LoginCustomerOnFrontendStep', ['customer' => $customer])->run(); // Clear cart $checkoutCart->open(); $checkoutCart->getCartBlock()->clearShoppingCart(); // Check display cross sell products $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->addToCart($product); $catalogProductView->getMessagesBlock()->waitSuccessMessage(); $checkoutCart->open(); $errors = []; foreach ($promotedProducts as $promotedProduct) { if (!$checkoutCart->getCrosssellBlock()->getItemBlock($promotedProduct)->isVisible()) { $errors[] = "Product '{$promotedProduct->getName()}' is absent in cross-sell section."; } } \PHPUnit_Framework_Assert::assertEmpty($errors, implode(" ", $errors)); }
/** * Add product to cart. * * @param CatalogProductSimple $product * @param int $qty * @return void */ protected function addProductToCart(CatalogProductSimple $product, $qty) { $this->browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $productView = $this->catalogProductView->getViewBlock(); $productView->fillOptions($product); $productView->setQty($qty); $productView->clickAddToCart(); $this->catalogProductView->getMessagesBlock()->waitSuccessMessage(); }
/** * 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(); }