123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- /**
- * Test class for \Magento\Checkout\Controller\Cart
- */
- namespace Magento\ConfigurableProduct\Controller;
- use Magento\Framework\App\Request\Http as HttpRequest;
- class CartTest extends \Magento\TestFramework\TestCase\AbstractController
- {
- /**
- * Test for \Magento\Checkout\Controller\Cart::configureAction() with configurable product
- *
- * @magentoDataFixture Magento/ConfigurableProduct/_files/quote_with_configurable_product.php
- */
- public function testConfigureActionWithConfigurableProduct()
- {
- /** @var $session \Magento\Checkout\Model\Session */
- $session = $this->_objectManager->create(\Magento\Checkout\Model\Session::class);
- $quoteItem = $this->_getQuoteItemIdByProductId($session->getQuote(), 1);
- $this->assertNotNull($quoteItem, 'Cannot get quote item for configurable product');
- $this->dispatch(
- 'checkout/cart/configure/id/' . $quoteItem->getId() . '/product_id/' . $quoteItem->getProduct()->getId()
- );
- $response = $this->getResponse();
- $this->assertSessionMessages($this->isEmpty(), \Magento\Framework\Message\MessageInterface::TYPE_ERROR);
- $this->assertEquals(
- 1,
- \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
- '//button[@type="submit" and @title="Update Cart"]',
- $response->getBody()
- ),
- 'Response for configurable product doesn\'t contain "Update Cart" button'
- );
- $this->assertEquals(
- 1,
- \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
- '//select[contains(@class,"super-attribute-select")]',
- $response->getBody()
- ),
- 'Response for configurable product doesn\'t contain select for super attribute'
- );
- }
- /**
- * Gets \Magento\Quote\Model\Quote\Item from \Magento\Quote\Model\Quote by product id
- *
- * @param \Magento\Quote\Model\Quote $quote
- * @param mixed $productId
- * @return \Magento\Quote\Model\Quote\Item|null
- */
- private function _getQuoteItemIdByProductId(\Magento\Quote\Model\Quote $quote, $productId)
- {
- /** @var $quoteItems \Magento\Quote\Model\Quote\Item[] */
- $quoteItems = $quote->getAllItems();
- foreach ($quoteItems as $quoteItem) {
- if ($productId == $quoteItem->getProductId()) {
- return $quoteItem;
- }
- }
- return null;
- }
- /**
- * Test for \Magento\Checkout\Controller\Cart\CouponPost::execute() with configurable product with last option
- * Covers MAGETWO-60352
- *
- * @magentoDataFixture Magento/ConfigurableProduct/_files/quote_with_configurable_product_last_variation.php
- */
- public function testExecuteForConfigurableLastOption()
- {
- /** @var $session \Magento\Checkout\Model\Session */
- $session = $this->_objectManager->create(\Magento\Checkout\Model\Session::class);
- $quote = $session->getQuote();
- $quote->setData('trigger_recollect', 1)->setTotalsCollectedFlag(true);
- $inputData = [
- 'remove' => 0,
- 'coupon_code' => 'test'
- ];
- $this->getRequest()->setMethod(HttpRequest::METHOD_POST);
- $this->getRequest()->setPostValue($inputData);
- $this->dispatch(
- 'checkout/cart/couponPost/'
- );
- $this->assertSessionMessages(
- $this->equalTo(['The coupon code "test" is not valid.']),
- \Magento\Framework\Message\MessageInterface::TYPE_ERROR
- );
- }
- }
|