CouponPostTest.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Checkout\Controller\Cart\Index;
  7. use Magento\Framework\App\Request\Http as HttpRequest;
  8. /**
  9. * @magentoDbIsolation enabled
  10. */
  11. class CouponPostTest extends \Magento\TestFramework\TestCase\AbstractController
  12. {
  13. /**
  14. * Test for \Magento\Checkout\Controller\Cart\CouponPost::execute() with simple product
  15. *
  16. * @magentoDataFixture Magento/Checkout/_files/quote_with_virtual_product_and_address.php
  17. */
  18. public function testExecute()
  19. {
  20. /** @var $session \Magento\Checkout\Model\Session */
  21. $session = $this->_objectManager->create(\Magento\Checkout\Model\Session::class);
  22. $quote = $session->getQuote();
  23. $quote->setData('trigger_recollect', 1)->setTotalsCollectedFlag(true);
  24. $inputData = [
  25. 'remove' => 0,
  26. 'coupon_code' => 'test'
  27. ];
  28. $this->getRequest()->setMethod(HttpRequest::METHOD_POST);
  29. $this->getRequest()->setPostValue($inputData);
  30. $this->dispatch(
  31. 'checkout/cart/couponPost/'
  32. );
  33. $this->assertSessionMessages(
  34. $this->equalTo(['The coupon code &quot;test&quot; is not valid.']),
  35. \Magento\Framework\Message\MessageInterface::TYPE_ERROR
  36. );
  37. }
  38. /**
  39. * Testing by adding a valid coupon to cart
  40. *
  41. * @magentoDataFixture Magento/Checkout/_files/quote_with_virtual_product_and_address.php
  42. * @magentoDataFixture Magento/Usps/Fixtures/cart_rule_coupon_free_shipping.php
  43. * @return void
  44. */
  45. public function testAddingValidCoupon(): void
  46. {
  47. /** @var $session \Magento\Checkout\Model\Session */
  48. $session = $this->_objectManager->create(\Magento\Checkout\Model\Session::class);
  49. $quote = $session->getQuote();
  50. $quote->setData('trigger_recollect', 1)->setTotalsCollectedFlag(true);
  51. $couponCode = 'IMPHBR852R61';
  52. $inputData = [
  53. 'remove' => 0,
  54. 'coupon_code' => $couponCode
  55. ];
  56. $this->getRequest()->setMethod(HttpRequest::METHOD_POST);
  57. $this->getRequest()->setPostValue($inputData);
  58. $this->dispatch(
  59. 'checkout/cart/couponPost/'
  60. );
  61. $this->assertSessionMessages(
  62. $this->equalTo(['You used coupon code &quot;' . $couponCode . '&quot;.']),
  63. \Magento\Framework\Message\MessageInterface::TYPE_SUCCESS
  64. );
  65. }
  66. }