CartTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Tax\Test\Unit\Plugin\Checkout\CustomerData;
  7. use Magento\Checkout\CustomerData\Cart as CheckoutCart;
  8. use Magento\Checkout\Helper\Data;
  9. use Magento\Checkout\Model\Session;
  10. use Magento\Quote\Model\Quote;
  11. use Magento\Quote\Model\Quote\Item;
  12. use Magento\Tax\Block\Item\Price\Renderer;
  13. use Magento\Tax\Plugin\Checkout\CustomerData\Cart;
  14. use PHPUnit\Framework\TestCase;
  15. use PHPUnit_Framework_MockObject_MockObject as MockObject;
  16. class CartTest extends TestCase
  17. {
  18. /**
  19. * @var Session|MockObject
  20. */
  21. private $checkoutSession;
  22. /**
  23. * @var Data|MockObject
  24. */
  25. private $checkoutHelper;
  26. /**
  27. * @var Renderer|MockObject
  28. */
  29. private $itemPriceRenderer;
  30. /**
  31. * @var CheckoutCart|MockObject
  32. */
  33. private $checkoutCart;
  34. /**
  35. * @var Quote|MockObject
  36. */
  37. private $quote;
  38. /**
  39. * @var Cart
  40. */
  41. private $cart;
  42. protected function setUp()
  43. {
  44. $this->checkoutSession = $this->createMock(Session::class);
  45. $this->checkoutHelper = $this->createMock(Data::class);
  46. $this->itemPriceRenderer = $this->createMock(Renderer::class);
  47. $this->checkoutCart = $this->createMock(CheckoutCart::class);
  48. $this->quote = $this->createMock(Quote::class);
  49. $this->checkoutSession->method('getQuote')
  50. ->willReturn($this->quote);
  51. $this->cart = new Cart(
  52. $this->checkoutSession,
  53. $this->checkoutHelper,
  54. $this->itemPriceRenderer
  55. );
  56. }
  57. public function testAfterGetSectionData()
  58. {
  59. $input = ['items' => [
  60. [
  61. 'item_id' => 1,
  62. 'product_price' => ''
  63. ],
  64. [
  65. 'item_id' => 2,
  66. 'product_price' => ''
  67. ],
  68. ]
  69. ];
  70. $this->checkoutHelper->method('formatPrice')
  71. ->willReturn('formatted');
  72. $item1 = $this->createMock(Item::class);
  73. $item2 = $this->createMock(Item::class);
  74. $item1->method('getItemId')
  75. ->willReturn(1);
  76. $item2->method('getItemId')
  77. ->willReturn(2);
  78. $this->quote->method('getAllVisibleItems')
  79. ->willReturn([
  80. $item1,
  81. $item2,
  82. ]);
  83. $this->itemPriceRenderer->method('toHtml')
  84. ->willReturn(1);
  85. $result = $this->cart->afterGetSectionData($this->checkoutCart, $input);
  86. self::assertArrayHasKey('subtotal_incl_tax', $result);
  87. self::assertArrayHasKey('subtotal_excl_tax', $result);
  88. self::assertArrayHasKey('items', $result);
  89. self::assertTrue(is_array($result['items']));
  90. self::assertEquals(2, count($result['items']));
  91. self::assertEquals(1, $result['items'][0]['product_price']);
  92. self::assertEquals(1, $result['items'][1]['product_price']);
  93. }
  94. }