27 $this->block = $this->objectManager->create(
28 \
Magento\CatalogWidget\Block\Product\ProductsList::class
44 public function testCreateCollection()
48 $eavIndexerProcessor = $this->objectManager->get(
49 \
Magento\Catalog\Model\Indexer\Product\Eav\Processor::class
51 $eavIndexerProcessor->reindexAll();
58 $attribute->load(
'multiselect_attribute',
'attribute_code');
59 $multiselectAttributeOptionIds = [];
62 $multiselectAttributeOptionIds[] =
$option->getValue();
65 $encodedConditions =
'^[`1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Combine`,' 66 .
'`aggregator`:`all`,`value`:`1`,`new_child`:``^],`1--1`:' 67 .
'^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Product`,' 68 .
'`attribute`:`multiselect_attribute`,`operator`:`^[^]`,' 69 .
'`value`:[`' . implode(
',', $multiselectAttributeOptionIds) .
'`]^]^]';
70 $this->block->setData(
'conditions_encoded', $encodedConditions);
78 "Product collection was not filtered according to the widget condition." 88 public function testCreateCollectionWithDropdownAttribute()
94 $attribute->load(
'dropdown_attribute',
'attribute_code');
95 $dropdownAttributeOptionIds = [];
98 $dropdownAttributeOptionIds[] =
$option->getValue();
101 $encodedConditions =
'^[`1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Combine`,' .
102 '`aggregator`:`any`,`value`:`1`,`new_child`:``^],`1--1`:^[`type`:`Magento||CatalogWidget||Model||Rule|' .
103 '|Condition||Product`,`attribute`:`dropdown_attribute`,`operator`:`==`,`value`:`' 104 . $dropdownAttributeOptionIds[0] .
'`^],`1--2`:^[`type`:`Magento||CatalogWidget||Model||Rule|' .
105 '|Condition||Product`,`attribute`:`dropdown_attribute`,`operator`:`==`,`value`:`' 106 . $dropdownAttributeOptionIds[1] .
'`^]^]';
107 $this->block->setData(
'conditions_encoded', $encodedConditions);
108 $this->performAssertions(2);
111 $this->performAssertions(2);
114 $this->performAssertions(2);
123 private function performAssertions(
int $count)
131 "Product collection was not filtered according to the widget condition." 148 $this->block->setData(
'conditions_encoded', $encodedConditions);
154 "Product collection was not filtered according to the widget condition." 165 'contains' => [
'^[`1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Combine`,' 166 .
'`aggregator`:`all`,`value`:`1`,`new_child`:``^],' 167 .
'`1--1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Product`,' 168 .
'`attribute`:`sku`,`operator`:`^[^]`,`value`:`virtual`^]^]' ,
'virtual-product'],
169 'not contains' => [
'^[`1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Combine`,' 170 .
'`aggregator`:`all`,`value`:`1`,`new_child`:``^],' 171 .
'`1--1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Product`,' 172 .
'`attribute`:`sku`,`operator`:`!^[^]`,`value`:`virtual`^]^]',
'product-with-xss']
static getObjectManager()