/** * Assert prices on the shopping cart * * @param FixtureInterface $product * @param CheckoutCart $checkoutCart * @return void * * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function assertOnShoppingCart(FixtureInterface $product, CheckoutCart $checkoutCart) { $checkoutCart->open(); /** @var CatalogProductSimple $product */ $customOptions = $product->getCustomOptions(); $checkoutData = $product->getCheckoutData(); $checkoutCartItem = isset($checkoutData['cartItem']) ? $checkoutData['cartItem'] : []; $checkoutCustomOptions = isset($checkoutData['options']['custom_options']) ? $checkoutData['options']['custom_options'] : []; $fixturePrice = $product->getPrice(); $specialPrice = $product->getSpecialPrice(); $cartItem = $checkoutCart->getCartBlock()->getCartItem($product); $formPrice = $cartItem->getPrice(); if ($specialPrice) { $fixturePrice = $specialPrice; } if (isset($checkoutCartItem['price'])) { $fixturePrice = $checkoutCartItem['price']; } $fixtureActualPrice = $fixturePrice; foreach ($checkoutCustomOptions as $checkoutOption) { $attributeKey = str_replace('attribute_key_', '', $checkoutOption['title']); $optionKey = str_replace('option_key_', '', $checkoutOption['value']); $option = $customOptions[$attributeKey]['options'][$optionKey]; if ('Fixed' == $option['price_type']) { $fixtureActualPrice += $option['price']; } else { $fixtureActualPrice += $fixturePrice / 100 * $option['price']; } } \PHPUnit_Framework_Assert::assertEquals($fixtureActualPrice, $formPrice, 'Product price in shopping cart is not correct.'); }
/** * Verify displayed product special price on product page(front-end) equals passed from fixture * * @return string|null */ protected function verifySpecialPrice() { if (!$this->product->hasData('special_price')) { return null; } $fixtureProductSpecialPrice = $this->product->getSpecialPrice(); $fixtureProductSpecialPrice = number_format($fixtureProductSpecialPrice, 2); $formProductSpecialPrice = $this->productView->getPriceBlock()->getSpecialPrice(); if ($fixtureProductSpecialPrice == $formProductSpecialPrice) { return null; } return "Displayed product special price on product page(front-end) not equals passed from fixture. " . "Actual: {$formProductSpecialPrice}, expected: {$fixtureProductSpecialPrice}."; }