ResultTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\CatalogSearch\Test\Unit\Block;
  7. use \Magento\CatalogSearch\Block\Result;
  8. /**
  9. * Unit test for \Magento\CatalogSearch\Block\Result
  10. */
  11. class ResultTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /** @var \Magento\Search\Model\Query|\PHPUnit_Framework_MockObject_MockObject */
  14. private $queryMock;
  15. /** @var \Magento\Search\Model\QueryFactory|\PHPUnit_Framework_MockObject_MockObject */
  16. private $queryFactoryMock;
  17. /** @var \Magento\CatalogSearch\Block\Result */
  18. protected $model;
  19. /** @var \Magento\Framework\View\Element\Template\Context|\PHPUnit_Framework_MockObject_MockObject */
  20. protected $contextMock;
  21. /** @var \Magento\Catalog\Model\Layer|\PHPUnit_Framework_MockObject_MockObject */
  22. protected $layerMock;
  23. /** @var \Magento\CatalogSearch\Helper\Data|\PHPUnit_Framework_MockObject_MockObject */
  24. protected $dataMock;
  25. /**
  26. * @var \Magento\Catalog\Block\Product\ListProduct|\PHPUnit_Framework_MockObject_MockObject
  27. */
  28. protected $childBlockMock;
  29. protected function setUp()
  30. {
  31. $this->contextMock = $this->createMock(\Magento\Framework\View\Element\Template\Context::class);
  32. $this->layerMock = $this->createMock(\Magento\Catalog\Model\Layer\Search::class);
  33. /** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Catalog\Model\Layer\Resolver $layerResolver */
  34. $layerResolver = $this->getMockBuilder(\Magento\Catalog\Model\Layer\Resolver::class)
  35. ->disableOriginalConstructor()
  36. ->setMethods(['get', 'create'])
  37. ->getMock();
  38. $layerResolver->expects($this->any())
  39. ->method($this->anything())
  40. ->will($this->returnValue($this->layerMock));
  41. $this->dataMock = $this->createMock(\Magento\CatalogSearch\Helper\Data::class);
  42. $this->queryMock = $this->getMockBuilder(\Magento\Search\Model\Query::class)
  43. ->disableOriginalConstructor()
  44. ->getMock();
  45. $this->queryFactoryMock = $this->getMockBuilder(\Magento\Search\Model\QueryFactory::class)
  46. ->disableOriginalConstructor()
  47. ->setMethods(['get'])
  48. ->getMock();
  49. $this->model = new Result($this->contextMock, $layerResolver, $this->dataMock, $this->queryFactoryMock);
  50. }
  51. public function testGetSearchQueryText()
  52. {
  53. $this->dataMock->expects($this->once())->method('getEscapedQueryText')->will($this->returnValue('query_text'));
  54. $this->assertEquals('Search results for: \'query_text\'', $this->model->getSearchQueryText());
  55. }
  56. public function testGetNoteMessages()
  57. {
  58. $this->dataMock->expects($this->once())->method('getNoteMessages')->will($this->returnValue('SOME-MESSAGE'));
  59. $this->assertEquals('SOME-MESSAGE', $this->model->getNoteMessages());
  60. }
  61. /**
  62. * @param bool $isMinQueryLength
  63. * @param string $expectedResult
  64. * @dataProvider getNoResultTextDataProvider
  65. */
  66. public function testGetNoResultText($isMinQueryLength, $expectedResult)
  67. {
  68. $this->dataMock->expects(
  69. $this->once()
  70. )->method(
  71. 'isMinQueryLength'
  72. )->will(
  73. $this->returnValue($isMinQueryLength)
  74. );
  75. if ($isMinQueryLength) {
  76. $queryMock = $this->createMock(\Magento\Search\Model\Query::class);
  77. $queryMock->expects($this->once())->method('getMinQueryLength')->will($this->returnValue('5'));
  78. $this->queryFactoryMock->expects($this->once())->method('get')->will($this->returnValue($queryMock));
  79. }
  80. $this->assertEquals($expectedResult, $this->model->getNoResultText());
  81. }
  82. /**
  83. * @return array
  84. */
  85. public function getNoResultTextDataProvider()
  86. {
  87. return [[true, 'Minimum Search query length is 5'], [false, null]];
  88. }
  89. }