/** * Add products to the wish list. * * @return void */ public function run() { foreach ($this->products as $product) { $this->browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $viewBlock = $this->catalogProductView->getViewBlock(); $this->configure ? $viewBlock->addToWishlist($product) : $viewBlock->clickAddToWishlist(); } }
/** * Add products to the cart. * * @return void */ public function run() { // Ensure that shopping cart is empty $this->checkoutCart->open()->getCartBlock()->clearShoppingCart(); foreach ($this->products as $product) { $this->browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $this->catalogProductView->getViewBlock()->addToCart($product); } }
/** * Assert that displayed price view for bundle product on product page equals passed from fixture. * * @param CatalogProductView $catalogProductView * @param Browser $browser * @param BundleProduct $product * @return void */ public function processAssert(CatalogProductView $catalogProductView, Browser $browser, BundleProduct $product) { //Open product view page $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); //Process assertions $this->assertPrice($product, $catalogProductView); }
/** * Assertion that tier prices are displayed correctly. * * @param Browser $browser * @param CatalogProductView $catalogProductView * @param InjectableFixture $product * @return void */ public function processAssert(Browser $browser, CatalogProductView $catalogProductView, InjectableFixture $product) { //Open product view page $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); //Process assertions $this->assertPrice($product, $catalogProductView->getViewBlock()); }
/** * 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 created CMS page displays with error message on unassigned store views on frontend. * * @param CmsPage $cms * @param FrontendCmsPage $frontendCmsPage * @param Browser $browser * @param CmsIndex $cmsIndex * @param string|null $notFoundMessage * @return void */ public function processAssert(CmsPage $cms, FrontendCmsPage $frontendCmsPage, Browser $browser, CmsIndex $cmsIndex, $notFoundMessage = null) { $browser->open($_ENV['app_frontend_url'] . $cms->getIdentifier()); $notFoundMessage = $notFoundMessage !== null ? $notFoundMessage : self::ERROR_MESSAGE; $cmsIndex->getHeaderBlock()->selectStore('Default Store View'); \PHPUnit_Framework_Assert::assertContains($notFoundMessage, $frontendCmsPage->getCmsPageContentBlock()->getPageContent(), 'Wrong page content is displayed.'); }
/** * Assert that products are displayed in up-sell section. * * @param Browser $browser * @param FixtureInterface $product * @param array $upSellProducts * @param CatalogProductView $catalogProductView * @return void */ public function processAssert(Browser $browser, FixtureInterface $product, array $upSellProducts, CatalogProductView $catalogProductView) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); foreach ($upSellProducts as $upSellProduct) { \PHPUnit_Framework_Assert::assertTrue($catalogProductView->getUpsellBlock()->getItemBlock($upSellProduct)->isVisible(), "Product {$upSellProduct->getName()} is absent in up-sells products."); } }
/** * Assert that redirect from newCategory/oldProduct is correct to new product. * * @param InjectableFixture $product * @param InjectableFixture $initialProduct * @param Browser $browser * @param CatalogProductView $catalogProductView * @return void */ public function processAssert(InjectableFixture $product, InjectableFixture $initialProduct, Browser $browser, CatalogProductView $catalogProductView) { $category = $product->getDataFieldConfig('category_ids')['source']->getProductCategory(); $productUrl = $_ENV['app_frontend_url'] . $category->getUrlKey() . '/' . $initialProduct->getUrlKey() . '.html'; $browser->open($productUrl); \PHPUnit_Framework_Assert::assertEquals($catalogProductView->getViewBlock()->getProductName(), strtoupper($product->getName())); }
/** * 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."); } }
/** * Assertion that the product is correctly displayed in cart. * * @param CatalogProductView $catalogProductView * @param InjectableFixture $product * @param Browser $browser * @param CheckoutCart $checkoutCart * @return void */ public function processAssert(CatalogProductView $catalogProductView, InjectableFixture $product, Browser $browser, CheckoutCart $checkoutCart) { // Add product to cart $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->addToCart($product); // Check price $this->assertOnShoppingCart($product, $checkoutCart); }
/** * Assertion that the product is correctly displayed in cart. * * @param CatalogProductView $catalogProductView * @param InjectableFixture $product * @param Browser $browser * @param CheckoutCart $checkoutCart * @return void */ public function processAssert(CatalogProductView $catalogProductView, InjectableFixture $product, Browser $browser, CheckoutCart $checkoutCart) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->addToCart($product); $checkoutData = $product->getCheckoutData(); $price = $checkoutCart->getCartBlock()->getCartItem($product)->getCartItemTypePrice('price'); \PHPUnit_Framework_Assert::assertEquals($checkoutData['cartItem']['price'], $price, 'Product price in shopping cart is not correct.'); }
/** * 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 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."); } }
/** * Assertion that commodity options are displayed correctly. * * @param CatalogProductView $catalogProductView * @param InjectableFixture $product * @param Browser $browser * @return void */ public function processAssert(CatalogProductView $catalogProductView, InjectableFixture $product, Browser $browser) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $fixtureCustomOptions = $this->prepareOptions($product); $formCustomOptions = $catalogProductView->getViewBlock()->getOptions($product)['custom_options']; $error = $this->verifyData($fixtureCustomOptions, $formCustomOptions); \PHPUnit_Framework_Assert::assertEmpty($error, $error); }
/** * 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 displayed price for bundle items on shopping cart page equals to passed from fixture. * Price for bundle items has two options: * 1. Fixed (price of bundle product) * 2. Dynamic (price of bundle item) * * @param CatalogProductView $catalogProductView * @param BundleProduct $product * @param CheckoutCart $checkoutCartView * @param Browser $browser * @return void */ public function processAssert(CatalogProductView $catalogProductView, BundleProduct $product, CheckoutCart $checkoutCartView, Browser $browser) { $this->product = $product; $checkoutCartView->open()->getCartBlock()->clearShoppingCart(); $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->addToCart($product); //Process assertions $this->assertPrice($checkoutCartView); }
/** * Assert that default qty for sub products in grouped product displays according to dataset on product page. * * @param CatalogProductView $groupedProductView * @param GroupedProduct $product * @param Browser $browser * @return void */ public function processAssert(CatalogProductView $groupedProductView, GroupedProduct $product, Browser $browser) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $pageOptions = $groupedProductView->getViewBlock()->getOptions($product); $fixtureQtyData = $this->prepareFixtureQtyData($product); $pageQtyData = $this->prepareFormQtyData($pageOptions); $error = $this->verifyData($fixtureQtyData, $pageQtyData); \PHPUnit_Framework_Assert::assertEmpty($error, $error); }
/** * Assert that displayed product data on product page(front-end) equals passed from fixture: * 1. Product Name * 2. Price * 3. Special price * 4. SKU * 5. Description * 6. Short Description * * @param Browser $browser * @param CatalogProductView $catalogProductView * @param InjectableFixture $product * @return void */ public function processAssert(Browser $browser, CatalogProductView $catalogProductView, InjectableFixture $product) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $this->product = $product; $this->productView = $catalogProductView->getViewBlock(); $this->catalogProductView = $catalogProductView; $errors = $this->verify(); \PHPUnit_Framework_Assert::assertEmpty($errors, "\nFound the following errors:\n" . implode(" \n", $errors)); }
/** * Assert that Samples links are present on the downloadable product on front-end. * * @param CatalogProductView $productView * @param DownloadableProduct $product * @param Browser $browser * @return void */ public function processAssert(CatalogProductView $productView, DownloadableProduct $product, Browser $browser) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $fixtureSampleLinks = $this->prepareFixtureData($product); $pageOptions = $productView->getViewBlock()->getOptions($product); $pageSampleLinks = isset($pageOptions['downloadable_options']['downloadable_sample']) ? $this->preparePageData($pageOptions['downloadable_options']['downloadable_sample']) : []; $error = $this->verifyData($fixtureSampleLinks, $pageSampleLinks); \PHPUnit_Framework_Assert::assertEmpty($error, $error); }
/** * 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 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 add view review links are present on product page. * * @param Browser $browser * @param CatalogProductView $catalogProductView * @param InjectableFixture $product * @param Review $review * @return void */ public function processAssert(Browser $browser, CatalogProductView $catalogProductView, InjectableFixture $product, Review $review) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); // Verify add review link \PHPUnit_Framework_Assert::assertTrue($catalogProductView->getReviewViewBlock()->getAddReviewLink()->isVisible(), 'Add review link is not visible on product page.'); // Verify view review link $viewReviewLink = $catalogProductView->getReviewViewBlock()->getViewReviewLink($review); \PHPUnit_Framework_Assert::assertTrue($viewReviewLink->isVisible(), 'View review link is not visible on product page.'); \PHPUnit_Framework_Assert::assertContains('1', $viewReviewLink->getText(), 'There is more than 1 approved review.'); }
/** * Assert that displayed gift card data on product page(front-end) equals passed from fixture. * * @param Browser $browser * @param GiftCardProduct $product * @param CatalogProductView $catalogProductView * @return void */ public function processAssert(Browser $browser, GiftCardProduct $product, CatalogProductView $catalogProductView) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $fixtureAmounts = $product->hasData('giftcard_amounts') ? $product->getGiftcardAmounts() : []; $formAmounts = $catalogProductView->getGiftCardBlock()->getAmountValues(); $errors = $this->verifyData($fixtureAmounts, $formAmounts); \PHPUnit_Framework_Assert::assertEmpty($errors, $errors); $errors = $this->verifyFields($catalogProductView, $product, $fixtureAmounts); \PHPUnit_Framework_Assert::assertEmpty($errors, "\nErrors fields: \n" . implode("\n", $errors)); }
/** * Assert that Compare Products block is presented on CMS pages. * Block contains information about compared products. * * @param CmsIndex $cmsIndex * @param FixtureFactory $fixtureFactory * @param Browser $browser * @param array $products * @return void */ public function processAssert(CmsIndex $cmsIndex, FixtureFactory $fixtureFactory, Browser $browser, array $products) { $newCmsPage = $fixtureFactory->createByCode('cmsPage', ['dataSet' => '3_column_template']); $newCmsPage->persist(); $browser->open($_ENV['app_frontend_url'] . $newCmsPage->getIdentifier()); foreach ($products as &$product) { $product = strtolower($product->getName()); } \PHPUnit_Framework_Assert::assertEquals($products, $cmsIndex->getCompareBlock()->getProducts(), 'Compare product block contains NOT valid information about compared products.'); }
/** * Verify product price on grouped product view page. * * @param GroupedProduct $product * @param CatalogProductView $catalogProductView * @param AssertPriceOnProductPageInterface $object * @param Browser $browser * @param string $typePrice [optional] * @return void */ protected function processAssertPrice(GroupedProduct $product, CatalogProductView $catalogProductView, AssertPriceOnProductPageInterface $object, Browser $browser, $typePrice = '') { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $groupedData = $product->getDataFieldConfig('associated')['source']->getProducts(); foreach ($groupedData as $key => $subProduct) { $catalogProductView->getGroupedProductViewBlock()->{'item' . $typePrice . 'PriceProductBlock'}(++$key); $object->setErrorMessage(sprintf($this->errorMessage, $subProduct->getName())); $object->assertPrice($subProduct, $catalogProductView->getGroupedProductViewBlock(), 'Grouped'); } }
/** * Assert that displayed product bundle items data on product page equals passed from fixture preset. * * @param CatalogProductView $catalogProductView * @param BundleProduct $product * @param Browser $browser * @return void */ public function processAssert(CatalogProductView $catalogProductView, BundleProduct $product, Browser $browser) { $this->product = $product; $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $productOptions = $this->prepareBundleOptions(); $formOptions = $catalogProductView->getViewBlock()->getOptions($product)['bundle_options']; $formOptions = $this->prepareFormData($formOptions); $error = $this->verifyData($productOptions, $formOptions); \PHPUnit_Framework_Assert::assertEmpty($error, $error); }
/** * Assert that product available by new URL on the frontend. * * @param Browser $browser * @param UrlRewrite $urlRewrite * @param CatalogProductSimple $product * @param CatalogProductView $catalogProductView * @param CmsIndex $cmsIndex * @param Cache $cachePage * @return void */ public function processAssert(Browser $browser, UrlRewrite $urlRewrite, CatalogProductSimple $product, CatalogProductView $catalogProductView, CmsIndex $cmsIndex, Cache $cachePage) { $cachePage->open()->getPageActions()->flushCacheStorage(); if ($urlRewrite->hasData('store_id')) { $storePath = explode('/', $urlRewrite->getStoreId()); $cmsIndex->open(); $cmsIndex->getHeaderBlock()->selectStore($storePath[2]); } $browser->open($_ENV['app_frontend_url'] . $urlRewrite->getRequestPath()); \PHPUnit_Framework_Assert::assertEquals($catalogProductView->getViewBlock()->getProductName(), strtoupper($product->getName()), 'URL rewrite product redirect false.'); }
/** * Not allowed resources are not available on menu level. * In case if type it via URL - "Access Denied" page appeared. * * @param User $user * @param AdminAuthLogin $adminAuthLogin * @param Dashboard $dashboard * @param Browser $browser * @return void */ public function processAssert(User $user, AdminAuthLogin $adminAuthLogin, Dashboard $dashboard, Browser $browser) { $adminPanelHeader = $dashboard->getAdminPanelHeader(); if ($adminPanelHeader->isVisible()) { $adminPanelHeader->logOut(); } $adminAuthLogin->getLoginBlock()->loginToAdminPanel($user->getData()); $menuItems = $adminPanelHeader->getMenuFirstLevelItems(); \PHPUnit_Framework_Assert::assertTrue(count($menuItems) == 1 && in_array('Sales', $menuItems), 'Sales menu item is not visible or count of menu items is greater than 1.'); $browser->open($_ENV['app_backend_url'] . $this->manageProductsUrl); \PHPUnit_Framework_Assert::assertTrue(strpos($dashboard->getMainBlock()->getMainBlockText(), self::ACCESS_DENIED) !== false, self::ACCESS_DENIED . " text is not visible on dashboard page."); }
/** * 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.'); }