11 use \Magento\CatalogSearch\Model\Search\BaseSelectStrategy\StrategyMapper;
12 use \Magento\CatalogSearch\Model\Search\SelectContainer\SelectContainer;
21 private $baseSelectAttributeSearchStrategyMock;
24 private $baseSelectFullTextSearchStrategyMock;
27 private $selectContainerMock;
30 private $strategyMapper;
34 $this->baseSelectAttributeSearchStrategyMock = $this->getMockBuilder(
35 BaseSelectAttributesSearchStrategy::class
36 )->disableOriginalConstructor()
39 $this->baseSelectFullTextSearchStrategyMock = $this->getMockBuilder(
40 BaseSelectFullTextSearchStrategy::class
41 )->disableOriginalConstructor()
44 $this->selectContainerMock = $this->getMockBuilder(SelectContainer::class)
45 ->disableOriginalConstructor()
46 ->setMethods([
'isFullTextSearchRequired',
'hasCustomAttributesFilters',
'hasVisibilityFilter'])
49 $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
51 $this->strategyMapper = $objectManagerHelper->getObject(
52 StrategyMapper::class,
54 'baseSelectFullTextSearchStrategy' => $this->baseSelectFullTextSearchStrategyMock,
55 'baseSelectAttributesSearchStrategy' => $this->baseSelectAttributeSearchStrategyMock,
70 $isFullTextSearchRequired,
71 $hasCustomAttributesFilters,
75 $this->selectContainerMock
76 ->method(
'isFullTextSearchRequired')
77 ->willReturn($isFullTextSearchRequired);
79 $this->selectContainerMock
80 ->method(
'hasCustomAttributesFilters')
81 ->willReturn($hasCustomAttributesFilters);
83 $this->selectContainerMock
84 ->method(
'hasVisibilityFilter')
85 ->willReturn($hasVisibilityFilter);
87 $expected = $validStrategy ===
'BaseSelectFullTextSearchStrategy' 88 ? $this->baseSelectFullTextSearchStrategyMock
89 : $this->baseSelectAttributeSearchStrategyMock;
93 $this->strategyMapper->mapSelectContainerToStrategy($this->selectContainerMock),
105 'validStrategy' =>
'BaseSelectFullTextSearchStrategy',
106 'isFullTextSearchRequired' =>
true,
107 'hasCustomAttributesFilters' =>
false,
108 'hasVisibilityFilter' =>
false,
109 'errorMsg' =>
'BaseSelectFullTextSearchStrategy should be returned for selectContainer ' 110 .
'that requires fulltext search and has no custom attributes and no visibility filters.' 112 'validStrategy' =>
'BaseSelectAttributeSearchStrategy',
113 'isFullTextSearchRequired' =>
false,
114 'hasCustomAttributesFilters' =>
false,
115 'hasVisibilityFilter' =>
false,
116 'errorMsg' =>
'BaseSelectAttributeSearchStrategy should be returned for selectContainer ' 117 .
'that does not require fulltext search.' 119 'validStrategy' =>
'BaseSelectAttributeSearchStrategy',
120 'isFullTextSearchRequired' =>
false,
121 'hasCustomAttributesFilters' =>
true,
122 'hasVisibilityFilter' =>
true,
123 'errorMsg' =>
'BaseSelectAttributeSearchStrategy should be returned for selectContainer ' 124 .
'that does not require fulltext search but has both custom and visibility filters.' 126 'validStrategy' =>
'BaseSelectAttributeSearchStrategy',
127 'isFullTextSearchRequired' =>
true,
128 'hasCustomAttributesFilters' =>
true,
129 'hasVisibilityFilter' =>
false,
130 'errorMsg' =>
'BaseSelectAttributeSearchStrategy should be returned for selectContainer ' 131 .
'that requires fulltext search and has custom attributes.' 133 'validStrategy' =>
'BaseSelectAttributeSearchStrategy',
134 'isFullTextSearchRequired' =>
true,
135 'hasCustomAttributesFilters' =>
false,
136 'hasVisibilityFilter' =>
true,
137 'errorMsg' =>
'BaseSelectAttributeSearchStrategy should be returned for selectContainer ' 138 .
'that requires fulltext search and has visibility filters.' 140 'validStrategy' =>
'BaseSelectAttributeSearchStrategy',
141 'isFullTextSearchRequired' =>
true,
142 'hasCustomAttributesFilters' =>
true,
143 'hasVisibilityFilter' =>
true,
144 'errorMsg' =>
'BaseSelectAttributeSearchStrategy should be returned for selectContainer ' 145 .
'that requires fulltext search and has both custom and visibility filters.'
testBaseSelectFullTextSearchStrategy( $validStrategy, $isFullTextSearchRequired, $hasCustomAttributesFilters, $hasVisibilityFilter, $errorMsg)