Browse Source

Added deprecation warnings.

Robert Pustułka 8 years ago
parent
commit
f18e3239b9
2 changed files with 77 additions and 45 deletions
  1. 3 3
      src/Controller/Controller.php
  2. 74 42
      tests/TestCase/Controller/ControllerTest.php

+ 3 - 3
src/Controller/Controller.php

@@ -347,7 +347,7 @@ class Controller implements EventListenerInterface, EventDispatcherInterface
         ];
         if (isset($deprecated[$name])) {
             $method = $deprecated[$name];
-//            deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s instead.', $name, $deprecated[$name]['method']));
+            deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s instead.', $name, $method));
 
             return $this->{$method}();
         }
@@ -390,14 +390,14 @@ class Controller implements EventListenerInterface, EventDispatcherInterface
         ];
         if (isset($deprecated[$name])) {
             $method = $deprecated[$name];
-//            deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s() instead.', $name, $method));
+            deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s() instead.', $name, $method));
             $this->{$method}($value);
 
             return;
         }
         if ($name === 'autoRender') {
             $value ? $this->enableAutoRender() : $this->disableAutoRender();
-//            deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->enableAutoRender/disableAutoRender() instead.', $name));
+            deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->enableAutoRender/disableAutoRender() instead.', $name));
 
             return;
         }

+ 74 - 42
tests/TestCase/Controller/ControllerTest.php

@@ -1170,48 +1170,80 @@ class ControllerTest extends TestCase
         $this->assertSame($controller, $controller->enableAutoRender());
         $this->assertTrue($controller->isAutoRenderEnabled());
     }
-//
-//    /**
-//     * Tests deprecated controller properties work
-//     *
-//     * @param $property Deprecated property name
-//     * @param $getter Getter name
-//     * @param $setter Setter name
-//     * @param mixed $value Value to be set
-//     * @return void
-//     * @dataProvider deprecatedControllerPropertyProvider
-//     */
-//    public function testDeprecatedControllerProperty($property, $getter, $setter, $value)
-//    {
-//        $controller = new AnotherTestController();
-//        $message = false;
-//
-//        set_error_handler(function ($errno, $errstr) use (&$message) {
-//            $message = ($errno === E_USER_DEPRECATED ? $errstr : false);
-//        });
-//
-//        try {
-//            $controller->$property = $value;
-//
-//            $this->assertSame($value, $controller->$property);
-//            $this->assertSame($value, $controller->{$getter}());
-//        } finally {
-//            restore_error_handler();
-//        }
-//    }
-//
-//    /**
-//     * Data provider for testing deprecated view properties
-//     *
-//     * @return array
-//     */
-//    public function deprecatedControllerPropertyProvider()
-//    {
-//        return [
-//            ['name', 'getName', 'setName', 'Foo'],
-//            ['autoRender', 'isAutoRenderEnabled', 'enableAutoRender/disableAutoRender', false],
-//        ];
-//    }
+
+    /**
+     * Tests deprecated controller properties work
+     *
+     * @group deprecated
+     * @param $property Deprecated property name
+     * @param $getter Getter name
+     * @param $setter Setter name
+     * @param mixed $value Value to be set
+     * @return void
+     * @dataProvider deprecatedControllerPropertyProvider
+     */
+    public function testDeprecatedControllerProperty($property, $getter, $setter, $value)
+    {
+        $controller = new AnotherTestController();
+        error_reporting(E_ALL ^ E_USER_DEPRECATED);
+        $controller->$property = $value;
+        $this->assertSame($value, $controller->$property);
+        $this->assertSame($value, $controller->{$getter}());
+    }
+
+    /**
+     * Tests deprecated controller properties message
+     *
+     * @group deprecated
+     * @param $property Deprecated property name
+     * @param $getter Getter name
+     * @param $setter Setter name
+     * @param mixed $value Value to be set
+     * @return void
+     * @expectedException PHPUnit\Framework\Error\Deprecated
+     * @expectedExceptionMessageRegExp /^Controller::\$\w+ is deprecated(.*)/
+     * @dataProvider deprecatedControllerPropertyProvider
+     */
+    public function testDeprecatedControllerPropertySetterMessage($property, $getter, $setter, $value)
+    {
+        error_reporting(E_ALL);
+        $controller = new AnotherTestController();
+        $controller->$property = $value;
+    }
+
+    /**
+     * Tests deprecated controller properties message
+     *
+     * @param $property Deprecated property name
+     * @param $getter Getter name
+     * @param $setter Setter name
+     * @param mixed $value Value to be set
+     * @return void
+     * @expectedException PHPUnit\Framework\Error\Deprecated
+     * @expectedExceptionMessageRegExp /^Controller::\$\w+ is deprecated(.*)/
+     * @dataProvider deprecatedControllerPropertyProvider
+     */
+    public function testDeprecatedControllerPropertyGetterMessage($property, $getter, $setter, $value)
+    {
+            error_reporting(E_ALL);
+            $controller = new AnotherTestController();
+            $controller->{$setter}($value);
+            $result = $controller->$property;
+    }
+
+    /**
+     * Data provider for testing deprecated view properties
+     *
+     * @return array
+     */
+    public function deprecatedControllerPropertyProvider()
+    {
+        return [
+            ['name', 'getName', 'setName', 'Foo'],
+            ['plugin', 'getPlugin', 'setPlugin', 'Foo'],
+            ['autoRender', 'isAutoRenderEnabled', 'disableAutoRender', false],
+        ];
+    }
 
     /**
      * Tests deprecated view properties work