/** * Assert prices on the product view page * * @param CatalogProductView $catalogProductView * @return void */ protected function assertOnProductView(CatalogProductView $catalogProductView) { $viewBlock = $catalogProductView->getViewBlock(); $price = $viewBlock->getProductPriceBlock()->getPrice(); $errorsMessages = ['name' => '- product name on product view page is not correct.', 'sku' => '- product sku on product view page is not correct.', 'regular_price' => '- product regular price on product view page is not correct.', 'short_description' => '- product short description on product view page is not correct.', 'description' => '- product description on product view page is not correct.']; $dataOnPage = ['name' => $viewBlock->getProductName(), 'sku' => $viewBlock->getProductSku(), 'regular_price' => $price['price_regular_price']]; $compareData = ['name' => $this->product->getName(), 'sku' => $this->product->getSku(), 'regular_price' => number_format($this->product->getPrice(), 2)]; if ($productShortDescription = $this->product->getShortDescription()) { $compareData['short_description'] = $productShortDescription; $dataOnPage['short_description'] = $viewBlock->getProductShortDescription(); } if ($productDescription = $this->product->getDescription()) { $compareData['description'] = $productDescription; $dataOnPage['description'] = $viewBlock->getProductDescription(); } $badValues = array_diff($dataOnPage, $compareData); $errorsMessages = array_merge($this->assertSpecialPrice($price), array_intersect_key($errorsMessages, array_keys($badValues))); \PHPUnit_Framework_Assert::assertTrue(empty($errorsMessages), PHP_EOL . 'Found the following errors:' . PHP_EOL . implode(' ' . PHP_EOL, $errorsMessages)); }
/** * Prepare array for assert * * @param CatalogProductView $catalogProductView * @return array */ protected function prepareData(CatalogProductView $catalogProductView) { $viewBlock = $catalogProductView->getViewBlock(); $price = $viewBlock->getProductPriceBlock()->getPrice(); $data = ['onPage' => ['name' => $viewBlock->getProductName(), 'sku' => $viewBlock->getProductSku()], 'fixture' => ['name' => $this->product->getName(), 'sku' => $this->product->getSku()]]; list($priceOnPage, $priceFixture) = $this->preparePrice($price); $data['onPage'] += $priceOnPage; $data['fixture'] += $priceFixture; if ($productShortDescription = $this->product->getShortDescription()) { $data['fixture']['short_description'] = $productShortDescription; $data['onPage']['short_description'] = $viewBlock->getProductShortDescription(); } if ($productDescription = $this->product->getDescription()) { $data['fixture']['description'] = $productDescription; $data['onPage']['description'] = $viewBlock->getProductDescription(); } return $data; }