Browse Source

Deprecate Email methods which wrap view builder methods.

ADmad 7 years ago
parent
commit
2a451fdd2d
2 changed files with 103 additions and 46 deletions
  1. 43 3
      src/Mailer/Email.php
  2. 60 43
      tests/TestCase/Mailer/EmailTest.php

+ 43 - 3
src/Mailer/Email.php

@@ -1270,6 +1270,10 @@ class Email implements JsonSerializable, Serializable
      */
     public function setTemplate($template)
     {
+        deprecationWarning(
+            'Email::setTemplate() is deprecated. Use $email->viewBuilder()->setTemplate() instead.'
+        );
+
         $this->viewBuilder()->setTemplate($template ?: '');
 
         return $this;
@@ -1282,6 +1286,10 @@ class Email implements JsonSerializable, Serializable
      */
     public function getTemplate()
     {
+        deprecationWarning(
+            'Email::getTemplate() is deprecated. Use $email->viewBuilder()->getTemplate() instead.'
+        );
+
         return $this->viewBuilder()->getTemplate();
     }
 
@@ -1293,6 +1301,10 @@ class Email implements JsonSerializable, Serializable
      */
     public function setLayout($layout)
     {
+        deprecationWarning(
+            'Email::setLayout() is deprecated. Use $email->viewBuilder()->setLayout() instead.'
+        );
+
         $this->viewBuilder()->setLayout($layout ?: false);
 
         return $this;
@@ -1305,6 +1317,10 @@ class Email implements JsonSerializable, Serializable
      */
     public function getLayout()
     {
+        deprecationWarning(
+            'Email::getLayout() is deprecated. Use $email->viewBuilder()->getLayout() instead.'
+        );
+
         return $this->viewBuilder()->getLayout();
     }
 
@@ -1318,7 +1334,11 @@ class Email implements JsonSerializable, Serializable
      */
     public function template($template = false, $layout = false)
     {
-        deprecationWarning('Email::template() is deprecated. Use Email::setTemplate() or Email::getTemplate() and Email::setLayout() or Email::getLayout() instead.');
+        deprecationWarning(
+            'Email::template() is deprecated. ' .
+            'Use $email->viewBuilder()->getTemplate()/setTemplate() ' .
+            'and $email->viewBuilder()->getLayout()/setLayout() instead.'
+        );
 
         if ($template === false) {
             return [
@@ -1425,6 +1445,10 @@ class Email implements JsonSerializable, Serializable
      */
     public function setTheme($theme)
     {
+        deprecationWarning(
+            'Email::setTheme() is deprecated. Use $email->viewBuilder()->setTheme() instead.'
+        );
+
         $this->viewBuilder()->setTheme($theme);
 
         return $this;
@@ -1437,6 +1461,10 @@ class Email implements JsonSerializable, Serializable
      */
     public function getTheme()
     {
+        deprecationWarning(
+            'Email::getTheme() is deprecated. Use $email->viewBuilder()->getTheme() instead.'
+        );
+
         return $this->viewBuilder()->getTheme();
     }
 
@@ -1449,7 +1477,9 @@ class Email implements JsonSerializable, Serializable
      */
     public function theme($theme = null)
     {
-        deprecationWarning('Email::theme() is deprecated. Use Email::setTheme() or Email::getTheme() instead.');
+        deprecationWarning(
+            'Email::theme() is deprecated. Use $email->viewBuilder()->getTheme()/setTheme() instead.'
+        );
 
         if ($theme === null) {
             return $this->getTheme();
@@ -1466,6 +1496,10 @@ class Email implements JsonSerializable, Serializable
      */
     public function setHelpers(array $helpers)
     {
+        deprecationWarning(
+            'Email::setHelpers() is deprecated. Use $email->viewBuilder()->setHelpers() instead.'
+        );
+
         $this->viewBuilder()->setHelpers($helpers, false);
 
         return $this;
@@ -1478,6 +1512,10 @@ class Email implements JsonSerializable, Serializable
      */
     public function getHelpers()
     {
+        deprecationWarning(
+            'Email::getHelpers() is deprecated. Use $email->viewBuilder()->getHelpers() instead.'
+        );
+
         return $this->viewBuilder()->getHelpers();
     }
 
@@ -1490,7 +1528,9 @@ class Email implements JsonSerializable, Serializable
      */
     public function helpers($helpers = null)
     {
-        deprecationWarning('Email::helpers() is deprecated. Use Email::setHelpers() or Email::getHelpers() instead.');
+        deprecationWarning(
+            'Email::helpers() is deprecated. Use $email->viewBuilder()->getHelpers()/setHelpers() instead.'
+        );
 
         if ($helpers === null) {
             return $this->getHelpers();

+ 60 - 43
tests/TestCase/Mailer/EmailTest.php

@@ -804,8 +804,8 @@ class EmailTest extends TestCase
      */
     public function testTemplate()
     {
-        $this->Email->setTemplate('template');
-        $this->assertSame('template', $this->Email->getTemplate());
+        $this->Email->viewBuilder()->setTemplate('template');
+        $this->assertSame('template', $this->Email->viewBuilder()->getTemplate());
     }
 
     /**
@@ -815,8 +815,8 @@ class EmailTest extends TestCase
      */
     public function testLayout()
     {
-        $this->Email->setLayout('layout');
-        $this->assertSame('layout', $this->Email->getLayout());
+        $this->Email->viewBuilder()->setLayout('layout');
+        $this->assertSame('layout', $this->Email->viewBuilder()->getLayout());
     }
 
     /**
@@ -826,11 +826,11 @@ class EmailTest extends TestCase
      */
     public function testTheme()
     {
-        $this->assertNull($this->Email->getTheme());
+        $this->assertNull($this->Email->viewBuilder()->getTheme());
 
-        $this->Email->setTheme('default');
+        $this->Email->viewBuilder()->setTheme('default');
         $expected = 'default';
-        $this->assertSame($expected, $this->Email->getTheme());
+        $this->assertSame($expected, $this->Email->viewBuilder()->getTheme());
     }
 
     /**
@@ -1181,13 +1181,13 @@ class EmailTest extends TestCase
         $result = $this->Email->getSubject();
         $this->assertEquals($config['subject'], $result);
 
-        $result = $this->Email->getTheme();
+        $result = $this->Email->viewBuilder()->getTheme();
         $this->assertEquals($config['theme'], $result);
 
         $result = $this->Email->getTransport();
         $this->assertInstanceOf('Cake\Mailer\Transport\DebugTransport', $result);
 
-        $result = $this->Email->getHelpers();
+        $result = $this->Email->viewBuilder()->getHelpers();
         $this->assertEquals($config['helpers'], $result);
     }
 
@@ -1204,7 +1204,7 @@ class EmailTest extends TestCase
         $this->Email->setTo('you@cakephp.org');
         $this->Email->setSubject('My title');
         $this->Email->setEmailFormat('text');
-        $this->Email->setTemplate('default');
+        $this->Email->viewBuilder()->setTemplate('default');
         $this->Email->setViewVars([
             'content' => 'A message to you',
         ]);
@@ -1637,7 +1637,7 @@ class EmailTest extends TestCase
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
-        $this->Email->setTemplate('default', 'default');
+        $this->Email->viewBuilder()->setTemplate('default', 'default');
         $result = $this->Email->send();
 
         $this->assertContains('This email was sent using the CakePHP Framework', $result['message']);
@@ -1659,8 +1659,9 @@ class EmailTest extends TestCase
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
         $this->Email->setConfig(['empty']);
-        $this->Email->setTemplate('default');
-        $this->Email->setLayout(null);
+        $this->Email->viewBuilder()
+            ->setTemplate('default')
+            ->setLayout(false);
         $result = $this->Email->send('message body.');
 
         $this->assertContains('message body.', $result['message']);
@@ -1681,7 +1682,7 @@ class EmailTest extends TestCase
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
-        $this->Email->setTemplate('default', 'default');
+        $this->Email->viewBuilder()->setTemplate('default', 'default');
         $this->Email->setEmailFormat('both');
         $result = $this->Email->send();
 
@@ -1728,8 +1729,8 @@ class EmailTest extends TestCase
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
-        $this->Email->setTemplate('default');
-        $this->Email->setLayout('japanese');
+        $this->Email->viewBuilder()->setTemplate('default');
+        $this->Email->viewBuilder()->setLayout('japanese');
         $this->Email->charset = 'ISO-2022-JP';
         $result = $this->Email->send();
 
@@ -1754,8 +1755,8 @@ class EmailTest extends TestCase
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
-        $this->Email->setTheme('TestTheme');
-        $this->Email->setTemplate('themed', 'default');
+        $this->Email->viewBuilder()->setTheme('TestTheme');
+        $this->Email->viewBuilder()->setTemplate('themed', 'default');
         $result = $this->Email->send();
 
         $this->assertContains('In TestTheme', $result['message']);
@@ -1781,7 +1782,7 @@ class EmailTest extends TestCase
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
         $this->Email->setEmailFormat('html');
-        $this->Email->setTemplate('html', 'default');
+        $this->Email->viewBuilder()->setTemplate('html', 'default');
         $result = $this->Email->send();
 
         $this->assertTextContains('<h1>HTML Ipsum Presents</h1>', $result['message']);
@@ -1802,7 +1803,7 @@ class EmailTest extends TestCase
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
-        $this->Email->setTemplate('custom', 'default');
+        $this->Email->viewBuilder()->setTemplate('custom', 'default');
         $this->Email->setViewVars(['value' => 12345]);
         $result = $this->Email->send();
 
@@ -1823,7 +1824,7 @@ class EmailTest extends TestCase
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
-        $this->Email->setTemplate('japanese', 'default');
+        $this->Email->viewBuilder()->setTemplate('japanese', 'default');
         $this->Email->setViewVars(['value' => '日本語の差し込み123']);
         $this->Email->charset = 'ISO-2022-JP';
         $result = $this->Email->send();
@@ -1847,18 +1848,18 @@ class EmailTest extends TestCase
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
-        $this->Email->setTemplate('custom_helper', 'default');
+        $this->Email->viewBuilder()
+            ->setTemplate('custom_helper')
+            ->setLayout('default')
+            ->setHelpers(['Time'], false);
         $this->Email->setViewVars(['time' => $timestamp]);
 
-        $result = $this->Email->setHelpers(['Time']);
-        $this->assertInstanceOf('Cake\Mailer\Email', $result);
-
         $result = $this->Email->send();
         $dateTime = new \DateTime;
         $dateTime->setTimestamp($timestamp);
         $this->assertContains('Right now: ' . $dateTime->format($dateTime::ATOM), $result['message']);
 
-        $result = $this->Email->getHelpers();
+        $result = $this->Email->viewBuilder()->getHelpers();
         $this->assertEquals(['Time'], $result);
     }
 
@@ -1876,7 +1877,7 @@ class EmailTest extends TestCase
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
-        $this->Email->setTemplate('image');
+        $this->Email->viewBuilder()->setTemplate('image');
         $this->Email->setEmailFormat('html');
         $server = env('SERVER_NAME') ? env('SERVER_NAME') : 'localhost';
 
@@ -1905,30 +1906,45 @@ class EmailTest extends TestCase
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
 
-        $result = $this->Email->setTemplate('TestPlugin.test_plugin_tpl')->setLayout('default')->send();
+        $this->Email->viewBuilder()
+            ->setTemplate('TestPlugin.test_plugin_tpl')
+            ->setLayout('default');
+        $result = $this->Email->send();
         $this->assertContains('Into TestPlugin.', $result['message']);
         $this->assertContains('This email was sent using the CakePHP Framework', $result['message']);
 
-        $result = $this->Email->setTemplate('TestPlugin.test_plugin_tpl')->setLayout('TestPlugin.plug_default')->send();
+        $this->Email->viewBuilder()
+            ->setTemplate('TestPlugin.test_plugin_tpl')
+            ->setLayout('TestPlugin.plug_default');
+        $result = $this->Email->send();
         $this->assertContains('Into TestPlugin.', $result['message']);
         $this->assertContains('This email was sent using the TestPlugin.', $result['message']);
 
-        $result = $this->Email->setTemplate('TestPlugin.test_plugin_tpl')->setLayout('plug_default')->send();
+        $this->Email->viewBuilder()
+            ->setTemplate('TestPlugin.test_plugin_tpl')
+            ->setLayout('plug_default');
+        $result = $this->Email->send();
         $this->assertContains('Into TestPlugin.', $result['message']);
         $this->assertContains('This email was sent using the TestPlugin.', $result['message']);
 
-        $result = $this->Email->setTemplate('TestPlugin.test_plugin_tpl')->setLayout('TestPluginTwo.default')->send();
+        $this->Email->viewBuilder()
+            ->setTemplate('TestPlugin.test_plugin_tpl')
+            ->setLayout('TestPluginTwo.default');
+        $result = $this->Email->send();
         $this->assertContains('Into TestPlugin.', $result['message']);
         $this->assertContains('This email was sent using TestPluginTwo.', $result['message']);
 
         // test plugin template overridden by theme
-        $this->Email->setTheme('TestTheme');
+        $this->Email->viewBuilder()->setTheme('TestTheme');
         $result = $this->Email->send();
 
         $this->assertContains('Into TestPlugin. (themed)', $result['message']);
 
         $this->Email->setViewVars(['value' => 12345]);
-        $result = $this->Email->setTemplate('custom')->setLayout('TestPlugin.plug_default')->send();
+        $this->Email->viewBuilder()
+            ->setTemplate('custom')
+            ->setLayout('TestPlugin.plug_default');
+        $result = $this->Email->send();
         $this->assertContains('Here is your value: 12345', $result['message']);
         $this->assertContains('This email was sent using the TestPlugin.', $result['message']);
         Plugin::unload();
@@ -1947,7 +1963,8 @@ class EmailTest extends TestCase
         $this->Email->setFrom('cake@cakephp.org');
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
-        $this->Email->setTemplate('fooo')->send();
+        $this->Email->viewBuilder()->setTemplate('fooo');
+        $this->Email->send();
     }
 
     /**
@@ -1963,7 +1980,7 @@ class EmailTest extends TestCase
         $this->Email->setFrom('cake@cakephp.org');
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
-        $this->Email->setTemplate('custom', 'default');
+        $this->Email->viewBuilder()->setTemplate('custom', 'default');
         $this->Email->setProfile([]);
         $this->Email->setViewVars(['value' => 12345]);
         $this->Email->setEmailFormat('both');
@@ -2060,8 +2077,8 @@ class EmailTest extends TestCase
         $this->assertSame($instance->getFrom(), ['cake@cakephp.org' => 'cake@cakephp.org']);
         $this->assertSame($instance->getTo(), ['debug@cakephp.org' => 'debug@cakephp.org']);
         $this->assertSame($instance->getSubject(), 'Update ok');
-        $this->assertSame($instance->getTemplate(), 'custom');
-        $this->assertSame($instance->getLayout(), 'custom_layout');
+        $this->assertSame($instance->viewBuilder()->getTemplate(), 'custom');
+        $this->assertSame($instance->viewBuilder()->getLayout(), 'custom_layout');
         $this->assertEquals($instance->getViewVars(), ['value' => 123, 'name' => 'CakePHP']);
         $this->assertSame($instance->getCc(), ['cake@cakephp.org' => 'Myself']);
 
@@ -2084,7 +2101,7 @@ class EmailTest extends TestCase
         $this->Email->setTo(['you@cakephp.org' => 'You']);
         $this->Email->setSubject('My title');
         $this->Email->setProfile(['empty']);
-        $this->Email->setTemplate('default', 'default');
+        $this->Email->viewBuilder()->setTemplate('default', 'default');
         $this->Email->setEmailFormat('both');
         $this->Email->send();
 
@@ -2119,13 +2136,13 @@ class EmailTest extends TestCase
     public function testReset()
     {
         $this->Email->setTo('cake@cakephp.org');
-        $this->Email->setTheme('TestTheme');
+        $this->Email->viewBuilder()->setTheme('TestTheme');
         $this->Email->setEmailPattern('/.+@.+\..+/i');
         $this->assertSame(['cake@cakephp.org' => 'cake@cakephp.org'], $this->Email->getTo());
 
         $this->Email->reset();
         $this->assertSame([], $this->Email->getTo());
-        $this->assertFalse($this->Email->getTheme());
+        $this->assertFalse($this->Email->viewBuilder()->getTheme());
         $this->assertSame(Email::EMAIL_PATTERN, $this->Email->getEmailPattern());
     }
 
@@ -2218,7 +2235,7 @@ class EmailTest extends TestCase
     public function testRenderWithLayoutAndAttachment()
     {
         $this->Email->setEmailFormat('html');
-        $this->Email->setTemplate('html', 'default');
+        $this->Email->viewBuilder()->setTemplate('html', 'default');
         $this->Email->setAttachments([CAKE . 'basics.php']);
         $result = $this->Email->render([]);
         $this->assertNotEmpty($result);
@@ -2276,8 +2293,8 @@ class EmailTest extends TestCase
         ];
         $this->Email = new Email($configs);
 
-        $template = $this->Email->getTemplate();
-        $layout = $this->Email->getLayout();
+        $template = $this->Email->viewBuilder()->getTemplate();
+        $layout = $this->Email->viewBuilder()->getLayout();
         $this->assertEquals('', $template);
         $this->assertEquals($configs['layout'], $layout);
     }