Browse Source

Add `$template` property to mailer

Jad Bitar 10 years ago
parent
commit
0e051bd138
2 changed files with 26 additions and 0 deletions
  1. 8 0
      src/Mailer/Mailer.php
  2. 18 0
      tests/TestCase/Mailer/MailerTest.php

+ 8 - 0
src/Mailer/Mailer.php

@@ -99,6 +99,14 @@ abstract class Mailer implements ArrayAccess, EventListenerInterface
     public $layout;
 
     /**
+     * Email view template to render, defaults to the triggered mailer
+     * action's name.
+     *
+     * @var string
+     */
+    public $template;
+
+    /**
      * Email instance.
      *
      * @var \Cake\Mailer\Email

+ 18 - 0
tests/TestCase/Mailer/MailerTest.php

@@ -111,7 +111,25 @@ class MailerTest extends TestCase
             ->method('test')
             ->with('foo', 'bar');
 
+        $mailer->template = 'foobar';
         $mailer->send('test', ['foo', 'bar']);
+        $this->assertEquals($mailer->template, 'foobar');
+    }
+
+    public function testSendWithUnsetTemplateDefaultsToActionName()
+    {
+        $email = $this->getMockForEmail('send');
+        $email->expects($this->any())
+            ->method('send')
+            ->will($this->returnValue([]));
+
+        $mailer = $this->getMock('TestApp\Mailer\TestMailer', ['test'], [$email]);
+        $mailer->expects($this->once())
+            ->method('test')
+            ->with('foo', 'bar');
+
+        $mailer->send('test', ['foo', 'bar']);
+        $this->assertEquals($mailer->template, 'test');
     }
 
     /**