AbstractItemTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Quote\Test\Unit\Model\Quote\Item;
  7. /**
  8. * Class AbstractItemTest
  9. */
  10. class AbstractItemTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * Test the getTotalDiscountAmount function
  14. *
  15. * @param float|int $expectedDiscountAmount
  16. * @param array $children
  17. * @param bool $calculated
  18. * @param float|int $myDiscountAmount
  19. * @dataProvider dataProviderGetTotalDiscountAmount
  20. */
  21. public function testGetTotalDiscountAmount($expectedDiscountAmount, $children, $calculated, $myDiscountAmount)
  22. {
  23. $abstractItemMock = $this->getMockForAbstractClass(
  24. \Magento\Quote\Model\Quote\Item\AbstractItem::class,
  25. [],
  26. '',
  27. false,
  28. false,
  29. true,
  30. ['getChildren', 'isChildrenCalculated', 'getDiscountAmount']
  31. );
  32. $abstractItemMock->expects($this->any())
  33. ->method('getChildren')
  34. ->will($this->returnValue($children));
  35. $abstractItemMock->expects($this->any())
  36. ->method('isChildrenCalculated')
  37. ->will($this->returnValue($calculated));
  38. $abstractItemMock->expects($this->any())
  39. ->method('getDiscountAmount')
  40. ->will($this->returnValue($myDiscountAmount));
  41. $totalDiscountAmount = $abstractItemMock->getTotalDiscountAmount();
  42. $this->assertEquals($expectedDiscountAmount, $totalDiscountAmount);
  43. }
  44. /**
  45. * @return array
  46. */
  47. public function dataProviderGetTotalDiscountAmount()
  48. {
  49. $childOneDiscountAmount = 1000;
  50. $childOneItemMock = $this->getMockForAbstractClass(
  51. \Magento\Quote\Model\Quote\Item\AbstractItem::class,
  52. [],
  53. '',
  54. false,
  55. false,
  56. true,
  57. ['getDiscountAmount']
  58. );
  59. $childOneItemMock->expects($this->any())
  60. ->method('getDiscountAmount')
  61. ->will($this->returnValue($childOneDiscountAmount));
  62. $childTwoDiscountAmount = 50;
  63. $childTwoItemMock = $this->getMockForAbstractClass(
  64. \Magento\Quote\Model\Quote\Item\AbstractItem::class,
  65. [],
  66. '',
  67. false,
  68. false,
  69. true,
  70. ['getDiscountAmount']
  71. );
  72. $childTwoItemMock->expects($this->any())
  73. ->method('getDiscountAmount')
  74. ->will($this->returnValue($childTwoDiscountAmount));
  75. $valueHasNoEffect = 0;
  76. $data = [
  77. 'no_children' => [
  78. 10,
  79. [],
  80. false,
  81. 10,
  82. ],
  83. 'kids_but_not_calculated' => [
  84. 10,
  85. [$childOneItemMock],
  86. false,
  87. 10,
  88. ],
  89. 'one_kid' => [
  90. $childOneDiscountAmount,
  91. [$childOneItemMock],
  92. true,
  93. $valueHasNoEffect,
  94. ],
  95. 'two_kids' => [
  96. $childOneDiscountAmount + $childTwoDiscountAmount,
  97. [$childOneItemMock, $childTwoItemMock],
  98. true,
  99. $valueHasNoEffect,
  100. ],
  101. ];
  102. return $data;
  103. }
  104. }