/** * @return array */ public function toOptionArray() { $widgets = []; $widgetsOptionsArr = $this->_model->getWidgetsOptionArray('type'); foreach ($widgetsOptionsArr as $widget) { $widgets[$widget['value']] = $widget['label']; } return $widgets; }
public function testGetWidgetSupportedTemplatesByContainersUnknownContainer() { $expectedConfigFile = __DIR__ . '/../_files/mappedConfigArray1.php'; $widget = (include $expectedConfigFile); $this->_widgetModelMock->expects($this->once())->method('getWidgetByClassType')->will($this->returnValue($widget)); $this->_viewFileSystemMock->expects($this->once())->method('getFilename')->will($this->returnValue('')); $expectedTemplates = []; $this->assertEquals($expectedTemplates, $this->_model->getWidgetSupportedTemplatesByContainer('unknown')); }
/** * @param \Magento\Widget\Model\Widget\Instance $model * @depends testGetWidgetConfigAsArray */ public function testGenerateLayoutUpdateXml(\Magento\Widget\Model\Widget\Instance $model) { $params = ['display_mode' => 'fixed', 'types' => ['type_1', 'type_2'], 'conditions' => ['1' => ['type' => 'Magento\\CatalogWidget\\Model\\Rule\\Condition\\Combine', 'aggregator' => 'all', 'value' => '1', 'new_child' => ''], '1--1' => ['type' => 'Magento\\CatalogWidget\\Model\\Rule\\Condition\\Product', 'attribute' => 'attribute_set_id', 'value' => '4', 'operator' => '==']]]; $model->setData('widget_parameters', $params); $this->assertEquals('', $model->generateLayoutUpdateXml('content')); $model->setId('test_id')->setPackageTheme('Magento/luma'); $result = $model->generateLayoutUpdateXml('content'); $this->assertContains('<body><referenceContainer name="content">', $result); $this->assertContains('<block class="' . $model->getType() . '"', $result); $this->assertEquals(count($params), substr_count($result, '<action method="setData">')); $this->assertContains('<argument name="name" xsi:type="string">display_mode</argument>', $result); $this->assertContains('<argument name="value" xsi:type="string">fixed</argument>', $result); $this->assertContains('<argument name="name" xsi:type="string">types</argument>', $result); $this->assertContains('<argument name="value" xsi:type="string">type_1,type_2</argument>', $result); $this->assertContains('<argument name="name" xsi:type="string">conditions_encoded</argument>', $result); $this->assertContains('s:50:`Magento|CatalogWidget|Model|Rule|Condition|Combine`', $result); $this->assertContains('s:50:`Magento|CatalogWidget|Model|Rule|Condition|Product`', $result); }
/** * Prepare and save layout updates data * * @param \Magento\Widget\Model\Widget\Instance $widgetInstance * @param array $pageGroupData * @return string[] of inserted layout updates ids */ protected function _saveLayoutUpdates($widgetInstance, $pageGroupData) { $connection = $this->getConnection(); $pageLayoutUpdateIds = []; $storeIds = $this->_prepareStoreIds($widgetInstance->getStoreIds()); $layoutUpdateTable = $this->getTable('layout_update'); $layoutUpdateLinkTable = $this->getTable('layout_link'); foreach ($pageGroupData['layout_handle_updates'] as $handle) { $xml = $widgetInstance->generateLayoutUpdateXml($pageGroupData['block_reference'], $pageGroupData['template']); $insert = ['handle' => $handle, 'xml' => $xml]; if (strlen($widgetInstance->getSortOrder())) { $insert['sort_order'] = $widgetInstance->getSortOrder(); } $connection->insert($layoutUpdateTable, $insert); $layoutUpdateId = $connection->lastInsertId($layoutUpdateTable); $pageLayoutUpdateIds[] = $layoutUpdateId; $data = []; foreach ($storeIds as $storeId) { $data[] = ['store_id' => $storeId, 'theme_id' => $widgetInstance->getThemeId(), 'layout_update_id' => $layoutUpdateId]; } $connection->insertMultiple($layoutUpdateLinkTable, $data); } return $pageLayoutUpdateIds; }
/** * @param \Magento\Widget\Model\Widget\Instance $model * @depends testGetWidgetConfigAsArray */ public function testGenerateLayoutUpdateXml(\Magento\Widget\Model\Widget\Instance $model) { $params = array('display_mode' => 'fixed', 'types' => array('type_1', 'type_2')); $model->setData('widget_parameters', $params); $this->assertEquals('', $model->generateLayoutUpdateXml('content')); $model->setId('test_id')->setPackageTheme('Magento/plushe'); $result = $model->generateLayoutUpdateXml('content'); $this->assertContains('<referenceContainer name="content">', $result); $this->assertContains('<block class="' . $model->getType() . '"', $result); $this->assertEquals(count($params), substr_count($result, '<action method="setData">')); $this->assertContains('<argument name="name" xsi:type="string">display_mode</argument>', $result); $this->assertContains('<argument name="value" xsi:type="string">fixed</argument>', $result); $this->assertContains('<argument name="name" xsi:type="string">types</argument>', $result); $this->assertContains('<argument name="value" xsi:type="string">type_1,type_2</argument>', $result); }
/** * @return array */ public function toOptionArray() { return $this->_resourceModel->toOptionHash(); }