PaymentTokenRepositoryTest.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Vault\Test\Unit\Model;
  7. use Magento\Framework\Api\FilterBuilder;
  8. use Magento\Framework\Api\SearchCriteria;
  9. use Magento\Framework\Api\SearchCriteriaBuilder;
  10. use Magento\Framework\Api\SearchResults;
  11. use Magento\Vault\Api\Data\PaymentTokenSearchResultsInterfaceFactory;
  12. use Magento\Vault\Model\PaymentToken;
  13. use Magento\Vault\Model\PaymentTokenFactory;
  14. use Magento\Vault\Model\PaymentTokenRepository;
  15. use Magento\Vault\Model\ResourceModel\PaymentToken as PaymentTokenResourceModel;
  16. use Magento\Vault\Model\ResourceModel\PaymentToken\Collection;
  17. use Magento\Vault\Model\ResourceModel\PaymentToken\CollectionFactory;
  18. use PHPUnit_Framework_MockObject_MockObject as MockObject;
  19. /**
  20. * Class PaymentTokenRepositoryTest
  21. * @package Magento\Vault\Test\Unit\Model
  22. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  23. */
  24. class PaymentTokenRepositoryTest extends \PHPUnit\Framework\TestCase
  25. {
  26. const PUBLIC_HASH = 'hash';
  27. /**
  28. * @var \Magento\Vault\Model\PaymentTokenRepository|MockObject resourceModelMock
  29. */
  30. protected $repositoryModel;
  31. /**
  32. * @var \Magento\Vault\Model\ResourceModel\PaymentToken|MockObject resourceModelMock
  33. */
  34. protected $resourceModelMock;
  35. /**
  36. * @var \Magento\Vault\Model\PaymentTokenFactory|MockObject paymentTokenFactoryMock
  37. */
  38. protected $paymentTokenFactoryMock;
  39. /**
  40. * @var \Magento\Vault\Model\PaymentToken|MockObject paymentTokenMock
  41. */
  42. protected $paymentTokenMock;
  43. /**
  44. * @var \Magento\Framework\Api\FilterBuilder|MockObject filterBuilderMock
  45. */
  46. protected $filterBuilderMock;
  47. /**
  48. * @var \Magento\Framework\Api\SearchCriteriaBuilder|MockObject searchCriteriaBuilder
  49. */
  50. protected $searchCriteriaBuilderMock;
  51. /**
  52. * @var \Magento\Framework\Api\SearchCriteria|MockObject searchCriteriaMock
  53. */
  54. protected $searchCriteriaMock;
  55. /**
  56. * @var \Magento\Vault\Api\Data\PaymentTokenSearchResultsInterfaceFactory|MockObject searchResultsFactoryMock
  57. */
  58. protected $searchResultsFactoryMock;
  59. /**
  60. * @var \Magento\Framework\Api\SearchResults searchResults
  61. */
  62. protected $searchResults;
  63. /**
  64. * @var \Magento\Vault\Model\ResourceModel\PaymentToken\CollectionFactory|MockObject collectionFactoryMock
  65. */
  66. protected $collectionFactoryMock;
  67. /**
  68. * @var \Magento\Vault\Model\ResourceModel\PaymentToken\Collection|MockObject collection
  69. */
  70. protected $collectionMock;
  71. /**
  72. * @var \PHPUnit_Framework_MockObject_MockObject
  73. */
  74. private $collectionProcessor;
  75. /**
  76. * @return void
  77. */
  78. protected function setUp()
  79. {
  80. $this->resourceModelMock = $this->getMockBuilder(PaymentTokenResourceModel::class)
  81. ->disableOriginalConstructor()
  82. ->getMock();
  83. $this->paymentTokenMock = $this->getMockBuilder(PaymentToken::class)
  84. ->setMethods(['save', 'load'])
  85. ->disableOriginalConstructor()
  86. ->getMock();
  87. $this->paymentTokenMock->setIsActive(true);
  88. $this->paymentTokenMock->setPublicHash(PaymentTokenRepositoryTest::PUBLIC_HASH);
  89. $this->paymentTokenFactoryMock = $this->getMockBuilder(PaymentTokenFactory::class)
  90. ->setMethods(['create'])
  91. ->disableOriginalConstructor()
  92. ->getMock();
  93. $this->filterBuilderMock = $this->getMockBuilder(FilterBuilder::class)
  94. ->disableOriginalConstructor()
  95. ->getMock();
  96. $this->searchCriteriaBuilderMock = $this->getMockBuilder(SearchCriteriaBuilder::class)
  97. ->disableOriginalConstructor()
  98. ->getMock();
  99. $this->searchCriteriaMock = $this->getMockBuilder(SearchCriteria::class)
  100. ->disableOriginalConstructor()
  101. ->getMock();
  102. $this->searchResultsFactoryMock = $this->getMockBuilder(PaymentTokenSearchResultsInterfaceFactory::class)
  103. ->setMethods(['create'])
  104. ->disableOriginalConstructor()
  105. ->getMock();
  106. $this->searchResults = new SearchResults();
  107. $this->collectionMock = $this->getMockBuilder(Collection::class)
  108. ->disableOriginalConstructor()
  109. ->getMock();
  110. $this->collectionFactoryMock = $this->getMockBuilder(CollectionFactory::class)
  111. ->setMethods(['create'])
  112. ->disableOriginalConstructor()
  113. ->getMock();
  114. $this->collectionProcessor = $this->createMock(
  115. \Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface::class
  116. );
  117. $this->repositoryModel = $this->getMockBuilder(PaymentTokenRepository::class)
  118. ->setConstructorArgs([
  119. 'resourceModel' => $this->resourceModelMock,
  120. 'paymentTokenFactory' => $this->paymentTokenFactoryMock,
  121. 'filterBuilder' => $this->filterBuilderMock,
  122. 'searchCriteriaBuilder' => $this->searchCriteriaBuilderMock,
  123. 'searchResultsFactory' => $this->searchResultsFactoryMock,
  124. 'collectionFactory' => $this->collectionFactoryMock,
  125. 'collectionProcessor' => $this->collectionProcessor
  126. ])
  127. ->setMethods(null)
  128. ->getMock();
  129. }
  130. /**
  131. */
  132. public function testRepositoryGetList()
  133. {
  134. $this->collectionMock->expects($this->once())
  135. ->method('getItems')
  136. ->willReturn([$this->paymentTokenMock]);
  137. $this->collectionFactoryMock->expects($this->once())
  138. ->method('create')
  139. ->willReturn($this->collectionMock);
  140. $this->searchResultsFactoryMock->expects($this->once())
  141. ->method('create')
  142. ->willReturn($this->searchResults);
  143. $this->collectionProcessor->expects($this->once())
  144. ->method('process')
  145. ->with($this->searchCriteriaMock, $this->collectionMock);
  146. $list = $this->repositoryModel->getList($this->searchCriteriaMock);
  147. $this->assertSame($this->searchResults, $list);
  148. $this->assertSame(
  149. $this->paymentTokenMock,
  150. $list->getItems()[0]
  151. );
  152. }
  153. /**
  154. */
  155. public function testRepositoryGetById()
  156. {
  157. $this->paymentTokenFactoryMock->expects($this->once())
  158. ->method('create')
  159. ->willReturn($this->paymentTokenMock);
  160. $this->resourceModelMock->expects($this->once())
  161. ->method('load')
  162. ->willReturnSelf();
  163. $this->assertSame($this->paymentTokenMock, $this->repositoryModel->getById(10));
  164. }
  165. /**
  166. */
  167. public function testRepositoryDelete()
  168. {
  169. $this->paymentTokenFactoryMock->expects($this->exactly(2))
  170. ->method('create')
  171. ->willReturn($this->paymentTokenMock);
  172. $this->resourceModelMock->expects($this->exactly(2))
  173. ->method('load')
  174. ->willReturnSelf();
  175. $this->assertTrue($this->repositoryModel->delete($this->paymentTokenMock));
  176. $this->assertFalse($this->paymentTokenMock->getIsActive());
  177. $this->paymentTokenMock->setPublicHash('');
  178. $this->assertFalse($this->repositoryModel->delete($this->paymentTokenMock));
  179. $this->assertFalse($this->paymentTokenMock->getIsActive());
  180. }
  181. /**
  182. */
  183. public function testRepositorySave()
  184. {
  185. $this->resourceModelMock->expects($this->once())
  186. ->method('save')
  187. ->willReturnSelf();
  188. $this->assertSame($this->paymentTokenMock, $this->repositoryModel->save($this->paymentTokenMock));
  189. }
  190. }