From 920b4309c91626ced16db52bcda3d6baea2dade1 Mon Sep 17 00:00:00 2001
From: Joan He <johe@magento.com>
Date: Fri, 21 Oct 2016 15:46:42 -0500
Subject: [PATCH] MAGETWO-59923: Configuration in
 \Magento\Indexer\Model\Config\Data contains objects

---
 .../Paypal/Model/Config/Rules/Converter.php   |  2 +-
 .../Magento/Indexer/Model/Config/DataTest.php | 68 +++++++++++++++++++
 .../Indexer/Model/Config/_files/result.php    |  4 +-
 .../Framework/Indexer/Config/Converter.php    |  2 +-
 4 files changed, 72 insertions(+), 4 deletions(-)
 create mode 100644 dev/tests/integration/testsuite/Magento/Indexer/Model/Config/DataTest.php

diff --git a/app/code/Magento/Paypal/Model/Config/Rules/Converter.php b/app/code/Magento/Paypal/Model/Config/Rules/Converter.php
index d65078212d8..d14bc659759 100644
--- a/app/code/Magento/Paypal/Model/Config/Rules/Converter.php
+++ b/app/code/Magento/Paypal/Model/Config/Rules/Converter.php
@@ -85,7 +85,7 @@ class Converter implements ConverterInterface
             if ($this->hasNodeElement($child)) {
                 $result = [
                     'name' => $child->getAttribute('name'),
-                    'message' => __($child->getAttribute('message')),
+                    'message' => __($child->getAttribute('message'))->__toString(),
                     'event' => $child->getAttribute('event'),
                     'argument' => $this->createArgument($child),
                 ];
diff --git a/dev/tests/integration/testsuite/Magento/Indexer/Model/Config/DataTest.php b/dev/tests/integration/testsuite/Magento/Indexer/Model/Config/DataTest.php
new file mode 100644
index 00000000000..673933c6914
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Indexer/Model/Config/DataTest.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Indexer\Model\Config;
+
+class DataTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface
+     */
+    private $objectManager;
+
+    protected function setUp()
+    {
+        $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+
+    }
+
+    public function testConstructor()
+    {
+        $pathFiles = __DIR__ . '/_files';
+        $expectedResult = require $pathFiles . '/result.php';
+        $path = $pathFiles . '/indexer.xml';
+        $fileResolverMock = $this->getMock(\Magento\Framework\Config\FileResolverInterface::class);
+        $fileIterator = $this->objectManager->create(
+            \Magento\Framework\Config\FileIterator::class,
+            [
+                'paths' => [$path],
+            ]
+        );
+        $fileResolverMock->method('get')
+            ->willReturn($fileIterator);
+        $this->cleanAllCache();
+
+        $reader = $this->objectManager->create(
+            \Magento\Framework\Indexer\Config\Reader::class,
+            [
+                'fileResolver' => $fileResolverMock,
+            ]
+        );
+        $model = $this->objectManager->create(
+            \Magento\Indexer\Model\Config\Data::class,
+            [
+                'reader' => $reader,
+            ]
+        );
+        $this->assertEquals($expectedResult['catalogsearch_fulltext'], $model->get('catalogsearch_fulltext'));
+        $model2 = $this->objectManager->create(
+            \Magento\Indexer\Model\Config\Data::class,
+            [
+                'reader' => $reader,
+            ]
+        );
+        $this->assertEquals($expectedResult['catalogsearch_fulltext'], $model2->get('catalogsearch_fulltext'));
+    }
+
+    private function cleanAllCache()
+    {
+        /** @var \Magento\Framework\App\Cache\Frontend\Pool $cachePool */
+        $cachePool = $this->objectManager->get(\Magento\Framework\App\Cache\Frontend\Pool::class);
+        /** @var \Magento\Framework\Cache\FrontendInterface $cacheType */
+        foreach ($cachePool as $cacheType) {
+            $cacheType->getBackend()->clean();
+        }
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Indexer/Model/Config/_files/result.php b/dev/tests/integration/testsuite/Magento/Indexer/Model/Config/_files/result.php
index fc3d466dd49..aed5bbfd99d 100644
--- a/dev/tests/integration/testsuite/Magento/Indexer/Model/Config/_files/result.php
+++ b/dev/tests/integration/testsuite/Magento/Indexer/Model/Config/_files/result.php
@@ -12,8 +12,8 @@ return [
             'primary' => 'first',
             'view_id' => 'catalogsearch_fulltext',
             'action_class' => \Magento\CatalogSearch\Model\Indexer\Fulltext::class,
-            'title' => __('Catalog Search'),
-            'description' => __('Rebuild Catalog product fulltext search index'),
+            'title' => __('Catalog Search')->__toString(),
+            'description' => __('Rebuild Catalog product fulltext search index')->__toString(),
             'fieldsets' =>
                 [
                     [
diff --git a/lib/internal/Magento/Framework/Indexer/Config/Converter.php b/lib/internal/Magento/Framework/Indexer/Config/Converter.php
index b8b17b185a1..14b3ebaacc8 100644
--- a/lib/internal/Magento/Framework/Indexer/Config/Converter.php
+++ b/lib/internal/Magento/Framework/Indexer/Config/Converter.php
@@ -212,7 +212,7 @@ class Converter implements ConverterInterface
     {
         $value = $node->nodeValue;
         if ($this->getAttributeValue($node, 'translate') == 'true') {
-            $value = new \Magento\Framework\Phrase($value);
+            $value = (new \Magento\Framework\Phrase($value))->__toString();
         }
         return $value;
     }
-- 
GitLab