1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\LayeredNavigation\Test\Unit\Block;
class NavigationTest extends \PHPUnit\Framework\TestCase
{
/**
* @var \PHPUnit_Framework_MockObject_MockObject
*/
protected $catalogLayerMock;
/**
* @var \PHPUnit_Framework_MockObject_MockObject
*/
protected $filterListMock;
/**
* @var \PHPUnit_Framework_MockObject_MockObject
*/
protected $layoutMock;
/**
* @var \PHPUnit_Framework_MockObject_MockObject
*/
protected $visibilityFlagMock;
/**
* @var \Magento\LayeredNavigation\Block\Navigation
*/
protected $model;
protected function setUp()
{
$this->catalogLayerMock = $this->createMock(\Magento\Catalog\Model\Layer::class);
$this->filterListMock = $this->createMock(\Magento\Catalog\Model\Layer\FilterList::class);
$this->visibilityFlagMock = $this->createMock(\Magento\Catalog\Model\Layer\AvailabilityFlagInterface::class);
/** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Catalog\Model\Layer\Resolver $layerResolver */
$layerResolver = $this->getMockBuilder(\Magento\Catalog\Model\Layer\Resolver::class)
->disableOriginalConstructor()
->setMethods(['get', 'create'])
->getMock();
$layerResolver->expects($this->any())
->method($this->anything())
->will($this->returnValue($this->catalogLayerMock));
$objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
$this->model = $objectManager->getObject(
\Magento\LayeredNavigation\Block\Navigation::class,
[
'layerResolver' => $layerResolver,
'filterList' => $this->filterListMock,
'visibilityFlag' => $this->visibilityFlagMock
]
);
$this->layoutMock = $this->createMock(\Magento\Framework\View\LayoutInterface::class);
}
public function testGetStateHtml()
{
$stateHtml = 'I feel good';
$this->filterListMock->expects($this->any())->method('getFilters')->will($this->returnValue([]));
$this->layoutMock->expects($this->at(0))->method('getChildName')
->with(null, 'state')
->will($this->returnValue('state block'));
$this->layoutMock->expects($this->once())->method('renderElement')
->with('state block', true)
->will($this->returnValue($stateHtml));
$this->model->setLayout($this->layoutMock);
$this->assertEquals($stateHtml, $this->model->getStateHtml());
}
/**
* @covers \Magento\LayeredNavigation\Block\Navigation::getLayer()
* @covers \Magento\LayeredNavigation\Block\Navigation::getFilters()
* @covers \Magento\LayeredNavigation\Block\Navigation::canShowBlock()
*/
public function testCanShowBlock()
{
// getFilers()
$filters = ['To' => 'be', 'or' => 'not', 'to' => 'be'];
$this->filterListMock->expects($this->exactly(2))->method('getFilters')
->with($this->catalogLayerMock)
->will($this->returnValue($filters));
$this->assertEquals($filters, $this->model->getFilters());
// canShowBlock()
$enabled = true;
$this->visibilityFlagMock
->expects($this->once())
->method('isEnabled')
->with($this->catalogLayerMock, $filters)
->will($this->returnValue($enabled));
$this->assertEquals($enabled, $this->model->canShowBlock());
}
public function testGetClearUrl()
{
$this->filterListMock->expects($this->any())->method('getFilters')->will($this->returnValue([]));
$this->model->setLayout($this->layoutMock);
$this->layoutMock->expects($this->once())->method('getChildName')->will($this->returnValue('sample block'));
$blockMock = $this->getMockForAbstractClass(
\Magento\Framework\View\Element\AbstractBlock::class,
[],
'',
false
);
$clearUrl = 'very clear URL';
$blockMock->setClearUrl($clearUrl);
$this->layoutMock->expects($this->once())->method('getBlock')->will($this->returnValue($blockMock));
$this->assertEquals($clearUrl, $this->model->getClearUrl());
}
}