BaseTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Pricing\Test\Unit\Amount;
  7. use Magento\Framework\Pricing\Amount\Base;
  8. /**
  9. * Class BaseTest
  10. *
  11. */
  12. class BaseTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /**
  15. * Test getValue() without exclude argument
  16. */
  17. public function testGetValueWithoutExclude()
  18. {
  19. $amount = 1;
  20. $adjustments = [];
  21. $exclude = null;
  22. $model = $this->createEntity($amount, $adjustments);
  23. $result = $model->getValue($exclude);
  24. $this->assertEquals($amount, $result);
  25. }
  26. /**
  27. * Test getValue() with exclude argument
  28. */
  29. public function testGetValueWithExclude()
  30. {
  31. $amount = 1;
  32. $code = 'test_adjustment';
  33. $adjust = 5;
  34. $adjustments = [$code => $adjust];
  35. $expected = $amount - $adjust;
  36. $model = $this->createEntity($amount, $adjustments);
  37. $result = $model->getValue($code);
  38. $this->assertEquals($expected, $result);
  39. }
  40. /**
  41. * Test __toString()
  42. */
  43. public function testToString()
  44. {
  45. $amount = 1;
  46. $adjustments = [];
  47. $model = $this->createEntity($amount, $adjustments);
  48. $result = (string)$model;
  49. $this->assertEquals($amount, $result);
  50. }
  51. /**
  52. * Test getBaseAmount()
  53. */
  54. public function testGetBaseAmount()
  55. {
  56. $amount = 1;
  57. $adjustments = [];
  58. $model = $this->createEntity($amount, $adjustments);
  59. $result = $model->getBaseAmount();
  60. $this->assertEquals($amount, $result);
  61. }
  62. /**
  63. * Test getAdjustmentAmount() if no adjustment amounts
  64. */
  65. public function testGetAdjustmentAmountNoAdjustments()
  66. {
  67. $amount = 1;
  68. $adjustments = [];
  69. $model = $this->createEntity($amount, $adjustments);
  70. $result = $model->getAdjustmentAmount('some_code');
  71. $this->assertFalse($result);
  72. }
  73. /**
  74. * Test getAdjustmentAmount() if adjustment amount exists
  75. */
  76. public function testGetAdjustmentAmountWithAdjustments()
  77. {
  78. $amount = 1;
  79. $code = 'test_code';
  80. $adjust = 10;
  81. $adjustments = [$code => $adjust];
  82. $model = $this->createEntity($amount, $adjustments);
  83. $result = $model->getAdjustmentAmount($code);
  84. $this->assertEquals($adjust, $result);
  85. }
  86. /**
  87. * Test getTotalAdjustmentAmount()
  88. */
  89. public function testGetTotalAdjustmentAmount()
  90. {
  91. $amount = 1;
  92. $adjust1 = 10;
  93. $adjust2 = 5;
  94. $expected = $adjust1 + $adjust2;
  95. $adjustments = [
  96. 'test_code1' => $adjust1,
  97. 'test_code2' => $adjust2,
  98. ];
  99. $model = $this->createEntity($amount, $adjustments);
  100. $result = $model->getTotalAdjustmentAmount();
  101. $this->assertEquals($expected, $result);
  102. }
  103. /**
  104. * Test getAdjustmentAmounts()
  105. */
  106. public function testGetAdjustmentAmounts()
  107. {
  108. $amount = 1;
  109. $adjust = 5;
  110. $adjustments = [
  111. 'test_code1' => $adjust,
  112. ];
  113. $model = $this->createEntity($amount, $adjustments);
  114. $result = $model->getAdjustmentAmounts();
  115. $this->assertEquals($adjustments, $result);
  116. }
  117. /**
  118. * Test getAdjustmentAmounts()
  119. */
  120. public function testHasAdjustment()
  121. {
  122. $amount = 1;
  123. $adjust = 5;
  124. $code = 'test_code1';
  125. $adjustments = [
  126. $code => $adjust,
  127. ];
  128. $model = $this->createEntity($amount, $adjustments);
  129. $result = $model->hasAdjustment($code);
  130. $this->assertTrue($result);
  131. }
  132. /**
  133. * Return instance of tested model
  134. *
  135. * @param string $amount
  136. * @param array $adjustmentAmounts
  137. * @return Base
  138. */
  139. protected function createEntity($amount, array $adjustmentAmounts = [])
  140. {
  141. return new \Magento\Framework\Pricing\Amount\Base($amount, $adjustmentAmounts);
  142. }
  143. }