PageRenderTime 38ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/magento/module-catalog/Test/Unit/Block/Product/ListProductTest.php

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