Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/cakephp/cakephp/src/TestSuite/EmailAssertTrait.php
<?php
/**
 * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 * @link          https://cakephp.org CakePHP(tm) Project
 * @since         3.3.3
 * @license       https://opensource.org/licenses/mit-license.php MIT License
 */
namespace Cake\TestSuite;

use
Cake\Mailer\Email;

/**
 * Email and mailer assertions.
 *
 * @method \PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount any()
 * @method void assertSame($expected, $result, $message)
 * @method void assertTextContains($needle, $haystack, $message)
 * @method \PHPUnit_Framework_MockObject_MockBuilder getMockBuilder($className)
 *
 * @deprecated 3.7.0 Use Cake\TestSuite\EmailTrait instead
 */
trait EmailAssertTrait
{
   
/**
     * @var \Cake\Mailer\Email
     */
   
protected $_email;

   
/**
     * Sends email using the test email instance.
     *
     * @param array|string|null $content The email's content to send.
     * @return void
     */
   
public function send($content = null)
    {
       
$this->email(true)->send($content);
    }

   
/**
     * Creates an email instance overriding its transport for testing purposes.
     *
     * @param bool $new Tells if new instance should forcibly be created.
     * @return \Cake\Mailer\Email
     */
   
public function email($new = false)
    {
        if (
$new || !$this->_email) {
           
$this->_email = new Email();
           
$this->_email->setProfile(['transport' => 'debug'] + $this->_email->getProfile());
        }

        return
$this->_email;
    }

   
/**
     * Generates mock for given mailer class.
     *
     * @param string $className The mailer's FQCN.
     * @param array $methods The methods to mock on the mailer.
     * @return \Cake\Mailer\Mailer|\PHPUnit_Framework_MockObject_MockObject
     */
   
public function getMockForMailer($className, array $methods = [])
    {
       
$name = current(array_slice(explode('\\', $className), -1));

        if (!
in_array('profile', $methods, true)) {
           
$methods[] = 'profile';
        }

       
$mailer = $this->getMockBuilder($className)
            ->
setMockClassName($name)
            ->
setMethods($methods)
            ->
setConstructorArgs([$this->email()])
            ->
getMock();

       
$mailer->expects($this->any())
            ->
method('profile')
            ->
willReturn($mailer);

        return
$mailer;
    }

   
/**
     * Asserts email content (both text and HTML) contains `$needle`.
     *
     * @param string $needle Text to look for.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailMessageContains($needle, $message = null)
    {
       
$this->assertEmailHtmlMessageContains($needle, $message);
       
$this->assertEmailTextMessageContains($needle, $message);
    }

   
/**
     * Asserts HTML email content contains `$needle`.
     *
     * @param string $needle Text to look for.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailHtmlMessageContains($needle, $message = null)
    {
       
$haystack = $this->email()->message('html');
       
$this->assertTextContains($needle, $haystack, $message);
    }

   
/**
     * Asserts text email content contains `$needle`.
     *
     * @param string $needle Text to look for.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailTextMessageContains($needle, $message = null)
    {
       
$haystack = $this->email()->message('text');
       
$this->assertTextContains($needle, $haystack, $message);
    }

   
/**
     * Asserts email's subject contains `$expected`.
     *
     * @param string $expected Email's subject.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailSubject($expected, $message = null)
    {
       
$result = $this->email()->getSubject();
       
$this->assertSame($expected, $result, $message);
    }

   
/**
     * Asserts email's sender email address and optionally name.
     *
     * @param string $email Sender's email address.
     * @param string|null $name Sender's name.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailFrom($email, $name = null, $message = null)
    {
        if (
$name === null) {
           
$name = $email;
        }

       
$expected = [$email => $name];
       
$result = $this->email()->getFrom();
       
$this->assertSame($expected, $result, $message);
    }

   
/**
     * Asserts email is CC'd to only one email address (and optionally name).
     *
     * @param string $email CC'd email address.
     * @param string|null $name CC'd person name.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailCc($email, $name = null, $message = null)
    {
        if (
$name === null) {
           
$name = $email;
        }

       
$expected = [$email => $name];
       
$result = $this->email()->getCc();
       
$this->assertSame($expected, $result, $message);
    }

   
/**
     * Asserts email CC'd addresses contain given email address (and
     * optionally name).
     *
     * @param string $email CC'd email address.
     * @param string|null $name CC'd person name.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailCcContains($email, $name = null, $message = null)
    {
       
$result = $this->email()->getCc();
       
$this->assertNotEmpty($result[$email], $message);
        if (
$name !== null) {
           
$this->assertEquals($result[$email], $name, $message);
        }
    }

   
/**
     * Asserts email is BCC'd to only one email address (and optionally name).
     *
     * @param string $email BCC'd email address.
     * @param string|null $name BCC'd person name.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailBcc($email, $name = null, $message = null)
    {
        if (
$name === null) {
           
$name = $email;
        }

       
$expected = [$email => $name];
       
$result = $this->email()->getBcc();
       
$this->assertSame($expected, $result, $message);
    }

   
/**
     * Asserts email BCC'd addresses contain given email address (and
     * optionally name).
     *
     * @param string $email BCC'd email address.
     * @param string|null $name BCC'd person name.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailBccContains($email, $name = null, $message = null)
    {
       
$result = $this->email()->getBcc();
       
$this->assertNotEmpty($result[$email], $message);
        if (
$name !== null) {
           
$this->assertEquals($result[$email], $name, $message);
        }
    }

   
/**
     * Asserts email is sent to only the given recipient's address (and
     * optionally name).
     *
     * @param string $email Recipient's email address.
     * @param string|null $name Recipient's name.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailTo($email, $name = null, $message = null)
    {
        if (
$name === null) {
           
$name = $email;
        }

       
$expected = [$email => $name];
       
$result = $this->email()->getTo();
       
$this->assertSame($expected, $result, $message);
    }

   
/**
     * Asserts email recipients' list contains given email address (and
     * optionally name).
     *
     * @param string $email Recipient's email address.
     * @param string|null $name Recipient's name.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailToContains($email, $name = null, $message = null)
    {
       
$result = $this->email()->getTo();
       
$this->assertNotEmpty($result[$email], $message);
        if (
$name !== null) {
           
$this->assertEquals($result[$email], $name, $message);
        }
    }

   
/**
     * Asserts the email attachments contain the given filename (and optionally
     * file info).
     *
     * @param string $filename Expected attachment's filename.
     * @param array|null $file Expected attachment's file info.
     * @param string|null $message The failure message to define.
     * @return void
     */
   
public function assertEmailAttachmentsContains($filename, array $file = null, $message = null)
    {
       
$result = $this->email()->getAttachments();
       
$this->assertNotEmpty($result[$filename], $message);
        if (
$file === null) {
            return;
        }
       
$this->assertContains($file, $result, $message);
       
$this->assertEquals($file, $result[$filename], $message);
    }
}