12 use Magento\CatalogSearch\Model\Search\SelectContainer\SelectContainerFactory;
19 private $baseSelectAttributesSearchStrategy;
24 private $selectContainerFactory;
34 private $storeManager;
39 private $scopeResolver;
44 ->create(BaseSelectAttributesSearchStrategy::class);
47 ->create(SelectContainerFactory::class);
50 ->create(ResourceConnection::class);
53 ->create(StoreManagerInterface::class);
56 ->create(IndexScopeResolver::class);
61 $selectContainer = $this->getSelectContainerWithoutFullTextSearch();
62 $selectContainer = $this->baseSelectAttributesSearchStrategy->createBaseSelect($selectContainer);
63 $select = $selectContainer->getSelect();
64 $expectedSelect = $this->getMainSelect();
66 $this->assertEquals((
string) $expectedSelect, (
string)
$select);
71 $selectContainer = $this->getSelectContainerWithFullTextSearch();
72 $selectContainer = $this->baseSelectAttributesSearchStrategy->createBaseSelect($selectContainer);
73 $select = $selectContainer->getSelect();
74 $expectedSelect = $this->getFulltextSelect();
76 $this->assertEquals((
string) $expectedSelect, (
string)
$select);
79 private function getMainSelect()
81 $select = $this->resource->getConnection()->select();
84 [
'search_index' => $this->resource->getTableName(
'catalog_product_index_eav')],
85 [
'entity_id' =>
'entity_id']
87 $this->resource->getConnection()->quoteInto(
88 'search_index.store_id = ?',
89 $this->storeManager->getStore()->getId()
96 private function getFulltextSelect()
98 $select = $this->resource->getConnection()->select();
101 [
'eav_index' => $this->resource->getTableName(
'catalog_product_index_eav')],
102 [
'entity_id' =>
'entity_id']
104 $this->resource->getConnection()->quoteInto(
105 'eav_index.store_id = ?',
106 $this->storeManager->getStore()->getId()
109 [
'search_index' => $this->scopeResolver->resolve(
'', [])],
110 'eav_index.entity_id = search_index.entity_id',
113 [
'cea' => $this->resource->getTableName(
'catalog_eav_attribute')],
114 'search_index.attribute_id = cea.attribute_id',
121 private function getSelectContainerWithFullTextSearch()
123 return $this->selectContainerFactory->create(
125 'nonCustomAttributesFilters' => [],
126 'customAttributesFilters' => [],
127 'visibilityFilter' =>
null,
128 'isFullTextSearchRequired' =>
true,
129 'isShowOutOfStockEnabled' =>
false,
132 'select' => $this->resource->getConnection()->select()
137 private function getSelectContainerWithoutFullTextSearch()
139 return $this->selectContainerFactory->create(
141 'nonCustomAttributesFilters' => [],
142 'customAttributesFilters' => [],
143 'visibilityFilter' =>
null,
144 'isFullTextSearchRequired' =>
false,
145 'isShowOutOfStockEnabled' =>
false,
148 'select' => $this->resource->getConnection()->select()
testCreateBaseSelectWithoutFullTextSearch()
testCreateBaseSelectWithFullTextSearch()
static getObjectManager()