28 private $filterContext;
33 private $aliasResolver;
43 private $exclusionStrategy;
48 private $termDropdownStrategy;
53 private $staticAttributeStrategy;
65 $this->eavConfig = $this->getMockBuilder(\
Magento\Eav\Model\Config::class)
66 ->disableOriginalConstructor()
67 ->setMethods([
'getAttribute'])
69 $this->aliasResolver = $this->getMockBuilder(
72 ->disableOriginalConstructor()
73 ->setMethods([
'getAlias'])
75 $this->exclusionStrategy = $this->getMockBuilder(ExclusionStrategy::class)
76 ->disableOriginalConstructor()
77 ->setMethods([
'apply'])
79 $this->termDropdownStrategy = $this->getMockBuilder(TermDropdownStrategy::class)
80 ->disableOriginalConstructor()
81 ->setMethods([
'apply'])
83 $this->staticAttributeStrategy = $this->getMockBuilder(StaticAttributeStrategy::class)
84 ->disableOriginalConstructor()
85 ->setMethods([
'apply'])
87 $this->select = $this->getMockBuilder(\
Magento\Framework\DB\Select::class)
88 ->disableOriginalConstructor()
95 'eavConfig' => $this->eavConfig,
96 'aliasResolver' => $this->aliasResolver,
97 'exclusionStrategy' => $this->exclusionStrategy,
98 'termDropdownStrategy' => $this->termDropdownStrategy,
99 'staticAttributeStrategy' => $this->staticAttributeStrategy,
106 $filter = $this->createFilterMock();
107 $this->exclusionStrategy->expects($this->once())
109 ->with($filter, $this->select)
111 $this->eavConfig->expects($this->never())->method(
'getAttribute');
112 $this->assertTrue($this->filterContext->apply($filter, $this->select));
117 $filter = $this->createFilterMock(
'some_field');
118 $this->exclusionStrategy->expects($this->once())
120 ->with($filter, $this->select)
122 $this->eavConfig->expects($this->once())
123 ->method(
'getAttribute')
126 $this->assertFalse($this->filterContext->apply($filter, $this->select));
132 $attribute = $this->createAttributeMock(
'select');
133 $this->eavConfig->expects($this->once())
134 ->method(
'getAttribute')
137 $this->exclusionStrategy->expects($this->once())
139 ->with($filter, $this->select)
141 $this->termDropdownStrategy->expects($this->never())
143 ->with($filter, $this->select)
145 $this->assertFalse($this->filterContext->apply($filter, $this->select));
151 $attribute = $this->createAttributeMock(
'multiselect');
152 $this->eavConfig->expects($this->once())
153 ->method(
'getAttribute')
156 $this->exclusionStrategy->expects($this->once())
158 ->with($filter, $this->select)
160 $this->termDropdownStrategy->expects($this->never())
162 ->with($filter, $this->select)
164 $this->assertFalse($this->filterContext->apply($filter, $this->select));
171 $this->eavConfig->expects($this->once())
172 ->method(
'getAttribute')
175 $this->exclusionStrategy->expects($this->once())
177 ->with($filter, $this->select)
179 $this->staticAttributeStrategy->expects($this->once())
181 ->with($filter, $this->select)
183 $this->assertTrue($this->filterContext->apply($filter, $this->select));
189 $attribute = $this->createAttributeMock(
'text',
'text');
190 $this->eavConfig->expects($this->once())
191 ->method(
'getAttribute')
194 $this->exclusionStrategy->expects($this->once())
196 ->with($filter, $this->select)
198 $this->assertFalse($this->filterContext->apply($filter, $this->select));
206 private function createFilterMock($field =
null,
$type =
null)
208 $filter = $this->getMockBuilder(FilterInterface::class)
209 ->setMethods([
'getField',
'getType'])
210 ->getMockForAbstractClass();
211 $filter->expects($this->any())
213 ->willReturn($field);
214 $filter->expects($this->any())
226 private function createAttributeMock($frontendInput =
null, $backendType =
null)
228 $attribute = $this->getMockBuilder(Attribute::class)
229 ->disableOriginalConstructor()
230 ->setMethods([
'getFrontendInput',
'getBackendType'])
233 ->method(
'getFrontendInput')
234 ->willReturn($frontendInput);
236 ->method(
'getBackendType')
237 ->willReturn($backendType);
testApplyOnTermFilterByStaticAttribute()
testApplyFilterWithoutAttribute()
testApplyOnExclusionFilter()
testApplyOnTermFilterByMultiSelect()
testApplyOnTermFilterBySelect()
testApplyOnTermFilterByUnknownAttributeType()