Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
InvoiceRefundCreationArgumentsTest.php
Go to the documentation of this file.
1 <?php
7 
12 use Magento\Sales\Api\Data\CreditmemoCreationArgumentsExtensionInterface;
17 
21 class InvoiceRefundCreationArgumentsTest extends \PHPUnit\Framework\TestCase
22 {
26  private $plugin;
27 
31  private $returnValidatorMock;
32 
36  private $extensionAttributesMock;
37 
41  private $creditmemoCreationArgumentsMock;
42 
46  private $refundInvoiceValidatorMock;
47 
51  private $invoiceMock;
52 
56  private $validateResultMock;
57 
61  private $orderMock;
62 
66  private $creditmemoMock;
67 
68  protected function setUp()
69  {
70  $this->returnValidatorMock = $this->getMockBuilder(ReturnValidator::class)
71  ->disableOriginalConstructor()
72  ->getMock();
73 
74  $this->creditmemoCreationArgumentsMock = $this->getMockBuilder(CreditmemoCreationArgumentsInterface::class)
75  ->disableOriginalConstructor()
76  ->getMock();
77 
78  $this->extensionAttributesMock = $this->getMockBuilder(CreditmemoCreationArgumentsExtensionInterface::class)
79  ->setMethods(['getReturnToStockItems'])
80  ->disableOriginalConstructor()
81  ->getMockForAbstractClass();
82 
83  $this->validateResultMock = $this->getMockBuilder(ValidatorResultInterface::class)
84  ->disableOriginalConstructor()
85  ->getMock();
86 
87  $this->refundInvoiceValidatorMock = $this->getMockBuilder(RefundInvoiceInterface::class)
88  ->disableOriginalConstructor()
89  ->getMock();
90 
91  $this->invoiceMock = $this->getMockBuilder(InvoiceInterface::class)
92  ->disableOriginalConstructor()
93  ->getMock();
94 
95  $this->orderMock = $this->getMockBuilder(OrderInterface::class)
96  ->disableOriginalConstructor()
97  ->getMock();
98 
99  $this->creditmemoMock = $this->getMockBuilder(CreditmemoInterface::class)
100  ->disableOriginalConstructor()
101  ->getMock();
102 
103  $this->plugin = new InvoiceRefundCreationArguments($this->returnValidatorMock);
104  }
105 
109  public function testAfterValidation($erroMessage)
110  {
111  $returnToStockItems = [1];
112  $this->creditmemoCreationArgumentsMock->expects($this->exactly(3))
113  ->method('getExtensionAttributes')
114  ->willReturn($this->extensionAttributesMock);
115 
116  $this->extensionAttributesMock->expects($this->exactly(2))
117  ->method('getReturnToStockItems')
118  ->willReturn($returnToStockItems);
119 
120  $this->returnValidatorMock->expects($this->once())
121  ->method('validate')
122  ->willReturn($erroMessage);
123 
124  $this->validateResultMock->expects($erroMessage ? $this->once() : $this->never())
125  ->method('addMessage')
126  ->with($erroMessage);
127 
128  $this->plugin->afterValidate(
129  $this->refundInvoiceValidatorMock,
130  $this->validateResultMock,
131  $this->invoiceMock,
132  $this->orderMock,
133  $this->creditmemoMock,
134  [],
135  false,
136  false,
137  false,
138  null,
139  $this->creditmemoCreationArgumentsMock
140  );
141  }
142 
146  public function dataProvider()
147  {
148  return [
149  'withErrors' => ['Error!'],
150  'withoutErrors' => ['null'],
151  ];
152  }
153 }