Skip to content

Commit ae103a3

Browse files
committed
MAGETWO-44333: Move Search API to Framework to Make Grid Component work through them
1 parent fd7abdf commit ae103a3

File tree

9 files changed

+56
-50
lines changed

9 files changed

+56
-50
lines changed

app/code/Magento/Search/Model/SearchResponseBuilder.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
use Magento\Framework\Api\Search\DocumentFactory;
1010
use Magento\Framework\Api\Search\SearchResultFactory;
1111
use Magento\Framework\Search\ResponseInterface;
12+
use Magento\Framework\Search\SearchResponseBuilderInterface;
1213

13-
class SearchResponseBuilder
14+
class SearchResponseBuilder implements SearchResponseBuilderInterface
1415
{
1516
/**
1617
* @var DocumentFactory

app/code/Magento/Search/etc/di.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
99
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
10-
<preference for="Magento\Search\Api\SearchInterface" type="Magento\Search\Model\Search"/>
10+
<preference for="Magento\Framework\Search\SearchResponseBuilderInterface" type="Magento\Search\Model\SearchResponseBuilder"/>
1111
<type name="Magento\Framework\Module\Setup\Migration">
1212
<arguments>
1313
<argument name="compositeModules" xsi:type="array">

app/code/Magento/Search/etc/webapi.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Webapi:etc/webapi.xsd">
1010

1111
<route url="/V1/search" method="GET">
12-
<service class="Magento\Search\Api\SearchInterface" method="search"/>
12+
<service class="Magento\Framework\Api\Search\SearchInterface" method="search"/>
1313
<resources>
1414
<resource ref="anonymous" />
1515
</resources>

app/etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@
139139
<preference for="Magento\Framework\Api\ImageProcessorInterface" type="Magento\Framework\Api\ImageProcessor" />
140140
<preference for="Magento\Framework\Code\Reader\ClassReaderInterface" type="Magento\Framework\Code\Reader\ClassReader" />
141141
<preference for="Magento\Framework\Stdlib\DateTime\DateTimeFormatterInterface" type="Magento\Framework\Stdlib\DateTime\DateTimeFormatter"/>
142+
<preference for="Magento\Framework\Api\Search\SearchInterface" type="Magento\Framework\Search\Search"/>
142143
<type name="Magento\Framework\Model\ResourceModel\Db\TransactionManager" shared="false" />
143144
<type name="Magento\Framework\Logger\Handler\Base">
144145
<arguments>

dev/tests/api-functional/testsuite/Magento/Search/Api/SearchTest.php renamed to dev/tests/api-functional/testsuite/Magento/Framework/Api/Search/SearchTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Copyright © 2015 Magento. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
namespace Magento\Search\Api;
6+
namespace Magento\Framework\Api\Search;
77

88
use Magento\TestFramework\TestCase\WebapiAbstract;
99

@@ -15,7 +15,7 @@ class SearchTest extends WebapiAbstract
1515

1616
/**
1717
* @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
18-
* @covers \Magento\Search\Model\Search::search
18+
* @covers \Magento\Framework\Search\Search::search
1919
*/
2020
public function testCatalogSearch()
2121
{

app/code/Magento/Search/Api/SearchInterface.php renamed to lib/internal/Magento/Framework/Api/Search/SearchInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22
/**
3-
* Copyright © 2015 Magento. All rights reserved.
3+
* Copyright © 2015 Magento. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
namespace Magento\Search\Api;
6+
namespace Magento\Framework\Api\Search;
77

88
/**
99
* Search API for all requests

app/code/Magento/Search/Model/Search.php renamed to lib/internal/Magento/Framework/Search/Search.php

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
<?php
22
/**
3-
* Copyright © 2015 Magento. All rights reserved.
3+
* Copyright © 2015 Magento. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
namespace Magento\Search\Model;
6+
namespace Magento\Framework\Search;
77

8+
use Magento\Framework\Api\Search\SearchInterface;
89
use Magento\Framework\Api\Search\SearchCriteriaInterface;
9-
use Magento\Framework\App\Config\ScopeConfigInterface;
10+
use Magento\Framework\App\ScopeResolverInterface;
1011
use Magento\Framework\Search\Request\Builder;
11-
use Magento\Framework\Search\SearchEngineInterface;
12-
use Magento\Search\Api\SearchInterface;
13-
use Magento\Store\Model\ScopeInterface;
14-
use Magento\Store\Model\StoreManagerInterface;
1512

1613
class Search implements SearchInterface
1714
{
@@ -21,34 +18,34 @@ class Search implements SearchInterface
2118
private $requestBuilder;
2219

2320
/**
24-
* @var StoreManagerInterface
21+
* @var ScopeResolverInterface
2522
*/
26-
private $storeManager;
23+
private $scopeResolver;
2724

2825
/**
2926
* @var SearchEngineInterface
3027
*/
3128
private $searchEngine;
3229

3330
/**
34-
* @var SearchResponseBuilder
31+
* @var SearchResponseBuilderInterface
3532
*/
3633
private $searchResponseBuilder;
3734

3835
/**
3936
* @param Builder $requestBuilder
40-
* @param StoreManagerInterface $storeManager
37+
* @param ScopeResolverInterface $scopeResolver
4138
* @param SearchEngineInterface $searchEngine
42-
* @param SearchResponseBuilder $searchResponseBuilder
39+
* @param SearchResponseBuilderInterface $searchResponseBuilder
4340
*/
4441
public function __construct(
4542
Builder $requestBuilder,
46-
StoreManagerInterface $storeManager,
43+
ScopeResolverInterface $scopeResolver,
4744
SearchEngineInterface $searchEngine,
48-
SearchResponseBuilder $searchResponseBuilder
45+
SearchResponseBuilderInterface $searchResponseBuilder
4946
) {
5047
$this->requestBuilder = $requestBuilder;
51-
$this->storeManager = $storeManager;
48+
$this->scopeResolver = $scopeResolver;
5249
$this->searchEngine = $searchEngine;
5350
$this->searchResponseBuilder = $searchResponseBuilder;
5451
}
@@ -60,8 +57,8 @@ public function search(SearchCriteriaInterface $searchCriteria)
6057
{
6158
$this->requestBuilder->setRequestName($searchCriteria->getRequestName());
6259

63-
$storeId = $this->storeManager->getStore(true)->getId();
64-
$this->requestBuilder->bindDimension('scope', $storeId);
60+
$scope = $this->scopeResolver->getScope();
61+
$this->requestBuilder->bindDimension('scope', $scope);
6562

6663
foreach ($searchCriteria->getFilterGroups() as $filterGroup) {
6764
foreach ($filterGroup->getFilters() as $filter) {
@@ -82,7 +79,7 @@ public function search(SearchCriteriaInterface $searchCriteria)
8279
* Apply attribute filter to facet collection
8380
*
8481
* @param string $field
85-
* @param null $condition
82+
* @param string|array|null $condition
8683
* @return $this
8784
*/
8885
private function addFieldToFilter($field, $condition = null)
@@ -97,6 +94,7 @@ private function addFieldToFilter($field, $condition = null)
9794
$this->requestBuilder->bind("{$field}.to", $condition['to']);
9895
}
9996
}
97+
10098
return $this;
10199
}
102100
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Framework\Search;
7+
8+
interface SearchResponseBuilderInterface
9+
{
10+
/**
11+
* @param \Magento\Framework\Search\ResponseInterface $response
12+
* @return \Magento\Framework\Api\Search\SearchResultInterface
13+
*/
14+
public function build(\Magento\Framework\Search\ResponseInterface $response);
15+
}

app/code/Magento/Search/Test/Unit/Model/SearchTest.php renamed to lib/internal/Magento/Framework/Search/Test/Unit/SearchTest.php

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@
33
* Copyright © 2015 Magento. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
namespace Magento\Search\Test\Unit\Model;
6+
namespace Magento\Framework\Search\Test\Unit;
77

8-
use Magento\Catalog\Model\Layer\Filter\Dynamic\AlgorithmFactory;
98
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
10-
use Magento\Store\Model\ScopeInterface;
119

1210
class SearchTest extends \PHPUnit_Framework_TestCase
1311
{
1412
/**
15-
* @var \Magento\Search\Model\Search
13+
* @var \Magento\Framework\Search\Search
1614
*/
1715
protected $model;
1816

@@ -22,19 +20,19 @@ class SearchTest extends \PHPUnit_Framework_TestCase
2220
protected $requestBuilder;
2321

2422
/**
25-
* @var \Magento\Search\Model\SearchEngine|\PHPUnit_Framework_MockObject_MockObject
23+
* @var \Magento\Framework\Search\SearchEngineInterface|\PHPUnit_Framework_MockObject_MockObject
2624
*/
2725
protected $searchEngine;
2826

2927
/**
30-
* @var \Magento\Search\Model\SearchResponseBuilder|\PHPUnit_Framework_MockObject_MockObject
28+
* @var \Magento\Framework\Search\SearchResponseBuilderInterface|\PHPUnit_Framework_MockObject_MockObject
3129
*/
3230
protected $searchResponseBuilder;
3331

3432
/**
35-
* @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
33+
* @var \Magento\Framework\App\ScopeResolverInterface|\PHPUnit_Framework_MockObject_MockObject
3634
*/
37-
protected $storeManager;
35+
protected $scopeResolver;
3836

3937
protected function setUp()
4038
{
@@ -44,30 +42,30 @@ protected function setUp()
4442
->disableOriginalConstructor()
4543
->getMock();
4644

47-
$this->searchEngine = $this->getMockBuilder('Magento\Search\Model\SearchEngine')
45+
$this->searchEngine = $this->getMockBuilder('Magento\Framework\Search\SearchEngineInterface')
4846
->disableOriginalConstructor()
4947
->getMock();
5048

51-
$this->searchResponseBuilder = $this->getMockBuilder('Magento\Search\Model\SearchResponseBuilder')
49+
$this->searchResponseBuilder = $this->getMockBuilder('Magento\Framework\Search\SearchResponseBuilderInterface')
5250
->disableOriginalConstructor()
5351
->getMock();
5452

55-
$this->storeManager = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface')
53+
$this->scopeResolver = $this->getMockBuilder('Magento\Framework\App\ScopeResolverInterface')
5654
->disableOriginalConstructor()
5755
->getMockForAbstractClass();
5856

59-
$this->model = $objectManager->getObject('Magento\Search\Model\Search', [
57+
$this->model = $objectManager->getObject('Magento\Framework\Search\Search', [
6058
'requestBuilder' => $this->requestBuilder,
6159
'searchEngine' => $this->searchEngine,
6260
'searchResponseBuilder' => $this->searchResponseBuilder,
63-
'storeManager' => $this->storeManager,
61+
'scopeResolver' => $this->scopeResolver,
6462
]);
6563
}
6664

6765
public function testSearch()
6866
{
6967
$requestName = 'requestName';
70-
$storeId = 333;
68+
$scope = 333;
7169
$filterField = 'filterField';
7270
$filterValue = 'filterValue';
7371

@@ -98,13 +96,6 @@ public function testSearch()
9896
->method('getFilterGroups')
9997
->willReturn([$filterGroup]);
10098

101-
$store = $this->getMockBuilder('Magento\Store\Model\Store')
102-
->disableOriginalConstructor()
103-
->getMock();
104-
$store->expects($this->once())
105-
->method('getId')
106-
->willReturn($storeId);
107-
10899
$searchResult = $this->getMockBuilder('Magento\Framework\Api\Search\SearchResult')
109100
->disableOriginalConstructor()
110101
->getMockForAbstractClass();
@@ -122,7 +113,7 @@ public function testSearch()
122113
->with($requestName);
123114
$this->requestBuilder->expects($this->once())
124115
->method('bindDimension')
125-
->with('scope', $storeId);
116+
->with('scope', $scope);
126117
$this->requestBuilder->expects($this->any())
127118
->method('bind');
128119
$this->requestBuilder->expects($this->once())
@@ -139,9 +130,9 @@ public function testSearch()
139130
->with($response)
140131
->willReturn($searchResult);
141132

142-
$this->storeManager->expects($this->once())
143-
->method('getStore')
144-
->willReturn($store);
133+
$this->scopeResolver->expects($this->once())
134+
->method('getScope')
135+
->willReturn($scope);
145136

146137
$searchResult = $this->model->search($searchCriteria);
147138

0 commit comments

Comments
 (0)