ContentConverterTest.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cms\Setup;
  7. class ContentConverterTest extends \Magento\TestFramework\TestCase\AbstractController
  8. {
  9. /** @var \Magento\Cms\Setup\ContentConverter */
  10. private $converter;
  11. protected function setUp()
  12. {
  13. $this->converter = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  14. \Magento\Cms\Setup\ContentConverter::class
  15. );
  16. }
  17. /**
  18. * @param string $value
  19. * @param string $expected
  20. * @dataProvider convertDataProvider
  21. */
  22. public function testConvert($value, $expected)
  23. {
  24. $this->assertEquals($expected, $this->converter->convert($value));
  25. }
  26. public function convertDataProvider()
  27. {
  28. // @codingStandardsIgnoreStart
  29. $someContent = '<div class="content-heading">
  30. <h2 class="title">Hot Sellers</h2>
  31. <p class="info">Here is what`s trending on Luma right now</p>
  32. </div>';
  33. $serializedWidgetContent = '{{widget type="Magento\\CatalogWidget\\Block\\Product\\ProductsList" products_per_page="8" products_count="8" template="Magento_CatalogWidget::product/widget/content/grid.phtml" conditions_encoded="a:2:[i:1;a:4:[s:4:`type`;s:50:`Magento|CatalogWidget|Model|Rule|Condition|Combine`;s:10:`aggregator`;s:3:`all`;s:5:`value`;s:1:`1`;s:9:`new_child`;s:0:``;]s:4:`1--1`;a:4:[s:4:`type`;s:50:`Magento|CatalogWidget|Model|Rule|Condition|Product`;s:9:`attribute`;s:3:`sku`;s:8:`operator`;s:2:`()`;s:5:`value`;a:8:[i:0;s:4:`WS12`;i:1;s:4:`WT09`;i:2;s:4:`MT07`;i:3;s:4:`MH07`;i:4;s:7:`24-MB02`;i:5;s:7:`24-WB04`;i:6;s:8:`241-MB08`;i:7;s:8:`240-LV05`;]]]"}}';
  34. $jsonEncodedWidgetContent = '{{widget type="Magento\\CatalogWidget\\Block\\Product\\ProductsList" products_per_page="8" products_count="8" template="Magento_CatalogWidget::product/widget/content/grid.phtml" conditions_encoded="^[`1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Combine`,`aggregator`:`all`,`value`:`1`,`new_child`:``^],`1--1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Product`,`attribute`:`sku`,`operator`:`()`,`value`:[`WS12`,`WT09`,`MT07`,`MH07`,`24-MB02`,`24-WB04`,`241-MB08`,`240-LV05`]^]^]"}}';
  35. // @codingStandardsIgnoreEnd
  36. return [
  37. 'no widget' => [
  38. $someContent,
  39. $someContent,
  40. ],
  41. 'one serialized widget, end with widget' => [
  42. $someContent . $serializedWidgetContent,
  43. $someContent . $jsonEncodedWidgetContent,
  44. ],
  45. 'two serialized widgets, end with widget' => [
  46. $someContent . $serializedWidgetContent . $someContent . $serializedWidgetContent,
  47. $someContent . $jsonEncodedWidgetContent . $someContent . $jsonEncodedWidgetContent,
  48. ],
  49. 'one serialized widget, end with content other than widget' => [
  50. $someContent . $serializedWidgetContent . $someContent,
  51. $someContent . $jsonEncodedWidgetContent . $someContent,
  52. ],
  53. 'one json encoded widget, end with widget' => [
  54. $someContent . $jsonEncodedWidgetContent,
  55. $someContent . $jsonEncodedWidgetContent,
  56. ],
  57. 'two json encoded widgets, end with widget' => [
  58. $someContent . $jsonEncodedWidgetContent . $someContent . $jsonEncodedWidgetContent,
  59. $someContent . $jsonEncodedWidgetContent . $someContent . $jsonEncodedWidgetContent,
  60. ],
  61. 'one json encoded widget, one serialized widget, end with widget' => [
  62. $someContent . $jsonEncodedWidgetContent . $someContent . $serializedWidgetContent,
  63. $someContent . $jsonEncodedWidgetContent . $someContent . $jsonEncodedWidgetContent,
  64. ],
  65. 'one json encoded widget, end with content other than widget' => [
  66. $someContent . $jsonEncodedWidgetContent . $someContent,
  67. $someContent . $jsonEncodedWidgetContent . $someContent,
  68. ],
  69. ];
  70. }
  71. }