7
7
8
8
namespace Magento \CatalogGraphQl \Test \Unit \DataProvider \Product ;
9
9
10
- use Magento \Catalog \Model \ Product ;
10
+ use Magento \Catalog \Api \ ProductAttributeRepositoryInterface ;
11
11
use Magento \Catalog \Model \Product \Visibility ;
12
12
use Magento \Catalog \Model \ResourceModel \Eav \Attribute ;
13
13
use Magento \CatalogGraphQl \DataProvider \Product \RequestDataBuilder ;
14
14
use Magento \CatalogGraphQl \DataProvider \Product \SearchCriteriaBuilder ;
15
- use Magento \Eav \Model \Config ;
15
+ use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \SearchCriteriaResolverFactory ;
16
+ use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \SearchCriteriaResolverInterface ;
16
17
use Magento \Framework \Api \Filter ;
17
18
use Magento \Framework \Api \FilterBuilder ;
18
19
use Magento \Framework \Api \Search \FilterGroupBuilder ;
19
- use Magento \Framework \Api \Search \SearchCriteriaInterface ;
20
+ use Magento \Framework \Api \Search \SearchCriteria ;
20
21
use Magento \Framework \Api \SortOrderBuilder ;
21
22
use Magento \Framework \App \Config \ScopeConfigInterface ;
22
- use Magento \Framework \GraphQl \Query \Resolver \Argument \SearchCriteria \Builder ;
23
+ use Magento \Framework \GraphQl \Query \Resolver \Argument \SearchCriteria \ArgumentApplierPool ;
23
24
use Magento \Framework \Search \Request \Config as SearchConfig ;
24
- use Magento \Framework \TestFramework \ Unit \ Helper \ ObjectManager as ObjectManagerHelper ;
25
+ use PHPUnit \Framework \MockObject \ MockObject ;
25
26
use PHPUnit \Framework \TestCase ;
26
27
27
28
/**
32
33
class SearchCriteriaBuilderTest extends TestCase
33
34
{
34
35
/**
35
- * @var ScopeConfigInterface
36
+ * @var ScopeConfigInterface|MockObject
36
37
*/
37
38
private ScopeConfigInterface $ scopeConfig ;
38
39
39
40
/**
40
- * @var FilterBuilder
41
+ * @var FilterBuilder|MockObject
41
42
*/
42
43
private FilterBuilder $ filterBuilder ;
43
44
44
45
/**
45
- * @var FilterGroupBuilder
46
+ * @var FilterGroupBuilder|MockObject
46
47
*/
47
48
private FilterGroupBuilder $ filterGroupBuilder ;
48
49
49
50
/**
50
- * @var Builder
51
- */
52
- private Builder $ builder ;
53
-
54
- /**
55
- * @var Visibility
51
+ * @var Visibility|MockObject
56
52
*/
57
53
private Visibility $ visibility ;
58
54
59
55
/**
60
- * @var SortOrderBuilder
56
+ * @var SortOrderBuilder|MockObject
61
57
*/
62
58
private SortOrderBuilder $ sortOrderBuilder ;
63
59
@@ -67,43 +63,58 @@ class SearchCriteriaBuilderTest extends TestCase
67
63
private SearchCriteriaBuilder $ model ;
68
64
69
65
/**
70
- * @var Config
66
+ * @var ProductAttributeRepositoryInterface|MockObject
67
+ */
68
+ private ProductAttributeRepositoryInterface $ productAttributeRepository ;
69
+
70
+ /**
71
+ * @var SearchConfig|MockObject
71
72
*/
72
- private Config $ eavConfig ;
73
+ private SearchConfig $ searchConfig ;
74
+
75
+ /**
76
+ * @var RequestDataBuilder|MockObject
77
+ */
78
+ private RequestDataBuilder $ localData ;
79
+
80
+ /**
81
+ * @var SearchCriteriaResolverFactory|MockObject
82
+ */
83
+ private SearchCriteriaResolverFactory $ criteriaResolverFactory ;
84
+
85
+ /**
86
+ * @var ArgumentApplierPool|MockObject
87
+ */
88
+ private ArgumentApplierPool $ argumentApplierPool ;
73
89
74
90
/**
75
91
* @inheritdoc
76
92
*/
77
93
protected function setUp (): void
78
94
{
79
95
parent ::setUp ();
80
- $ objectManagerHelper = new ObjectManagerHelper ($ this );
81
- $ objects = [
82
- [
83
- SearchConfig::class,
84
- $ this ->createMock (SearchConfig::class)
85
- ],
86
- [
87
- RequestDataBuilder::class,
88
- $ this ->createMock (RequestDataBuilder::class)
89
- ]
90
- ];
91
- $ objectManagerHelper ->prepareObjectManager ($ objects );
92
- $ this ->builder = $ this ->createMock (Builder::class);
96
+
93
97
$ this ->scopeConfig = $ this ->createMock (ScopeConfigInterface::class);
94
98
$ this ->filterBuilder = $ this ->createMock (FilterBuilder::class);
95
99
$ this ->filterGroupBuilder = $ this ->createMock (FilterGroupBuilder::class);
96
100
$ this ->sortOrderBuilder = $ this ->createMock (SortOrderBuilder::class);
97
101
$ this ->visibility = $ this ->createMock (Visibility::class);
98
- $ this ->eavConfig = $ this ->createMock (Config::class);
102
+ $ this ->productAttributeRepository = $ this ->createMock (ProductAttributeRepositoryInterface::class);
103
+ $ this ->searchConfig = $ this ->createMock (SearchConfig::class);
104
+ $ this ->localData = $ this ->createMock (RequestDataBuilder::class);
105
+ $ this ->criteriaResolverFactory = $ this ->createMock (SearchCriteriaResolverFactory::class);
106
+ $ this ->argumentApplierPool = $ this ->createMock (ArgumentApplierPool::class);
99
107
$ this ->model = new SearchCriteriaBuilder (
100
- $ this ->builder ,
101
108
$ this ->scopeConfig ,
102
109
$ this ->filterBuilder ,
103
110
$ this ->filterGroupBuilder ,
104
111
$ this ->visibility ,
105
112
$ this ->sortOrderBuilder ,
106
- $ this ->eavConfig
113
+ $ this ->productAttributeRepository ,
114
+ $ this ->searchConfig ,
115
+ $ this ->localData ,
116
+ $ this ->criteriaResolverFactory ,
117
+ $ this ->argumentApplierPool ,
107
118
);
108
119
}
109
120
@@ -112,24 +123,24 @@ public function testBuild(): void
112
123
$ args = ['search ' => '' , 'pageSize ' => 20 , 'currentPage ' => 1 ];
113
124
114
125
$ filter = $ this ->createMock (Filter::class);
115
-
116
- $ searchCriteria = $ this ->getMockBuilder (SearchCriteriaInterface::class)
117
- ->disableOriginalConstructor ()
118
- ->getMockForAbstractClass ();
126
+ $ searchCriteria = $ this ->createMock (SearchCriteria::class);
119
127
$ attributeInterface = $ this ->getMockBuilder (Attribute::class)
120
128
->disableOriginalConstructor ()
121
129
->getMockForAbstractClass ();
122
130
123
131
$ attributeInterface ->setData (['is_filterable ' => 0 ]);
124
132
125
- $ this ->builder ->expects ($ this ->any ())
126
- ->method ('build ' )
127
- ->with ('products ' , $ args )
133
+ $ searchCriteriaResolver = $ this ->createMock (SearchCriteriaResolverInterface::class);
134
+ $ this ->criteriaResolverFactory ->expects (self ::once ())
135
+ ->method ('create ' )
136
+ ->willReturn ($ searchCriteriaResolver );
137
+ $ searchCriteriaResolver ->expects (self ::once ())
138
+ ->method ('resolve ' )
128
139
->willReturn ($ searchCriteria );
129
140
$ searchCriteria ->expects ($ this ->any ())->method ('getFilterGroups ' )->willReturn ([]);
130
- $ this ->eavConfig ->expects ($ this -> any ())
131
- ->method ('getAttribute ' )
132
- ->with (Product:: ENTITY , 'price ' )
141
+ $ this ->productAttributeRepository ->expects (self :: once ())
142
+ ->method ('get ' )
143
+ ->with ('price ' )
133
144
->willReturn ($ attributeInterface );
134
145
$ sortOrderList = ['relevance ' , 'entity_id ' ];
135
146
@@ -149,8 +160,6 @@ public function testBuild(): void
149
160
->method ('create ' )
150
161
->willReturn ([]);
151
162
152
- $ filterOrderList = ['search_term ' , 'visibility ' ];
153
-
154
163
$ this ->filterBuilder ->expects ($ this ->exactly (2 ))
155
164
->method ('setField ' )
156
165
->willReturnCallback (function ($ filterOrderList ) {
0 commit comments