WordPress.org

Make WordPress Core

Ticket #31313: refactor-is-email-tests.diff

File refactor-is-email-tests.diff, 3.2 KB (added by salcode, 5 years ago)
  • new file tests/phpunit/data/formatting/emails-invalid.txt

    diff --git tests/phpunit/data/formatting/emails-invalid.txt tests/phpunit/data/formatting/emails-invalid.txt
    new file mode 100644
    index 0000000..6c0ed7e
    - +  
     1khaaaaaaaaaaaaaaan!
     2'http://bob.example.com/',
     3sif i'd give u it, spamer!1
     4com.exampleNOSPAMbob
     5bob@your mom
  • new file tests/phpunit/data/formatting/emails-valid.txt

    diff --git tests/phpunit/data/formatting/emails-valid.txt tests/phpunit/data/formatting/emails-valid.txt
    new file mode 100644
    index 0000000..2494e25
    - +  
     1bob@example.com
     2phil@example.info
     3ace@204.32.222.14
     4kevin@many.subdomains.make.a.happy.man.edu
  • tests/phpunit/tests/formatting/IsEmail.php

    diff --git tests/phpunit/tests/formatting/IsEmail.php tests/phpunit/tests/formatting/IsEmail.php
    index 0432fa6..bbccdf2 100644
     
    44 * @group formatting
    55 */
    66class Tests_Formatting_IsEmail extends WP_UnitTestCase {
    7         function test_returns_the_email_address_if_it_is_valid() {
    8                 $data = array(
    9                         "bob@example.com",
    10                         "phil@example.info",
    11                         "ace@204.32.222.14",
    12                         "kevin@many.subdomains.make.a.happy.man.edu"
    13                         );
    14                 foreach ( $data as $datum ) {
    15                         $this->assertEquals( $datum, is_email( $datum ), $datum );
    16                 }
     7
     8        /**
     9         * @dataProvider emails_valid
     10         */
     11        function test_returns_the_email_address_if_it_is_valid( $email ) {
     12                $this->assertEquals( $email, is_email( $email ), $email );
    1713        }
    1814
    19         function test_returns_false_if_given_an_invalid_email_address() {
    20                 $data = array(
    21                         "khaaaaaaaaaaaaaaan!",
    22                         'http://bob.example.com/',
    23                         "sif i'd give u it, spamer!1",
    24                         "com.exampleNOSPAMbob",
    25                         "bob@your mom"
    26                         );
    27                 foreach ($data as $datum) {
    28                         $this->assertFalse(is_email($datum), $datum);
     15        /**
     16         * @dataProvider emails_invalid
     17         */
     18        function test_returns_false_if_given_an_invalid_email_address( $email ) {
     19                $this->assertFalse( is_email( $email ), $email );
     20        }
     21
     22        /**
     23         * PHPUnit dataProvider for valid email addresses
     24         */
     25        function emails_valid() {
     26                return $this->emails( 'emails-valid.txt' );
     27        }
     28
     29        /**
     30         * PHPUnit dataProvider for invalid email addresses
     31         */
     32        function emails_invalid() {
     33                return $this->emails( 'emails-invalid.txt' );
     34        }
     35
     36        /**
     37         * PHPUnit dataprovider for email addresses from test data files
     38         *
     39         * Reads the appropriate test data file and returns data for tests.
     40         * Comments in the data file represented by ### are ignored
     41         *
     42         * @param string filename that contains test data
     43         * @return array of arrays matching the PHPUnit dataProvider requirements.
     44         *   each inner array consists of one element, which is a string
     45         *   representing an email address
     46         *   e.g.
     47         *     array(
     48         *       array( 'one@example.com' ),
     49         *       array( 'two@example.com' ),
     50         *     );
     51         */
     52        function emails( $filename ) {
     53                $emails = file( DIR_TESTDATA . '/formatting/' . $filename );
     54                $data_provided = array();
     55                foreach ( $emails as $line ) {
     56                        // comment
     57                        $commentpos = strpos( $line, "###" );
     58                        if ( false !== $commentpos ) {
     59                                $line = trim( substr( $line, 0, $commentpos ) );
     60                                if ( ! $line ) {
     61                                        continue;
     62                                }
     63                        }
     64                        $data_provided[] = array( trim( $line ) );
    2965                }
     66
     67                return $data_provided;
    3068        }
    3169}