Skip to content

Commit

Permalink
MAGETWO-57051: [Backport] - [GitHub] UTF-8 special character issue in…
Browse files Browse the repository at this point in the history
… widgets #4232 - for 2.1
  • Loading branch information
DianaRusin committed May 4, 2017
1 parent 75a7b9b commit 99e39f9
Show file tree
Hide file tree
Showing 7 changed files with 125 additions and 6 deletions.
14 changes: 14 additions & 0 deletions dev/tests/functional/tests/app/Magento/Cms/Test/Block/Page.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,4 +122,18 @@ public function waitPageInit()
$this->waitForElementNotVisible($this->initialScript);
sleep(3); // TODO: remove after resolving an issue with ajax on Frontend.
}

/**
* Get widget title value.
*
* @param string $widgetType
* @param string $widgetText
* @return string
*/
public function getWidgetTitle($widgetType, $widgetText)
{
return $this->_rootElement
->find(sprintf($this->widgetSelectors[$widgetType], $widgetText), Locator::SELECTOR_XPATH)
->getAttribute('title');
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?php
/**
* Copyright © 2013-2017 Magento, Inc. All rights reserved
* See COPYING.txt for license details.
*/

namespace Magento\Cms\Test\Constraint;

use Magento\Cms\Test\Fixture\CmsPage;
use Magento\Cms\Test\Page\Adminhtml\CmsPageIndex;
use Magento\Cms\Test\Page\CmsPage as FrontCmsPage;
use Magento\Mtf\Client\BrowserInterface;
use Magento\Mtf\Constraint\AbstractConstraint;

/**
* Assert that widget title equals passed from fixture.
*/
class AssertCmsWidgetTitle extends AbstractConstraint
{
/* tags */
const SEVERITY = 'low';
/* end tags */

/**
* Assert that widget title equals passed from fixture.
*
* @param CmsPageIndex $cmsIndex
* @param FrontCmsPage $frontCmsPage
* @param CmsPage $cms
* @param BrowserInterface $browser
* @return void
*/
public function processAssert(
CmsPageIndex $cmsIndex,
FrontCmsPage $frontCmsPage,
CmsPage $cms,
BrowserInterface $browser
) {
$cmsIndex->open();
$filter = ['title' => $cms->getTitle()];
$cmsIndex->getCmsPageGridBlock()->searchAndPreview($filter);
$browser->selectWindow();

$fixtureContent = $cms->getContent();

if (isset($fixtureContent['widget'])) {
foreach ($fixtureContent['widget']['dataset'] as $widget) {
\PHPUnit_Framework_Assert::assertEquals(
$widget['title'],
$frontCmsPage->getCmsPageBlock()->getWidgetTitle($widget['widget_type'], $widget['anchor_text']),
"Widget title wasn't properly saved."
);
}
}
}

/**
* Returns a string representation of the object.
*
* @return string
*/
public function toString()
{
return 'Widget title equals to data from fixture.';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,5 +74,17 @@
<item name="template" xsi:type="string">Viewed Products Grid Template</item>
</field>
</dataset>

<dataset name="widget_with_special_characters_in_title">
<field name="widget_1" xsi:type="array">
<item name="widget_type" xsi:type="string">CMS Page Link</item>
<item name="anchor_text" xsi:type="string">CMS Page Link anchor_text_%isolation%</item>
<item name="title" xsi:type="string">glāžšķūņu rūķīši_%isolation%</item>
<item name="template" xsi:type="string">CMS Page Link Block Template</item>
<item name="chosen_option" xsi:type="array">
<item name="filter_url_key" xsi:type="string">home</item>
</item>
</field>
</dataset>
</repository>
</config>
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,17 @@
<constraint name="Magento\Cms\Test\Constraint\AssertCmsPageInGrid" />
<constraint name="Magento\Cms\Test\Constraint\AssertCmsPageDisabledOnFrontend" />
</variation>
<variation name="CreateCmsPageEntityTestVariation6" summary="Create page with widget which title contains special characters" ticketId="MAGETWO-64972">
<data name="tag" xsi:type="string">to_maintain:yes</data>
<data name="fixtureType" xsi:type="string">cmsPage</data>
<data name="data/is_active" xsi:type="string">Yes</data>
<data name="data/title" xsi:type="string">NewCmsPage%isolation%</data>
<data name="data/identifier" xsi:type="string">identifier-%isolation%</data>
<data name="data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
<data name="data/content/content" xsi:type="string">cms_page_text_content%isolation%</data>
<data name="data/content/widget/dataset" xsi:type="string">widget_with_special_characters_in_title</data>
<constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" />
<constraint name="Magento\Cms\Test\Constraint\AssertCmsWidgetTitle" />
</variation>
</testCase>
</config>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0"?>
<!--
/**
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../vendor/magento/mtf/Magento/Mtf/TestRunner/etc/testRunner.xsd">
<rule scope="testsuite">
<allow>
<class value="Magento\Cms\Test\TestCase\CreateCmsPageEntityTest" />
</allow>
</rule>
</config>
2 changes: 1 addition & 1 deletion lib/web/legacy-build.min.js

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions lib/web/mage/adminhtml/tools.js
Original file line number Diff line number Diff line change
Expand Up @@ -332,12 +332,12 @@ var Base64 = {
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;

input = Base64._utf8_encode(input);

if( typeof window.btoa === "function" ){
return window.btoa(input);
}

input = Base64._utf8_encode(input);

while (i < input.length) {

chr1 = input.charCodeAt(i++);
Expand Down Expand Up @@ -370,7 +370,7 @@ var Base64 = {
var i = 0;

if( typeof window.atob === "function" ){
return window.atob(input);
return Base64._utf8_decode(window.atob(input));
}

input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
Expand All @@ -395,8 +395,8 @@ var Base64 = {
output = output + String.fromCharCode(chr3);
}
}
output = Base64._utf8_decode(output);
return output;

return Base64._utf8_decode(output);
},

mageEncode: function(input){
Expand Down

0 comments on commit 99e39f9

Please sign in to comment.