CanRefundTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Test\Unit\Model\Order\Validation;
  7. use Magento\Sales\Model\Order;
  8. /**
  9. * Class CanRefundTest
  10. */
  11. class CanRefundTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var \Magento\Sales\Model\Order\Validation\CanRefund|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. private $model;
  17. /**
  18. * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
  19. */
  20. private $objectManager;
  21. /**
  22. * @var \Magento\Sales\Api\Data\OrderInterface|\PHPUnit_Framework_MockObject_MockObject
  23. */
  24. private $orderMock;
  25. /**
  26. * @var \Magento\Framework\Pricing\PriceCurrencyInterface|\PHPUnit_Framework_MockObject_MockObject
  27. */
  28. private $priceCurrencyMock;
  29. protected function setUp()
  30. {
  31. $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  32. $this->orderMock = $this->getMockBuilder(\Magento\Sales\Api\Data\OrderInterface::class)
  33. ->disableOriginalConstructor()
  34. ->setMethods(['getStatus', 'getItems'])
  35. ->getMockForAbstractClass();
  36. $this->priceCurrencyMock = $this->getMockBuilder(\Magento\Framework\Pricing\PriceCurrencyInterface::class)
  37. ->disableOriginalConstructor()
  38. ->getMockForAbstractClass();
  39. $this->priceCurrencyMock->expects($this->any())
  40. ->method('round')
  41. ->willReturnArgument(0);
  42. $this->model = new \Magento\Sales\Model\Order\Validation\CanRefund(
  43. $this->priceCurrencyMock
  44. );
  45. }
  46. /**
  47. * @param string $state
  48. *
  49. * @dataProvider canCreditmemoWrongStateDataProvider
  50. */
  51. public function testCanCreditmemoWrongState($state)
  52. {
  53. $this->orderMock->expects($this->any())
  54. ->method('getState')
  55. ->willReturn($state);
  56. $this->orderMock->expects($this->once())
  57. ->method('getStatus')
  58. ->willReturn('status');
  59. $this->orderMock->expects($this->never())
  60. ->method('getTotalPaid')
  61. ->willReturn(15);
  62. $this->orderMock->expects($this->never())
  63. ->method('getTotalRefunded')
  64. ->willReturn(14);
  65. $this->assertEquals(
  66. [__('A creditmemo can not be created when an order has a status of %1', 'status')],
  67. $this->model->validate($this->orderMock)
  68. );
  69. }
  70. /**
  71. * Data provider for testCanCreditmemoWrongState
  72. * @return array
  73. */
  74. public function canCreditmemoWrongStateDataProvider()
  75. {
  76. return [
  77. [Order::STATE_PAYMENT_REVIEW],
  78. [Order::STATE_HOLDED],
  79. [Order::STATE_CANCELED],
  80. [Order::STATE_CLOSED],
  81. ];
  82. }
  83. public function testCanCreditmemoNoMoney()
  84. {
  85. $this->orderMock->expects($this->any())
  86. ->method('getState')
  87. ->willReturn(Order::STATE_PROCESSING);
  88. $this->orderMock->expects($this->once())
  89. ->method('getTotalPaid')
  90. ->willReturn(15);
  91. $this->orderMock->expects($this->once())
  92. ->method('getTotalRefunded')
  93. ->willReturn(15);
  94. $this->assertEquals(
  95. [
  96. __('The order does not allow a creditmemo to be created.')
  97. ],
  98. $this->model->validate($this->orderMock)
  99. );
  100. }
  101. }