PageRenderTime 44ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/app/code/Magento/Catalog/Test/Unit/Block/Product/ListProductTest.php

https://gitlab.com/crazybutterfly815/magento2
PHP | 177 lines | 126 code | 19 blank | 32 comment | 0 complexity | 8c70458ff2d7b6356ebd382248432903 MD5 | raw file
  1. <?php
  2. /**
  3. * Copyright © 2016 Magento. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Catalog\Test\Unit\Block\Product;
  7. /**
  8. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  9. */
  10. class ListProductTest extends \PHPUnit_Framework_TestCase
  11. {
  12. /**
  13. * @var \Magento\Catalog\Block\Product\ListProduct
  14. */
  15. protected $block;
  16. /**
  17. * @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject
  18. */
  19. protected $registryMock;
  20. /**
  21. * @var \PHPUnit_Framework_MockObject_MockObject
  22. */
  23. protected $layerMock;
  24. /**
  25. * @var \Magento\Framework\Data\Helper\PostHelper|\PHPUnit_Framework_MockObject_MockObject
  26. */
  27. protected $postDataHelperMock;
  28. /**
  29. * @var \Magento\Catalog\Model\Product|\PHPUnit_Framework_MockObject_MockObject
  30. */
  31. protected $productMock;
  32. /**
  33. * @var \Magento\Checkout\Helper\Cart|\PHPUnit_Framework_MockObject_MockObject
  34. */
  35. protected $cartHelperMock;
  36. /**
  37. * @var \Magento\Catalog\Model\Product\Type\Simple|\PHPUnit_Framework_MockObject_MockObject
  38. */
  39. protected $typeInstanceMock;
  40. /**
  41. * @var \Magento\Framework\Url\Helper\Data | \PHPUnit_Framework_MockObject_MockObject
  42. */
  43. protected $urlHelperMock;
  44. protected function setUp()
  45. {
  46. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  47. $this->registryMock = $this->getMock(\Magento\Framework\Registry::class, [], [], '', false);
  48. $this->layerMock = $this->getMock(\Magento\Catalog\Model\Layer::class, [], [], '', false);
  49. /** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Catalog\Model\Layer\Resolver $layerResolver */
  50. $layerResolver = $this->getMockBuilder(\Magento\Catalog\Model\Layer\Resolver::class)
  51. ->disableOriginalConstructor()
  52. ->setMethods(['get', 'create'])
  53. ->getMock();
  54. $layerResolver->expects($this->any())
  55. ->method($this->anything())
  56. ->will($this->returnValue($this->layerMock));
  57. $this->postDataHelperMock = $this->getMock(
  58. \Magento\Framework\Data\Helper\PostHelper::class,
  59. [],
  60. [],
  61. '',
  62. false
  63. );
  64. $this->typeInstanceMock = $this->getMock(
  65. \Magento\Catalog\Model\Product\Type\Simple::class,
  66. [],
  67. [],
  68. '',
  69. false,
  70. false
  71. );
  72. $this->productMock = $this->getMock(
  73. \Magento\Catalog\Model\Product::class,
  74. [],
  75. [],
  76. '',
  77. false
  78. );
  79. $this->cartHelperMock = $this->getMock(
  80. \Magento\Checkout\Helper\Cart::class,
  81. [],
  82. [],
  83. '',
  84. false
  85. );
  86. $this->urlHelperMock = $this->getMockBuilder(\Magento\Framework\Url\Helper\Data::class)
  87. ->disableOriginalConstructor()->getMock();
  88. $this->block = $objectManager->getObject(
  89. \Magento\Catalog\Block\Product\ListProduct::class,
  90. [
  91. 'registry' => $this->registryMock,
  92. 'layerResolver' => $layerResolver,
  93. 'cartHelper' => $this->cartHelperMock,
  94. 'postDataHelper' => $this->postDataHelperMock,
  95. 'urlHelper' => $this->urlHelperMock,
  96. ]
  97. );
  98. }
  99. protected function tearDown()
  100. {
  101. $this->block = null;
  102. }
  103. public function testGetIdentities()
  104. {
  105. $productTag = 'catalog_product_1';
  106. $categoryTag = 'catalog_category_product_1';
  107. $this->productMock->expects($this->once())
  108. ->method('getIdentities')
  109. ->will($this->returnValue([$productTag]));
  110. $itemsCollection = new \ReflectionProperty(
  111. \Magento\Catalog\Block\Product\ListProduct::class,
  112. '_productCollection'
  113. );
  114. $itemsCollection->setAccessible(true);
  115. $itemsCollection->setValue($this->block, [$this->productMock]);
  116. $currentCategory = $this->getMock(\Magento\Catalog\Model\Category::class, [], [], '', false);
  117. $currentCategory->expects($this->once())
  118. ->method('getId')
  119. ->will($this->returnValue('1'));
  120. $this->layerMock->expects($this->once())
  121. ->method('getCurrentCategory')
  122. ->will($this->returnValue($currentCategory));
  123. $this->assertEquals(
  124. [$productTag, $categoryTag ],
  125. $this->block->getIdentities()
  126. );
  127. }
  128. public function testGetAddToCartPostParams()
  129. {
  130. $url = 'http://localhost.com/dev/';
  131. $id = 1;
  132. $uenc = strtr(base64_encode($url), '+/=', '-_,');
  133. $expectedPostData = [
  134. 'action' => $url,
  135. 'data' => ['product' => $id, 'uenc' => $uenc],
  136. ];
  137. $this->typeInstanceMock->expects($this->once())
  138. ->method('hasRequiredOptions')
  139. ->with($this->equalTo($this->productMock))
  140. ->will($this->returnValue(false));
  141. $this->cartHelperMock->expects($this->any())
  142. ->method('getAddUrl')
  143. ->with($this->equalTo($this->productMock), $this->equalTo([]))
  144. ->will($this->returnValue($url));
  145. $this->productMock->expects($this->once())
  146. ->method('getEntityId')
  147. ->will($this->returnValue($id));
  148. $this->productMock->expects($this->once())
  149. ->method('getTypeInstance')
  150. ->will($this->returnValue($this->typeInstanceMock));
  151. $this->urlHelperMock->expects($this->once())
  152. ->method('getEncodedUrl')
  153. ->with($this->equalTo($url))
  154. ->will($this->returnValue($uenc));
  155. $result = $this->block->getAddToCartPostParams($this->productMock);
  156. $this->assertEquals($expectedPostData, $result);
  157. }
  158. }