WordPress.org

Make WordPress Core

Changeset 1300 in tests


Ignore:
Timestamp:
06/29/13 22:31:15 (10 months ago)
Author:
SergeyBiryukov
Message:

Re-implement the mock PHPMailer. props ocean90. fixes #24662.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/includes/bootstrap.php

    r1232 r1300  
    1818 
    1919// These are still needed 
    20 global $wpdb, $current_site, $current_blog, $wp_rewrite, $shortcode_tags, $wp; 
     20global $wpdb, $current_site, $current_blog, $wp_rewrite, $shortcode_tags, $wp, $phpmailer; 
    2121 
    2222if ( !is_readable( $config_file_path ) ) { 
     
    4141 
    4242$multisite = (int) ( defined( 'WP_TESTS_MULTISITE') && WP_TESTS_MULTISITE ); 
     43 
     44// Override the PHPMailer 
     45require_once( dirname( __FILE__ ) . '/mock-mailer.php' ); 
     46$phpmailer = new MockPHPMailer();  
    4347 
    4448system( WP_PHP_BINARY . ' ' . escapeshellarg( dirname( __FILE__ ) . '/install.php' ) . ' ' . escapeshellarg( $config_file_path ) . ' ' . $multisite ); 
  • trunk/includes/mock-mailer.php

    r903 r1300  
    11<?php 
    2  
    3 require_once(ABSPATH . '/wp-includes/class-phpmailer.php'); 
     2require_once( ABSPATH . '/wp-includes/class-phpmailer.php' ); 
    43 
    54class MockPHPMailer extends PHPMailer { 
     
    87    // override the Send function so it doesn't actually send anything 
    98    function Send() { 
    10         if ( (count($this->to) + count($this->cc) + count($this->bcc)) < 1 ) { 
    11             $this->SetError( 'You must provide at least one recipient email address.' ); 
     9        try { 
     10            if ( ! $this->PreSend() ) 
     11                return false; 
     12 
     13            $this->mock_sent[] = array( 
     14                'to'     => $this->to, 
     15                'cc'     => $this->cc, 
     16                'bcc'    => $this->bcc, 
     17                'header' => $this->MIMEHeader, 
     18                'body'   => $this->MIMEBody, 
     19            ); 
     20 
     21            return true; 
     22        } catch ( phpmailerException $e ) { 
    1223            return false; 
    1324        } 
    14  
    15         // Set whether the message is multipart/alternative 
    16         if( ! empty($this->AltBody) ) 
    17             $this->ContentType = 'multipart/alternative'; 
    18  
    19         $this->error_count = 0; // reset errors 
    20         $this->SetMessageType(); 
    21         $header = $this->CreateHeader(); 
    22         $body = $this->CreateBody(); 
    23  
    24         if ( $body == '' ) { 
    25             $this->SetError( 'Message body empty' ); 
    26             return false; 
    27         } 
    28  
    29         $this->mock_sent[] = array( 
    30             'to' => $this->to, 
    31             'cc' => $this->cc, 
    32             'bcc' => $this->bcc, 
    33             'header' => $header, 
    34             'body' => $body, 
    35         ); 
    36  
    37         return true; 
    38     } 
     25    } 
    3926} 
    40  
    41 ?> 
  • trunk/tests/mail.php

    r909 r1300  
    44 * @group pluggable 
    55 * @group mail 
    6  * @ticket UT47 
    76 */ 
    87class Tests_Mail extends WP_UnitTestCase { 
     
    6665        $this->assertEquals($body, $GLOBALS['phpmailer']->mock_sent[0]['body']); 
    6766        $this->assertTrue(strpos($GLOBALS['phpmailer']->mock_sent[0]['header'], 'boundary="----=_Part_4892_25692638.1192452070893"') > 0); 
    68         $this->assertTrue(strpos($GLOBALS['phpmailer']->mock_sent[0]['header'], 'charset=""') > 0); 
     67        $this->assertTrue(strpos($GLOBALS['phpmailer']->mock_sent[0]['header'], 'charset=') > 0); 
    6968        unset( $_SERVER['SERVER_NAME'] ); 
    7069    } 
Note: See TracChangeset for help on using the changeset viewer.