/** * Check whether there is an opportunity to compare products using given attribute. * * @param InjectableFixture $product * @param CatalogProductAttribute $attribute * @param BrowserInterface $browser * @param CatalogProductView $catalogProductView * @param CatalogProductCompare $catalogProductCompare */ public function processAssert(InjectableFixture $product, CatalogProductAttribute $attribute, BrowserInterface $browser, CatalogProductView $catalogProductView, CatalogProductCompare $catalogProductCompare) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $catalogProductView->getViewBlock()->clickAddToCompare(); $catalogProductCompare->open(); $label = $attribute->hasData('manage_frontend_label') ? $attribute->getManageFrontendLabel() : $attribute->getFrontendLabel(); \PHPUnit_Framework_Assert::assertTrue(in_array($label, $catalogProductCompare->getCompareProductsBlock()->getComparableAttributes()), 'Attribute is absent on product compare page.'); }
/** * Clear data after test. * * @return void */ public function tearDown() { $this->cmsIndex->open(); $this->cmsIndex->getLinksBlock()->openLink("Compare Products"); for ($i = 1; $i <= count($this->products); $i++) { $this->catalogProductCompare->getCompareProductsBlock()->removeProduct(); } }
/** * Clear data after test. * * @return void */ public function tearDown() { if (count($this->products) > 1) { $this->cmsIndex->open(); $this->cmsIndex->getLinksBlock()->openLink("Compare Products"); $this->catalogProductCompare->getCompareProductsBlock()->removeAllProducts(); } }
/** * Assert the product is not displayed on Compare Products page * * @param CatalogProductCompare $comparePage * @param FixtureInterface $product * @param int $countProducts [optional] * @return void */ public function processAssert(CatalogProductCompare $comparePage, FixtureInterface $product, $countProducts = 0) { $comparePage->open(); $compareBlock = $comparePage->getCompareProductsBlock(); if ($countProducts > 1) { \PHPUnit_Framework_Assert::assertFalse($compareBlock->isProductVisibleInCompareBlock($product->getName()), 'The product displays on Compare Products page.'); } else { \PHPUnit_Framework_Assert::assertEquals(self::SUCCESS_MESSAGE, $compareBlock->getEmptyMessage(), 'The product displays on Compare Products page.'); } }
/** * Assert that "Compare Product" page contains product(s) that was added * - Product name * - Price * - SKU * - Description (if exists, else text "No") * - Short Description (if exists, else text "No") * * @param array $products * @param CatalogProductCompare $comparePage * @param CmsIndex $cmsIndex * @return void * * @SuppressWarnings(PHPMD.NPathComplexity) */ public function processAssert(array $products, CatalogProductCompare $comparePage, CmsIndex $cmsIndex) { $cmsIndex->open(); $cmsIndex->getLinksBlock()->openLink("Compare Products"); foreach ($products as $key => $product) { foreach ($this->attributeProduct as $attributeKey => $attribute) { $value = $attribute; $attribute = is_numeric($attributeKey) ? $attribute : $attributeKey; $attributeValue = $attribute != 'price' ? $product->hasData($attribute) ? $product->getData($attribute) : 'N/A' : ($product->getDataFieldConfig('price')['source']->getPreset() !== null ? $product->getDataFieldConfig('price')['source']->getPreset()['compare_price'] : number_format($product->getPrice(), 2)); $attribute = is_numeric($attributeKey) ? 'info' : 'attribute'; \PHPUnit_Framework_Assert::assertEquals($attributeValue, $comparePage->getCompareProductsBlock()->{'getProduct' . ucfirst($attribute)}($key + 1, $value), 'Product "' . $product->getName() . '" is\'n equals with data from fixture.'); } } }
/** * Move recently compared products on order page. * * @param Customer $customer * @param string $products * @return array */ public function test(Customer $customer, $products) { // Preconditions // Create product $products = $this->objectManager->create('\\Magento\\Catalog\\Test\\TestStep\\CreateProductsStep', ['products' => $products])->run()['products']; foreach ($products as $itemProduct) { $this->browser->open($_ENV['app_frontend_url'] . $itemProduct->getUrlKey() . '.html'); $this->catalogProductView->getViewBlock()->clickAddToCompare(); } $this->cmsIndex->getLinksBlock()->openLink("Compare Products"); $this->catalogProductCompare->getCompareProductsBlock()->removeAllProducts(); // Steps: $this->customerIndex->open(); $this->customerIndex->getCustomerGridBlock()->searchAndOpen(['email' => $customer->getEmail()]); $this->customerIndexEdit->getPageActionsBlock()->createOrder(); $this->orderCreateIndex->getStoreBlock()->selectStoreView(); $activitiesBlock = $this->orderCreateIndex->getCustomerActivitiesBlock(); $activitiesBlock->getRecentlyComparedProductsBlock()->addProductsToOrder($products); $activitiesBlock->updateChanges(); return ['products' => $products, 'productsIsConfigured' => false]; }
/** * Assert message is appeared on "Compare Products" block on myAccount page * * @param CatalogProductCompare $catalogProductCompare * @param FixtureInterface $product * @return void */ public function processAssert(CatalogProductCompare $catalogProductCompare, FixtureInterface $product) { $successMessage = sprintf(self::SUCCESS_MESSAGE, $product->getName()); $actualMessage = $catalogProductCompare->getMessagesBlock()->getSuccessMessage(); \PHPUnit_Framework_Assert::assertEquals($successMessage, $actualMessage, 'Wrong success message is displayed.'); }
/** * Remove compare product * * @return void */ protected function removeCompareProducts() { $this->cmsIndex->open(); $this->cmsIndex->getLinksBlock()->openLink("Compare Products"); $this->catalogProductCompare->getCompareProductsBlock()->removeAllProducts(); }
/** * After removing last product message is appeared on "Compare Products" page * * @param CatalogProductCompare $comparePage * @return void */ public function processAssert(CatalogProductCompare $comparePage) { $comparePage->open(); $actualMessage = $comparePage->getCompareProductsBlock()->getEmptyMessage(); \PHPUnit_Framework_Assert::assertEquals(self::SUCCESS_MESSAGE, $actualMessage, 'Wrong success message is displayed.' . "\nExpected: " . self::SUCCESS_MESSAGE . "\nActual: " . $actualMessage); }