Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
StrategyMapperTest.php
Go to the documentation of this file.
1 <?php
8 
11 use \Magento\CatalogSearch\Model\Search\BaseSelectStrategy\StrategyMapper;
12 use \Magento\CatalogSearch\Model\Search\SelectContainer\SelectContainer;
13 
18 class StrategyMapperTest extends \PHPUnit\Framework\TestCase
19 {
21  private $baseSelectAttributeSearchStrategyMock;
22 
24  private $baseSelectFullTextSearchStrategyMock;
25 
27  private $selectContainerMock;
28 
30  private $strategyMapper;
31 
32  protected function setUp()
33  {
34  $this->baseSelectAttributeSearchStrategyMock = $this->getMockBuilder(
35  BaseSelectAttributesSearchStrategy::class
36  )->disableOriginalConstructor()
37  ->getMock();
38 
39  $this->baseSelectFullTextSearchStrategyMock = $this->getMockBuilder(
40  BaseSelectFullTextSearchStrategy::class
41  )->disableOriginalConstructor()
42  ->getMock();
43 
44  $this->selectContainerMock = $this->getMockBuilder(SelectContainer::class)
45  ->disableOriginalConstructor()
46  ->setMethods(['isFullTextSearchRequired', 'hasCustomAttributesFilters', 'hasVisibilityFilter'])
47  ->getMock();
48 
49  $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
50 
51  $this->strategyMapper = $objectManagerHelper->getObject(
52  StrategyMapper::class,
53  [
54  'baseSelectFullTextSearchStrategy' => $this->baseSelectFullTextSearchStrategyMock,
55  'baseSelectAttributesSearchStrategy' => $this->baseSelectAttributeSearchStrategyMock,
56  ]
57  );
58  }
59 
69  $validStrategy,
70  $isFullTextSearchRequired,
71  $hasCustomAttributesFilters,
72  $hasVisibilityFilter,
73  $errorMsg
74  ) {
75  $this->selectContainerMock
76  ->method('isFullTextSearchRequired')
77  ->willReturn($isFullTextSearchRequired);
78 
79  $this->selectContainerMock
80  ->method('hasCustomAttributesFilters')
81  ->willReturn($hasCustomAttributesFilters);
82 
83  $this->selectContainerMock
84  ->method('hasVisibilityFilter')
85  ->willReturn($hasVisibilityFilter);
86 
87  $expected = $validStrategy === 'BaseSelectFullTextSearchStrategy'
88  ? $this->baseSelectFullTextSearchStrategyMock
89  : $this->baseSelectAttributeSearchStrategyMock;
90 
91  $this->assertSame(
92  $expected,
93  $this->strategyMapper->mapSelectContainerToStrategy($this->selectContainerMock),
94  $errorMsg
95  );
96  }
97 
101  public function dataProvider()
102  {
103  return [
104  [
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.'
111  ], [
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.'
118  ], [
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.'
125  ], [
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.'
132  ], [
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.'
139  ], [
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.'
146  ],
147 
148  ];
149  }
150 }
testBaseSelectFullTextSearchStrategy( $validStrategy, $isFullTextSearchRequired, $hasCustomAttributesFilters, $hasVisibilityFilter, $errorMsg)