77
88namespace Magento \CatalogGraphQl \Test \Unit \DataProvider \Product ;
99
10- use Magento \Catalog \Model \ Product ;
10+ use Magento \Catalog \Api \ ProductAttributeRepositoryInterface ;
1111use Magento \Catalog \Model \Product \Visibility ;
1212use Magento \Catalog \Model \ResourceModel \Eav \Attribute ;
1313use Magento \CatalogGraphQl \DataProvider \Product \RequestDataBuilder ;
1414use 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 ;
1617use Magento \Framework \Api \Filter ;
1718use Magento \Framework \Api \FilterBuilder ;
1819use Magento \Framework \Api \Search \FilterGroupBuilder ;
19- use Magento \Framework \Api \Search \SearchCriteriaInterface ;
20+ use Magento \Framework \Api \Search \SearchCriteria ;
2021use Magento \Framework \Api \SortOrderBuilder ;
2122use 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 ;
2324use Magento \Framework \Search \Request \Config as SearchConfig ;
24- use Magento \Framework \TestFramework \ Unit \ Helper \ ObjectManager as ObjectManagerHelper ;
25+ use PHPUnit \Framework \MockObject \ MockObject ;
2526use PHPUnit \Framework \TestCase ;
2627
2728/**
3233class SearchCriteriaBuilderTest extends TestCase
3334{
3435 /**
35- * @var ScopeConfigInterface
36+ * @var ScopeConfigInterface|MockObject
3637 */
3738 private ScopeConfigInterface $ scopeConfig ;
3839
3940 /**
40- * @var FilterBuilder
41+ * @var FilterBuilder|MockObject
4142 */
4243 private FilterBuilder $ filterBuilder ;
4344
4445 /**
45- * @var FilterGroupBuilder
46+ * @var FilterGroupBuilder|MockObject
4647 */
4748 private FilterGroupBuilder $ filterGroupBuilder ;
4849
4950 /**
50- * @var Builder
51- */
52- private Builder $ builder ;
53-
54- /**
55- * @var Visibility
51+ * @var Visibility|MockObject
5652 */
5753 private Visibility $ visibility ;
5854
5955 /**
60- * @var SortOrderBuilder
56+ * @var SortOrderBuilder|MockObject
6157 */
6258 private SortOrderBuilder $ sortOrderBuilder ;
6359
@@ -67,43 +63,58 @@ class SearchCriteriaBuilderTest extends TestCase
6763 private SearchCriteriaBuilder $ model ;
6864
6965 /**
70- * @var Config
66+ * @var ProductAttributeRepositoryInterface|MockObject
67+ */
68+ private ProductAttributeRepositoryInterface $ productAttributeRepository ;
69+
70+ /**
71+ * @var SearchConfig|MockObject
7172 */
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 ;
7389
7490 /**
7591 * @inheritdoc
7692 */
7793 protected function setUp (): void
7894 {
7995 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+
9397 $ this ->scopeConfig = $ this ->createMock (ScopeConfigInterface::class);
9498 $ this ->filterBuilder = $ this ->createMock (FilterBuilder::class);
9599 $ this ->filterGroupBuilder = $ this ->createMock (FilterGroupBuilder::class);
96100 $ this ->sortOrderBuilder = $ this ->createMock (SortOrderBuilder::class);
97101 $ 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);
99107 $ this ->model = new SearchCriteriaBuilder (
100- $ this ->builder ,
101108 $ this ->scopeConfig ,
102109 $ this ->filterBuilder ,
103110 $ this ->filterGroupBuilder ,
104111 $ this ->visibility ,
105112 $ this ->sortOrderBuilder ,
106- $ this ->eavConfig
113+ $ this ->productAttributeRepository ,
114+ $ this ->searchConfig ,
115+ $ this ->localData ,
116+ $ this ->criteriaResolverFactory ,
117+ $ this ->argumentApplierPool ,
107118 );
108119 }
109120
@@ -112,24 +123,24 @@ public function testBuild(): void
112123 $ args = ['search ' => '' , 'pageSize ' => 20 , 'currentPage ' => 1 ];
113124
114125 $ filter = $ this ->createMock (Filter::class);
115-
116- $ searchCriteria = $ this ->getMockBuilder (SearchCriteriaInterface::class)
117- ->disableOriginalConstructor ()
118- ->getMockForAbstractClass ();
126+ $ searchCriteria = $ this ->createMock (SearchCriteria::class);
119127 $ attributeInterface = $ this ->getMockBuilder (Attribute::class)
120128 ->disableOriginalConstructor ()
121129 ->getMockForAbstractClass ();
122130
123131 $ attributeInterface ->setData (['is_filterable ' => 0 ]);
124132
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 ' )
128139 ->willReturn ($ searchCriteria );
129140 $ 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 ' )
133144 ->willReturn ($ attributeInterface );
134145 $ sortOrderList = ['relevance ' , 'entity_id ' ];
135146
@@ -149,8 +160,6 @@ public function testBuild(): void
149160 ->method ('create ' )
150161 ->willReturn ([]);
151162
152- $ filterOrderList = ['search_term ' , 'visibility ' ];
153-
154163 $ this ->filterBuilder ->expects ($ this ->exactly (2 ))
155164 ->method ('setField ' )
156165 ->willReturnCallback (function ($ filterOrderList ) {
0 commit comments