PageRenderTime 26ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/dev/tests/integration/testsuite/Magento/Widget/Model/Widget/InstanceTest.php

https://gitlab.com/axeltizon/magento-demopoweraccess
PHP | 139 lines | 108 code | 10 blank | 21 comment | 4 complexity | 6fecb928ba48a069ef31f0546d02660c MD5 | raw file
  1. <?php
  2. /**
  3. * Copyright © 2016 Magento. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Widget\Model\Widget;
  7. class InstanceTest extends \PHPUnit_Framework_TestCase
  8. {
  9. /**
  10. * @var \Magento\Widget\Model\Widget\Instance
  11. */
  12. protected $_model;
  13. protected function setUp()
  14. {
  15. $this->_model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  16. 'Magento\Widget\Model\Widget\Instance'
  17. );
  18. }
  19. public function testSetGetType()
  20. {
  21. $this->assertEmpty($this->_model->getType());
  22. $this->assertSame('test', $this->_model->setType('test')->getType());
  23. $this->assertSame('test', $this->_model->getInstanceType());
  24. }
  25. public function testSetThemeId()
  26. {
  27. \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\Framework\App\State')
  28. ->setAreaCode('frontend');
  29. $theme = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
  30. 'Magento\Framework\View\DesignInterface'
  31. )->setDefaultDesignTheme()->getDesignTheme();
  32. $this->_model->setThemeId($theme->getId());
  33. $this->assertEquals($theme->getId(), $this->_model->getThemeId());
  34. }
  35. /**
  36. * @return \Magento\Widget\Model\Widget\Instance
  37. */
  38. public function testGetWidgetConfigAsArray()
  39. {
  40. $config = $this->_model->setType('Magento\Catalog\Block\Product\Widget\NewWidget')->getWidgetConfigAsArray();
  41. $this->assertTrue(is_array($config));
  42. $element = null;
  43. if (isset(
  44. $config['parameters']
  45. ) && isset(
  46. $config['parameters']['template']
  47. ) && isset(
  48. $config['parameters']['template']['values']
  49. ) && isset(
  50. $config['parameters']['template']['values']['list']
  51. )
  52. ) {
  53. $element = $config['parameters']['template']['values']['list'];
  54. }
  55. $expected = [
  56. 'value' => 'product/widget/new/content/new_list.phtml',
  57. 'label' => 'New Products List Template',
  58. ];
  59. $this->assertNotNull($element);
  60. $this->assertEquals($expected, $element);
  61. return $this->_model;
  62. }
  63. /**
  64. * @return \Magento\Widget\Model\Widget\Instance
  65. */
  66. public function testGetWidgetSupportedContainers()
  67. {
  68. $this->_model->setType('Magento\Catalog\Block\Product\Widget\NewWidget');
  69. $containers = $this->_model->getWidgetSupportedContainers();
  70. $this->assertInternalType('array', $containers);
  71. $this->assertContains('sidebar.main', $containers);
  72. $this->assertContains('content', $containers);
  73. $this->assertContains('sidebar.additional', $containers);
  74. return $this->_model;
  75. }
  76. /**
  77. * @param \Magento\Widget\Model\Widget\Instance $model
  78. * @depends testGetWidgetSupportedContainers
  79. */
  80. public function testGetWidgetSupportedTemplatesByContainer($model)
  81. {
  82. $templates = $model->getWidgetSupportedTemplatesByContainer('content');
  83. $this->assertNotEmpty($templates);
  84. $this->assertInternalType('array', $templates);
  85. foreach ($templates as $row) {
  86. $this->assertArrayHasKey('value', $row);
  87. $this->assertArrayHasKey('label', $row);
  88. }
  89. }
  90. /**
  91. * @param \Magento\Widget\Model\Widget\Instance $model
  92. * @depends testGetWidgetConfigAsArray
  93. */
  94. public function testGenerateLayoutUpdateXml(\Magento\Widget\Model\Widget\Instance $model)
  95. {
  96. $params = [
  97. 'display_mode' => 'fixed',
  98. 'types' => ['type_1', 'type_2'],
  99. 'conditions' => [
  100. '1' => [
  101. 'type' => 'Magento\CatalogWidget\Model\Rule\Condition\Combine',
  102. 'aggregator' => 'all',
  103. 'value' => '1',
  104. 'new_child' => '',
  105. ],
  106. '1--1' => [
  107. 'type' => 'Magento\CatalogWidget\Model\Rule\Condition\Product',
  108. 'attribute' => 'attribute_set_id',
  109. 'value' => '4',
  110. 'operator' => '==',
  111. ],
  112. ],
  113. ];
  114. $model->setData('widget_parameters', $params);
  115. $this->assertEquals('', $model->generateLayoutUpdateXml('content'));
  116. $model->setId('test_id')->setPackageTheme('Magento/luma');
  117. $result = $model->generateLayoutUpdateXml('content');
  118. $this->assertContains('<body><referenceContainer name="content">', $result);
  119. $this->assertContains('<block class="' . $model->getType() . '"', $result);
  120. $this->assertEquals(count($params), substr_count($result, '<action method="setData">'));
  121. $this->assertContains('<argument name="name" xsi:type="string">display_mode</argument>', $result);
  122. $this->assertContains('<argument name="value" xsi:type="string">fixed</argument>', $result);
  123. $this->assertContains('<argument name="name" xsi:type="string">types</argument>', $result);
  124. $this->assertContains('<argument name="value" xsi:type="string">type_1,type_2</argument>', $result);
  125. $this->assertContains('<argument name="name" xsi:type="string">conditions_encoded</argument>', $result);
  126. $this->assertContains('s:50:`Magento|CatalogWidget|Model|Rule|Condition|Combine`', $result);
  127. $this->assertContains('s:50:`Magento|CatalogWidget|Model|Rule|Condition|Product`', $result);
  128. }
  129. }