PartnersTest.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Marketplace\Test\Unit\Model;
  7. class PartnersTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Marketplace\Model\Partners
  11. */
  12. private $partnersModelMock;
  13. private $returnPackages = '
  14. {
  15. "partners": {
  16. "1": {
  17. "url_page": "http://test.com",
  18. "url_partner_page": "http://test.com",
  19. "img": "http://test.com/img",
  20. "title": "Test page",
  21. "description": "Test page description"
  22. },
  23. "2": {
  24. "url_page": "http://test.com",
  25. "url_partner_page": "http://test.com",
  26. "img": "http://test.com/img",
  27. "title": "Test page",
  28. "description": "Test page description"
  29. }
  30. }
  31. }';
  32. protected function setUp()
  33. {
  34. $this->partnersModelMock = $this->getPartnersModelMock(
  35. [
  36. 'getApiUrl',
  37. 'getCurlClient',
  38. 'getCache',
  39. 'getReferer'
  40. ]
  41. );
  42. }
  43. /**
  44. * @var string
  45. */
  46. protected $apiUrl = 'www.testpackages';
  47. /**
  48. * @covers \Magento\Marketplace\Model\Partners::getPartners
  49. */
  50. public function testGetPartners()
  51. {
  52. $this->partnersModelMock->expects($this->once())
  53. ->method('getApiUrl')
  54. ->will($this->returnValue($this->apiUrl));
  55. $curlMock = $this->getCurlMock(['post', 'getBody', 'setOptions']);
  56. $curlMock->expects($this->once())
  57. ->method('post');
  58. $curlMock->expects($this->once())
  59. ->method('setOptions');
  60. $curlMock->expects($this->once())
  61. ->method('getBody')
  62. ->will($this->returnValue($this->returnPackages));
  63. $this->partnersModelMock->expects($this->exactly(3))
  64. ->method('getCurlClient')
  65. ->will($this->returnValue($curlMock));
  66. $cacheMock = $this->getCacheMock(['savePartnersToCache']);
  67. $cacheMock->expects($this->once())
  68. ->method('savePartnersToCache');
  69. $this->partnersModelMock->expects($this->once())
  70. ->method('getCache')
  71. ->will($this->returnValue($cacheMock));
  72. $this->partnersModelMock->expects($this->once())
  73. ->method('getReferer');
  74. $this->partnersModelMock->getPartners();
  75. }
  76. /**
  77. * @covers \Magento\Marketplace\Model\Partners::getPartners
  78. */
  79. public function testGetPartnersException()
  80. {
  81. $this->partnersModelMock->expects($this->once())
  82. ->method('getApiUrl')
  83. ->will($this->returnValue($this->apiUrl));
  84. $curlMock = $this->getCurlMock(['post', 'getBody', 'setOptions']);
  85. $curlMock->expects($this->once())
  86. ->method('post');
  87. $curlMock->expects($this->once())
  88. ->method('getBody')
  89. ->will($this->throwException(new \Exception));
  90. $this->partnersModelMock->expects($this->exactly(3))
  91. ->method('getCurlClient')
  92. ->will($this->returnValue($curlMock));
  93. $cacheMock = $this->getCacheMock(['savePartnersToCache', 'loadPartnersFromCache']);
  94. $cacheMock->expects($this->never())
  95. ->method('savePartnersToCache');
  96. $cacheMock->expects($this->once())
  97. ->method('loadPartnersFromCache');
  98. $this->partnersModelMock->expects($this->once())
  99. ->method('getCache')
  100. ->will($this->returnValue($cacheMock));
  101. $this->partnersModelMock->expects($this->once())
  102. ->method('getReferer');
  103. $this->partnersModelMock->getPartners();
  104. }
  105. /**
  106. * Gets partners block mock
  107. *
  108. * @return \PHPUnit_Framework_MockObject_MockObject|\Magento\Marketplace\Block\Partners
  109. */
  110. public function getPartnersBlockMock($methods = null)
  111. {
  112. return $this->createPartialMock(\Magento\Marketplace\Block\Partners::class, $methods);
  113. }
  114. /**
  115. * Gets partners model mock
  116. *
  117. * @return \PHPUnit_Framework_MockObject_MockObject|\Magento\Marketplace\Model\Partners
  118. */
  119. public function getPartnersModelMock($methods)
  120. {
  121. return $this->createPartialMock(\Magento\Marketplace\Model\Partners::class, $methods, []);
  122. }
  123. /**
  124. * Gets partners model mock
  125. *
  126. * @return \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\HTTP\Client\Curl
  127. */
  128. public function getCurlMock($methods)
  129. {
  130. return $this->createPartialMock(\Magento\Framework\HTTP\Client\Curl::class, $methods, []);
  131. }
  132. /**
  133. * Gets cache mock
  134. *
  135. * @return \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\HTTP\Client\Curl
  136. */
  137. public function getCacheMock($methods)
  138. {
  139. return $this->createPartialMock(\Magento\Marketplace\Helper\Cache::class, $methods, []);
  140. }
  141. }