From ba47d85ec578e7635eb8db76d58d2467a5b52a4e Mon Sep 17 00:00:00 2001
From: RomanKis <romaikiss@gmail.com>
Date: Wed, 15 Nov 2017 16:11:00 +0200
Subject: [PATCH] 9764: exception message is wrong and misleading in
 findAccessorMethodName() of Magento\Framework\Reflection\NameFinder

---
 .../Framework/Reflection/NameFinder.php       |  3 ++-
 .../Reflection/Test/Unit/NameFinderTest.php   | 26 +++++++++++++++++--
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/lib/internal/Magento/Framework/Reflection/NameFinder.php b/lib/internal/Magento/Framework/Reflection/NameFinder.php
index 97f4b2f81c1..5cd4ab744bb 100644
--- a/lib/internal/Magento/Framework/Reflection/NameFinder.php
+++ b/lib/internal/Magento/Framework/Reflection/NameFinder.php
@@ -99,8 +99,9 @@ class NameFinder
         } else {
             throw new \LogicException(
                 sprintf(
-                    'Property "%s" does not have corresponding setter in class "%s".',
+                    'Property "%s" does not have accessor method "%s" in class "%s".',
                     $camelCaseProperty,
+                    $accessorName,
                     $class->getName()
                 )
             );
diff --git a/lib/internal/Magento/Framework/Reflection/Test/Unit/NameFinderTest.php b/lib/internal/Magento/Framework/Reflection/Test/Unit/NameFinderTest.php
index 9ddc6d6aa0c..ccf81305df6 100644
--- a/lib/internal/Magento/Framework/Reflection/Test/Unit/NameFinderTest.php
+++ b/lib/internal/Magento/Framework/Reflection/Test/Unit/NameFinderTest.php
@@ -37,7 +37,9 @@ class NameFinderTest extends \PHPUnit\Framework\TestCase
 
     /**
      * @expectedException \Exception
-     * @expectedExceptionMessageRegExp /Property "InvalidAttribute" does not have corresponding setter in class (.*?)/
+     * @codingStandardsIgnoreStart
+     * @expectedExceptionMessage Property "InvalidAttribute" does not have accessor method "setInvalidAttribute" in class "Magento\Framework\Reflection\Test\Unit\DataObject"
+     * @codingStandardsIgnoreEnd
      */
     public function testGetSetterMethodNameInvalidAttribute()
     {
@@ -47,11 +49,31 @@ class NameFinderTest extends \PHPUnit\Framework\TestCase
 
     /**
      * @expectedException \Exception
-     * @expectedExceptionMessageRegExp /Property "ActivE" does not have corresponding setter in class (.*?)/
+     * @codingStandardsIgnoreStart
+     * @expectedExceptionMessage Property "ActivE" does not have accessor method "setActivE" in class "Magento\Framework\Reflection\Test\Unit\DataObject"
+     * @codingStandardsIgnoreEnd
      */
     public function testGetSetterMethodNameWrongCamelCasedAttribute()
     {
         $class = new ClassReflection("\\Magento\\Framework\\Reflection\\Test\\Unit\\DataObject");
         $this->nameFinder->getSetterMethodName($class, 'ActivE');
     }
+
+    /**
+     * @expectedException \LogicException
+     * @expectedExceptionMessage Property "Property" does not have accessor method "getProperty" in class "className".
+     */
+    public function testFindAccessorMethodName()
+    {
+        $reflectionClass = $this->createMock(\Zend\Code\Reflection\ClassReflection::class);
+        $reflectionClass->expects($this->atLeastOnce())->method('hasMethod')->willReturn(false);
+        $reflectionClass->expects($this->atLeastOnce())->method('getName')->willReturn('className');
+
+        $this->nameFinder->findAccessorMethodName(
+            $reflectionClass,
+            'Property',
+            'getProperty',
+            'isProperty'
+        );
+    }
 }
-- 
GitLab