CreditmemoRepositoryTest.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  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;
  7. use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface;
  8. use Magento\Sales\Model\Order\CreditmemoRepository;
  9. /**
  10. * Class CreditmemoRepositoryTest
  11. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  12. */
  13. class CreditmemoRepositoryTest extends \PHPUnit\Framework\TestCase
  14. {
  15. /**
  16. * @var CreditmemoRepository
  17. */
  18. protected $creditmemo;
  19. /**
  20. * @var \Magento\Sales\Model\ResourceModel\Metadata|\PHPUnit_Framework_MockObject_MockObject
  21. */
  22. protected $metadataMock;
  23. /**
  24. * @var \Magento\Sales\Api\Data\CreditmemoSearchResultInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
  25. */
  26. protected $searchResultFactoryMock;
  27. /**
  28. * @var CollectionProcessorInterface|\PHPUnit_Framework_MockObject_MockObject
  29. */
  30. private $collectionProcessorMock;
  31. protected function setUp()
  32. {
  33. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  34. $this->metadataMock = $this->createMock(\Magento\Sales\Model\ResourceModel\Metadata::class);
  35. $this->searchResultFactoryMock = $this->createPartialMock(
  36. \Magento\Sales\Api\Data\CreditmemoSearchResultInterfaceFactory::class,
  37. ['create']
  38. );
  39. $this->collectionProcessorMock = $this->getMockBuilder(CollectionProcessorInterface::class)
  40. ->getMock();
  41. $this->creditmemo = $objectManager->getObject(
  42. \Magento\Sales\Model\Order\CreditmemoRepository::class,
  43. [
  44. 'metadata' => $this->metadataMock,
  45. 'searchResultFactory' => $this->searchResultFactoryMock,
  46. 'collectionProcessor' => $this->collectionProcessorMock,
  47. ]
  48. );
  49. $this->type = $this->createPartialMock(\Magento\Eav\Model\Entity\Type::class, ['fetchNewIncrementId']);
  50. }
  51. public function testGet()
  52. {
  53. $id = 1;
  54. $entity = $this->getMockBuilder(\Magento\Sales\Model\Order\Creditmemo::class)
  55. ->disableOriginalConstructor()
  56. ->getMock();
  57. $entity->expects($this->once())
  58. ->method('load')
  59. ->with($id)
  60. ->willReturn($entity);
  61. $entity->expects($this->once())
  62. ->method('getEntityId')
  63. ->willReturn($id);
  64. $this->metadataMock->expects($this->once())
  65. ->method('getNewInstance')
  66. ->willReturn($entity);
  67. $this->assertEquals($entity, $this->creditmemo->get($id));
  68. //retrieve entity from registry
  69. $this->assertEquals($entity, $this->creditmemo->get($id));
  70. }
  71. /**
  72. * @expectedException \Magento\Framework\Exception\InputException
  73. * @expectedExceptionMessage An ID is needed. Set the ID and try again.
  74. */
  75. public function testGetNoId()
  76. {
  77. $this->creditmemo->get(null);
  78. }
  79. /**
  80. * @expectedException \Magento\Framework\Exception\NoSuchEntityException
  81. * @expectedExceptionMessage The entity that was requested doesn't exist. Verify the entity and try again.
  82. */
  83. public function testGetEntityNoId()
  84. {
  85. $id = 1;
  86. $entity = $this->getMockBuilder(\Magento\Sales\Model\Order\Creditmemo::class)
  87. ->disableOriginalConstructor()
  88. ->getMock();
  89. $entity->expects($this->once())
  90. ->method('load')
  91. ->with($id)
  92. ->willReturn($entity);
  93. $entity->expects($this->once())
  94. ->method('getEntityId')
  95. ->willReturn(null);
  96. $this->metadataMock->expects($this->once())
  97. ->method('getNewInstance')
  98. ->willReturn($entity);
  99. $this->assertNull($entity, $this->creditmemo->get($id));
  100. }
  101. public function testCreate()
  102. {
  103. $entity = $this->getMockBuilder(\Magento\Sales\Model\Order\Creditmemo::class)
  104. ->disableOriginalConstructor()
  105. ->getMock();
  106. $this->metadataMock->expects($this->once())
  107. ->method('getNewInstance')
  108. ->willReturn($entity);
  109. $this->assertEquals($entity, $this->creditmemo->create());
  110. }
  111. public function testGetList()
  112. {
  113. $searchCriteria = $this->getMockBuilder(\Magento\Framework\Api\SearchCriteria::class)
  114. ->disableOriginalConstructor()
  115. ->getMock();
  116. $collection = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Order\Creditmemo\Collection::class)
  117. ->disableOriginalConstructor()
  118. ->getMock();
  119. $this->collectionProcessorMock->expects($this->once())
  120. ->method('process')
  121. ->with($searchCriteria, $collection);
  122. $this->searchResultFactoryMock->expects($this->once())
  123. ->method('create')
  124. ->willReturn($collection);
  125. $this->assertEquals($collection, $this->creditmemo->getList($searchCriteria));
  126. }
  127. public function testDelete()
  128. {
  129. $entity = $this->getMockBuilder(\Magento\Sales\Model\Order\Creditmemo::class)
  130. ->disableOriginalConstructor()
  131. ->getMock();
  132. $entity->expects($this->once())
  133. ->method('getEntityId')
  134. ->willReturn(1);
  135. $mapper = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Order\Creditmemo::class)
  136. ->disableOriginalConstructor()
  137. ->getMock();
  138. $mapper->expects($this->once())
  139. ->method('delete')
  140. ->with($entity);
  141. $this->metadataMock->expects($this->any())
  142. ->method('getMapper')
  143. ->willReturn($mapper);
  144. $this->assertTrue($this->creditmemo->delete($entity));
  145. }
  146. /**
  147. * @expectedException \Magento\Framework\Exception\CouldNotDeleteException
  148. * @expectedExceptionMessage The credit memo couldn't be deleted.
  149. */
  150. public function testDeleteWithException()
  151. {
  152. $entity = $this->getMockBuilder(\Magento\Sales\Model\Order\Creditmemo::class)
  153. ->disableOriginalConstructor()
  154. ->getMock();
  155. $entity->expects($this->never())
  156. ->method('getEntityId');
  157. $mapper = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Order\Creditmemo::class)
  158. ->disableOriginalConstructor()
  159. ->getMock();
  160. $mapper->expects($this->once())
  161. ->method('delete')
  162. ->willThrowException(new \Exception('error'));
  163. $this->metadataMock->expects($this->any())
  164. ->method('getMapper')
  165. ->willReturn($mapper);
  166. $this->creditmemo->delete($entity);
  167. }
  168. public function testSave()
  169. {
  170. $entity = $this->getMockBuilder(\Magento\Sales\Model\Order\Creditmemo::class)
  171. ->disableOriginalConstructor()
  172. ->getMock();
  173. $entity->expects($this->any())
  174. ->method('getEntityId')
  175. ->willReturn(1);
  176. $mapper = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Order\Creditmemo::class)
  177. ->disableOriginalConstructor()
  178. ->getMock();
  179. $mapper->expects($this->once())
  180. ->method('save')
  181. ->with($entity);
  182. $this->metadataMock->expects($this->any())
  183. ->method('getMapper')
  184. ->willReturn($mapper);
  185. $this->assertEquals($entity, $this->creditmemo->save($entity));
  186. }
  187. /**
  188. * @expectedException \Magento\Framework\Exception\CouldNotSaveException
  189. * @expectedExceptionMessage The credit memo couldn't be saved.
  190. */
  191. public function testSaveWithException()
  192. {
  193. $entity = $this->getMockBuilder(\Magento\Sales\Model\Order\Creditmemo::class)
  194. ->disableOriginalConstructor()
  195. ->getMock();
  196. $entity->expects($this->never())
  197. ->method('getEntityId');
  198. $mapper = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Order\Creditmemo::class)
  199. ->disableOriginalConstructor()
  200. ->getMock();
  201. $mapper->expects($this->once())
  202. ->method('save')
  203. ->willThrowException(new \Exception('error'));
  204. $this->metadataMock->expects($this->any())
  205. ->method('getMapper')
  206. ->willReturn($mapper);
  207. $this->assertEquals($entity, $this->creditmemo->save($entity));
  208. }
  209. }