Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SearchTest.php
Go to the documentation of this file.
1 <?php
7 
9 
13 class SearchTest extends \PHPUnit\Framework\TestCase
14 {
18  protected $model;
19 
23  protected $requestBuilder;
24 
28  protected $searchEngine;
29 
34 
38  protected $scopeResolver;
39 
40  protected function setUp()
41  {
42  $objectManager = new ObjectManager($this);
43 
44  $this->requestBuilder = $this->getMockBuilder(\Magento\Framework\Search\Request\Builder::class)
45  ->disableOriginalConstructor()
46  ->getMock();
47 
48  $this->searchEngine = $this->getMockBuilder(\Magento\Framework\Search\SearchEngineInterface::class)
49  ->disableOriginalConstructor()
50  ->getMock();
51 
52  $this->searchResponseBuilder = $this->getMockBuilder(\Magento\Framework\Search\SearchResponseBuilder::class)
53  ->disableOriginalConstructor()
54  ->getMock();
55 
56  $this->scopeResolver = $this->getMockBuilder(\Magento\Framework\App\ScopeResolverInterface::class)
57  ->disableOriginalConstructor()
58  ->getMockForAbstractClass();
59 
60  $this->model = $objectManager->getObject(
61  \Magento\Framework\Search\Search::class,
62  [
63  'requestBuilder' => $this->requestBuilder,
64  'searchEngine' => $this->searchEngine,
65  'searchResponseBuilder' => $this->searchResponseBuilder,
66  'scopeResolver' => $this->scopeResolver,
67  ]
68  );
69  }
70 
71  public function testSearch()
72  {
73  $requestName = 'requestName';
74  $scopeId = 333;
75  $filters = [
76  $this->createFilterMock('array_filter', ['arrayValue1', 'arrayValue2']),
77  $this->createFilterMock('simple_filter', 'filterValue'),
78  $this->createFilterMock('from_filter', ['from' => 30]),
79  $this->createFilterMock('to_filter', ['to' => 100]),
80  $this->createFilterMock('range_filter', ['from' => 60, 'to' => 82]),
81  ];
82 
83  $scope = $this->getMockBuilder(\Magento\Framework\App\ScopeInterface::class)
84  ->disableOriginalConstructor()
85  ->getMockForAbstractClass();
86 
87  $filterGroup = $this->getMockBuilder(\Magento\Framework\Api\Search\FilterGroup::class)
88  ->disableOriginalConstructor()
89  ->getMock();
90  $filterGroup->expects($this->once())
91  ->method('getFilters')
92  ->willReturn($filters);
93 
94  $searchCriteria = $this->getMockBuilder(\Magento\Framework\Api\Search\SearchCriteriaInterface::class)
95  ->disableOriginalConstructor()
96  ->getMockForAbstractClass();
97  $searchCriteria->expects($this->once())
98  ->method('getRequestName')
99  ->willReturn($requestName);
100  $searchCriteria->expects($this->once())
101  ->method('getFilterGroups')
102  ->willReturn([$filterGroup]);
103 
104  $searchResult = $this->getMockBuilder(\Magento\Framework\Api\Search\SearchResult::class)
105  ->disableOriginalConstructor()
106  ->getMockForAbstractClass();
107 
108  $request = $this->getMockBuilder(\Magento\Framework\Search\RequestInterface::class)
109  ->disableOriginalConstructor()
110  ->getMockForAbstractClass();
111 
112  $response = $this->getMockBuilder(\Magento\Framework\Search\ResponseInterface::class)
113  ->disableOriginalConstructor()
114  ->getMockForAbstractClass();
115 
116  $this->requestBuilder->expects($this->once())
117  ->method('setRequestName')
118  ->with($requestName);
119  $this->requestBuilder->expects($this->once())
120  ->method('bindDimension')
121  ->with('scope', $scopeId);
122  $this->requestBuilder->expects($this->exactly(6))
123  ->method('bind');
124  $this->requestBuilder->expects($this->once())
125  ->method('create')
126  ->willReturn($request);
127 
128  $this->searchEngine->expects($this->once())
129  ->method('search')
130  ->with($request)
131  ->willReturn($response);
132 
133  $this->searchResponseBuilder->expects($this->once())
134  ->method('build')
135  ->with($response)
136  ->willReturn($searchResult);
137 
138  $this->scopeResolver->expects($this->once())
139  ->method('getScope')
140  ->willReturn($scope);
141 
142  $scope->expects($this->once())
143  ->method('getId')
144  ->willReturn($scopeId);
145 
146  $searchResult = $this->model->search($searchCriteria);
147 
148  $this->assertInstanceOf(\Magento\Framework\Api\Search\SearchResultInterface::class, $searchResult);
149  }
150 
156  private function createFilterMock($field, $value)
157  {
158  $filter = $this->getMockBuilder(\Magento\Framework\Api\Filter::class)
159  ->disableOriginalConstructor()
160  ->getMock();
161  $filter->expects($this->once())
162  ->method('getField')
163  ->willReturn($field);
164  $filter->expects($this->once())
165  ->method('getValue')
166  ->willReturn($value);
167  return $filter;
168  }
169 }
$response
Definition: 404.php:11
$objectManager
Definition: bootstrap.php:17
$searchCriteria
$value
Definition: gender.phtml:16
$filters
Definition: uploader.phtml:11