AddSalesRuleNameToOrderObserverTest.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\SalesRule\Test\Unit\Observer;
  7. class AddSalesRuleNameToOrderObserverTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\SalesRule\Observer\AddSalesRuleNameToOrderObserver|\PHPUnit_Framework_MockObject_MockObject
  11. */
  12. protected $model;
  13. /**
  14. * @var \Magento\SalesRule\Model\Coupon|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $couponMock;
  17. /**
  18. * @var \Magento\SalesRule\Model\RuleFactory|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $ruleFactory;
  21. protected function setUp()
  22. {
  23. $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  24. $this->initMocks();
  25. $this->model = $helper->getObject(
  26. \Magento\SalesRule\Observer\AddSalesRuleNameToOrderObserver::class,
  27. [
  28. 'ruleFactory' => $this->ruleFactory,
  29. 'coupon' => $this->couponMock,
  30. ]
  31. );
  32. }
  33. protected function initMocks()
  34. {
  35. $this->couponMock = $this->createPartialMock(\Magento\SalesRule\Model\Coupon::class, [
  36. '__wakeup',
  37. 'save',
  38. 'load',
  39. 'getId',
  40. 'setTimesUsed',
  41. 'getTimesUsed',
  42. 'getRuleId',
  43. 'loadByCode',
  44. 'updateCustomerCouponTimesUsed'
  45. ]);
  46. $this->ruleFactory = $this->createPartialMock(\Magento\SalesRule\Model\RuleFactory::class, ['create']);
  47. }
  48. public function testAddSalesRuleNameToOrderWithoutCouponCode()
  49. {
  50. $observer = $this->createPartialMock(\Magento\Framework\Event\Observer::class, ['getOrder']);
  51. $order = $this->createPartialMock(
  52. \Magento\Sales\Model\Order::class,
  53. ['setCouponRuleName', 'getCouponCode', '__wakeup']
  54. );
  55. $observer->expects($this->any())
  56. ->method('getOrder')
  57. ->will($this->returnValue($order));
  58. $this->couponMock->expects($this->never())
  59. ->method('loadByCode');
  60. $this->assertEquals($this->model, $this->model->execute($observer));
  61. }
  62. public function testAddSalesRuleNameToOrderWithoutRule()
  63. {
  64. $observer = $this->createPartialMock(\Magento\Framework\Event\Observer::class, ['getOrder']);
  65. $order = $this->createPartialMock(
  66. \Magento\Sales\Model\Order::class,
  67. ['setCouponRuleName', 'getCouponCode', '__wakeup']
  68. );
  69. $couponCode = 'coupon code';
  70. $observer->expects($this->any())
  71. ->method('getOrder')
  72. ->will($this->returnValue($order));
  73. $order->expects($this->once())
  74. ->method('getCouponCode')
  75. ->will($this->returnValue($couponCode));
  76. $this->ruleFactory->expects($this->never())
  77. ->method('create');
  78. $this->assertEquals($this->model, $this->model->execute($observer));
  79. }
  80. public function testAddSalesRuleNameToOrder()
  81. {
  82. $observer = $this->createPartialMock(\Magento\Framework\Event\Observer::class, ['getOrder']);
  83. $rule = $this->createPartialMock(\Magento\SalesRule\Model\Rule::class, ['load', 'getName', '__wakeup']);
  84. $order = $this->createPartialMock(
  85. \Magento\Sales\Model\Order::class,
  86. ['setCouponRuleName', 'getCouponCode', '__wakeup']
  87. );
  88. $couponCode = 'coupon code';
  89. $ruleId = 1;
  90. $observer->expects($this->any())
  91. ->method('getOrder')
  92. ->will($this->returnValue($order));
  93. $order->expects($this->once())
  94. ->method('getCouponCode')
  95. ->will($this->returnValue($couponCode));
  96. $this->couponMock->expects($this->once())
  97. ->method('getRuleId')
  98. ->will($this->returnValue($ruleId));
  99. $this->ruleFactory->expects($this->once())
  100. ->method('create')
  101. ->will($this->returnValue($rule));
  102. $rule->expects($this->once())
  103. ->method('load')
  104. ->with($ruleId)
  105. ->will($this->returnSelf());
  106. $order->expects($this->once())
  107. ->method('setCouponRuleName');
  108. $this->assertEquals($this->model, $this->model->execute($observer));
  109. }
  110. }