Make WordPress Core

Changeset 904 in tests


Ignore:
Timestamp:
07/18/2012 07:01:41 PM (14 years ago)
Author:
nacin
Message:

Rename tests to conform to this standard: the class Tests_A_B_C.php should be found in Tests/A/B/C.php.

One class per file. Tests are now organized by general component, rather than by the core file they are found in.

Work in progress. Some classes need to be renamed, and some files still need to be moved (and split up).

Location:
trunk/tests
Files:
16 added
8 deleted
1 edited
16 copied
67 moved

Legend:

Unmodified
Added
Removed
  • trunk/tests/admin/includesPlugin.php

    r903 r904  
    44 * @group admin
    55 */
    6 class TestPluginData extends WP_UnitTestCase {
     6class Tests_Admin_includesPlugin extends WP_UnitTestCase {
    77        function test_get_plugin_data() {
    88                $data = get_plugin_data( DIR_TESTDATA . '/plugins/hello.php' );
     
    2727                }
    2828        }
    29 }
    30 
    31 /**
    32  * @group plugins
    33  * @group admin
    34  */
    35 class TestPluginMenus extends WP_UnitTestCase {
    36 
    37         protected $current_user;
    38 
    39         function setUp() {
    40                 parent::setUp();
    41                 $this->current_user = get_current_user_id();
    42                 // pages require manage_options, ensure we're an administrator
    43                 $user_id = $this->factory->user->create( array( 'role' => 'administrator' ) );
    44                 wp_set_current_user( $user_id );
    45                 update_option( 'siteurl', 'http://example.com' );
    46         }
    47 
    48         function tearDown() {
    49                 parent::tearDown();
    50                 wp_set_current_user( $this->current_user );
    51         }
    5229
    5330        function test_menu_page_url() {
     31                $current_user = get_current_user_id();
     32                wp_set_current_user( $this->factory->user->create( array( 'role' => 'administrator' ) ) );
     33                update_option( 'siteurl', 'http://example.com' );
     34
    5435                // add some pages
    5536                add_options_page( 'Test Settings', 'Test Settings', 'manage_options', 'testsettings', 'mt_settings_page' );
     
    7354                        $this->assertEquals( $value, menu_page_url( $name, false ) );
    7455                }
     56
     57                wp_set_current_user( $current_user );
    7558        }
    7659}
  • trunk/tests/adminbar.php

    r903 r904  
    66 * @group admin
    77 */
    8 class TestWPAdminBar extends WP_UnitTestCase {
     8class Tests_AdminBar extends WP_UnitTestCase {
    99
    1010        static function setUpBeforeClass() {
  • trunk/tests/ajax/Autosave.php

    r903 r904  
    44 * Admin ajax functions to be tested
    55 */
    6 include_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
     6require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
    77
    88/**
     
    1515 * @runTestsInSeparateProcesses
    1616 */
    17 class TestAjaxSaveDraft extends WP_Ajax_UnitTestCase {
     17class Tests_Ajax_Autosave extends WP_Ajax_UnitTestCase {
    1818
    1919        /**
  • trunk/tests/ajax/CompressionTest.php

    r903 r904  
    44 * Admin ajax functions to be tested
    55 */
    6 include_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
     6require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
    77
    88/**
     
    1515 * @runTestsInSeparateProcesses
    1616 */
    17 class TestAjaxCompressionTest extends WP_Ajax_UnitTestCase {
     17class Tests_Ajax_CompressionTest extends WP_Ajax_UnitTestCase {
    1818       
    1919        /**
  • trunk/tests/ajax/DeleteComment.php

    r903 r904  
    44 * Admin ajax functions to be tested
    55 */
    6 include_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
     6require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
    77
    88/**
     
    1515 * @runTestsInSeparateProcesses
    1616 */
    17 class TestAjaxCommentsDelete extends WP_Ajax_UnitTestCase {
     17class Tests_Ajax_DeleteComment extends WP_Ajax_UnitTestCase {
    1818
    1919        /**
  • trunk/tests/ajax/DimComment.php

    r903 r904  
    44 * Admin ajax functions to be tested
    55 */
    6 include_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
     6require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
    77
    88/**
     
    1515 * @runTestsInSeparateProcesses
    1616 */
    17 class TestAjaxCommentsDim extends WP_Ajax_UnitTestCase {
     17class Tests_Ajax_DimComment extends WP_Ajax_UnitTestCase {
    1818
    1919        /**
  • trunk/tests/ajax/EditComment.php

    r903 r904  
    44 * Admin ajax functions to be tested
    55 */
    6 include_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
     6require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
    77
    88/**
     
    1515 * @runTestsInSeparateProcesses
    1616 */
    17 class TestAjaxCommentsEdit extends WP_Ajax_UnitTestCase {
     17class Tests_Ajax_EditComments extends WP_Ajax_UnitTestCase {
    1818
    1919        /**
  • trunk/tests/ajax/GetComments.php

    r903 r904  
    44 * Admin ajax functions to be tested
    55 */
    6 include_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
     6require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
    77
    88/**
     
    1515 * @runTestsInSeparateProcesses
    1616 */
    17 class TestAjaxCommentsGet extends WP_Ajax_UnitTestCase {
     17class Tests_Ajax_GetComments extends WP_Ajax_UnitTestCase {
    1818
    1919        /**
  • trunk/tests/ajax/ReplytoComment.php

    r903 r904  
    44 * Admin ajax functions to be tested
    55 */
    6 include_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
     6require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
    77
    88/**
     
    1515 * @runTestsInSeparateProcesses
    1616 */
    17 class TestAjaxCommentsReply extends WP_Ajax_UnitTestCase {
     17class Tests_Ajax_ReplytoComment extends WP_Ajax_UnitTestCase {
    1818
    1919        /**
  • trunk/tests/ajax/TagSearch.php

    r903 r904  
    44 * Admin ajax functions to be tested
    55 */
    6 include_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
     6require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
    77
    88/**
     
    1515 * @runTestsInSeparateProcesses
    1616 */
    17 class TestAjaxTagSearch extends WP_Ajax_UnitTestCase {
     17class Tests_Ajax_TagSearch extends WP_Ajax_UnitTestCase {
    1818
    1919        /**
  • trunk/tests/basic.php

    r903 r904  
    66 * @group testsuite
    77 */
    8 class WPTestMeta extends WP_UnitTestCase {
     8class Tests_Basic extends WP_UnitTestCase {
    99        var $val;
    1010
     
    4444        }
    4545
    46 }
    47 
    48 /**
    49  * test helper utility functions
    50  *
    51  * @group testsuite
    52  */
    53 class WPTestUtils extends WP_UnitTestCase {
     46        // test some helper utility functions
    5447
    5548        function test_strip_ws() {
  • trunk/tests/canonical.php

    r903 r904  
    99 * @group query
    1010 */
    11 class WP_Test_Canonical extends WP_UnitTestCase {
     11class Tests_Canonical extends WP_UnitTestCase {
    1212
    1313        // This can be defined in a subclass of this class which contains it's own data() method, those tests will be run against the specified permastruct
     
    273273        }
    274274}
    275 
    276 /**
    277  * @group canonical
    278  * @group rewrite
    279  * @group query
    280  */
    281 class WP_Canonical_PageOnFront extends WP_Test_Canonical {
    282         function setUp() {
    283                 parent::setUp();
    284                 global $wp_rewrite;
    285                 update_option( 'show_on_front', 'page' );
    286                 update_option( 'page_for_posts', $this->factory->post->create( array( 'post_title' => 'blog-page', 'post_type' => 'page' ) ) );
    287                 update_option( 'page_on_front', $this->factory->post->create( array( 'post_title' => 'front-page', 'post_type' => 'page' ) ) );
    288                 $wp_rewrite->init();
    289                 flush_rewrite_rules();
    290         }
    291 
    292         function data() {
    293                 /* Format:
    294                  * [0]: $test_url,
    295                  * [1]: expected results: Any of the following can be used
    296                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    297                  *      array( expected query vars to be set, same as 'qv' above )
    298                  *      (string) expected redirect location
    299                  * [3]: (optional) The ticket the test refers to, Can be skipped if unknown.
    300                  */
    301                  return array(
    302                          // Check against an odd redirect
    303                          array( '/page/2/', '/page/2/', 20385 ),
    304                          // The page designated as the front page should redirect to the front of the site
    305                          array( '/front-page/', '/' ),
    306                          array( '/blog-page/?paged=2', '/blog-page/page/2/' ),
    307                  );
    308         }
    309 }
    310 
    311 /**
    312  * @group canonical
    313  * @group rewrite
    314  * @group query
    315  */
    316 class WP_Canonical_CustomRules extends WP_Test_Canonical {
    317         function setUp() {
    318                 parent::setUp();
    319                 global $wp_rewrite;
    320                 // Add a custom Rewrite rule to test category redirections.
    321                 $wp_rewrite->add_rule('ccr/(.+?)/sort/(asc|desc)', 'index.php?category_name=$matches[1]&order=$matches[2]', 'top'); // ccr = Custom_Cat_Rule
    322                 $wp_rewrite->flush_rules();
    323         }
    324 
    325         function data() {
    326                 /* Format:
    327                  * [0]: $test_url,
    328                  * [1]: expected results: Any of the following can be used
    329                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    330                  *      array( expected query vars to be set, same as 'qv' above )
    331                  *      (string) expected redirect location
    332                  * [3]: (optional) The ticket the test refers to, Can be skipped if unknown.
    333                  */
    334                 return array(
    335                         // Custom Rewrite rules leading to Categories
    336                         array( '/ccr/uncategorized/sort/asc/', array( 'url' => '/ccr/uncategorized/sort/asc/', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'asc' ) ) ),
    337                         array( '/ccr/uncategorized/sort/desc/', array( 'url' => '/ccr/uncategorized/sort/desc/', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'desc' ) ) ),
    338                         array( '/ccr/uncategorized/sort/desc/?year=2008', array( 'url' => '/ccr/uncategorized/sort/desc/?year=2008', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'desc', 'year' => '2008' ) ), 17661 ),
    339                 );
    340         }
    341 }
    342 
    343 /**
    344  * @group canonical
    345  * @group rewrite
    346  * @group query
    347  */
    348 class WP_Canonical_NoRewrite extends WP_Test_Canonical {
    349 
    350         var $structure = '';
    351 
    352         // These test cases are run against the test handler in WP_Canonical
    353 
    354         function data() {
    355                 /* Format:
    356                  * [0]: $test_url,
    357                  * [1]: expected results: Any of the following can be used
    358                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    359                  *      array( expected query vars to be set, same as 'qv' above )
    360                  *      (string) expected redirect location
    361                  * [3]: (optional) The ticket the test refers to, Can be skipped if unknown.
    362                  */
    363                 return array(
    364                         array( '/?p=123', '/?p=123' ),
    365 
    366                         // This post_type arg should be stripped, because p=1 exists, and does not have post_type= in its query string
    367                         array( '/?post_type=fake-cpt&p=1', '/?p=1' ),
    368 
    369                         // Strip an existing but incorrect post_type arg
    370                         array( '/?post_type=page&page_id=1', '/?p=1' ),
    371 
    372                         array( '/?p=358 ', array('url' => '/?p=358',  'qv' => array('p' => '358') ) ), // Trailing spaces
    373                         array( '/?p=358%20', array('url' => '/?p=358',  'qv' => array('p' => '358') ) ),
    374 
    375                         array( '/?page_id=1', '/?p=1' ), // redirect page_id to p (should cover page_id|p|attachment_id to one another
    376                         array( '/?page_id=1&post_type=revision', '/?p=1' ),
    377 
    378                 );
    379         }
    380 }
  • trunk/tests/canonical/customRules.php

    r903 r904  
    11<?php
    2 /**
    3  * Tests Canonical redirections.
    4  *
    5  * In the process of doing so, it also tests WP, WP_Rewrite and WP_Query, A fail here may show a bug in any one of these areas.
    6  *
    7  * @group canonical
    8  * @group rewrite
    9  * @group query
    10  */
    11 class WP_Test_Canonical extends WP_UnitTestCase {
    122
    13         // This can be defined in a subclass of this class which contains it's own data() method, those tests will be run against the specified permastruct
    14         var $structure = '/%year%/%monthnum%/%day%/%postname%/';
    15 
    16         var $old_current_user;
    17         var $author_id;
    18         var $post_ids;
    19         var $term_ids;
    20 
    21         function setUp() {
    22                 parent::setUp();
    23 
    24                 update_option( 'comments_per_page', 5 );
    25                 update_option( 'posts_per_page', 5 );
    26 
    27                 update_option( 'permalink_structure', $this->structure );
    28                 create_initial_taxonomies();
    29                 $GLOBALS['wp_rewrite']->init();
    30                 flush_rewrite_rules();
    31 
    32                 $this->old_current_user = get_current_user_id();
    33                 $this->author_id = $this->factory->user->create( array( 'user_login' => 'canonical-author' ) );
    34                 wp_set_current_user( $this->author_id );
    35 
    36                 // Already created by install defaults:
    37                 // $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'uncategorized' ) );
    38 
    39                 $this->term_ids = array();
    40 
    41                 $this->factory->post->create( array( 'import_id' => 587, 'post_title' => 'post-format-test-audio', 'post_date' => '2008-06-02 00:00:00' ) );
    42                 $post_id = $this->factory->post->create( array( 'post_title' => 'post-format-test-gallery', 'post_date' => '2008-06-10 00:00:00' ) );
    43                 $this->factory->post->create( array( 'import_id' => 611, 'post_type' => 'attachment', 'post_title' => 'canola2', 'post_parent' => $post_id ) );
    44 
    45                 $this->factory->post->create( array(
    46                         'post_title' => 'images-test',
    47                         'post_date' => '2008-09-03 00:00:00',
    48                         'post_content' => 'Page 1 <!--nextpage--> Page 2 <!--nextpage--> Page 3'
    49                 ) );
    50 
    51                 $post_id = $this->factory->post->create( array( 'import_id' => 149, 'post_title' => 'comment-test', 'post_date' => '2008-03-03 00:00:00' ) );
    52                 $this->factory->comment->create_post_comments( $post_id, 15 );
    53 
    54                 $this->factory->post->create( array( 'post_date' => '2008-09-05 00:00:00' ) );
    55 
    56                 $this->factory->post->create( array( 'import_id' => 123 ) );
    57                 $this->factory->post->create( array( 'import_id' => 1 ) );
    58                 $this->factory->post->create( array( 'import_id' => 358 ) );
    59 
    60                 $this->factory->post->create( array( 'post_type' => 'page', 'post_title' => 'sample-page' ) );
    61                 $this->factory->post->create( array( 'post_type' => 'page', 'post_title' => 'about' ) );
    62                 $post_id = $this->factory->post->create( array( 'post_type' => 'page', 'post_title' => 'parent-page' ) );
    63                 $this->factory->post->create(
    64                         array( 'import_id' => 144, 'post_type' => 'page', 'post_title' => 'child-page-1', 'post_parent' => $post_id,
    65                 ) );
    66 
    67                 $this->term_ids['/category/parent/'] = $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'parent' ) );
    68                 $this->term_ids['/category/parent/child-1/'] = $this->factory->term->create( array(
    69                         'taxonomy' => 'category', 'name' => 'child-1', 'parent' => $this->term_ids['/category/parent/'],
    70                 ) );
    71                 $this->term_ids['/category/parent/child-1/child-2/'] = $this->factory->term->create( array(
    72                         'taxonomy' => 'category', 'name' => 'child-2', 'parent' => $this->term_ids['/category/parent/child-1/'],
    73                 ) );
    74 
    75                 $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'cat-a' ) );
    76                 $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'cat-b' ) );
    77 
    78                 $this->factory->term->create( array( 'name' => 'post-formats' ) );
    79         }
    80 
    81         function tearDown() {
    82                 parent::tearDown();
    83                 wp_set_current_user( $this->old_current_user );
    84 
    85                 $GLOBALS['wp_rewrite']->init();
    86         }
    87 
    88         // URL's are relative to the site "front", ie. /category/uncategorized/ instead of http://site.../category..
    89         // Return url's are full url's with the prepended home.
    90         function get_canonical($test_url) {
    91                 $test_url = home_url( $test_url );
    92 
    93                 $can_url = redirect_canonical( $test_url, false );
    94                 if ( ! $can_url )
    95                         return $test_url; // No redirect will take place for this request
    96 
    97                 return $can_url;
    98         }
    99 
    100         /**
    101          * @dataProvider data
    102          */
    103         function test($test_url, $expected, $ticket = 0) {
    104                 if ( $ticket )
    105                         $this->knownWPBug( $ticket );
    106 
    107                 $ticket_ref = ($ticket > 0) ? 'Ticket #' . $ticket : null;
    108 
    109                 if ( is_string($expected) )
    110                         $expected = array('url' => $expected);
    111                 elseif ( is_array($expected) && !isset($expected['url']) && !isset($expected['qv']) )
    112                         $expected = array( 'qv' => $expected );
    113 
    114                 if ( !isset($expected['url']) && !isset($expected['qv']) )
    115                         $this->markTestSkipped('No valid expected output was provided');
    116 
    117                 if ( false !== strpos( $test_url, '%d' ) ) {
    118                         if ( false !== strpos( $test_url, '/?author=%d' ) )
    119                                 $test_url = sprintf( $test_url, $this->author_id );
    120                         if ( false !== strpos( $test_url, '?cat=%d' ) )
    121                                 $test_url = sprintf( $test_url, $this->term_ids[ $expected['url'] ] );
    122                 }
    123 
    124                 $this->go_to( home_url( $test_url ) );
    125 
    126                 // Does the redirect match what's expected?
    127                 $can_url = $this->get_canonical( $test_url );
    128                 $parsed_can_url = parse_url($can_url);
    129 
    130                 // Just test the Path and Query if present
    131                 if ( isset($expected['url']) )
    132                         $this->assertEquals( $expected['url'], $parsed_can_url['path'] . (!empty($parsed_can_url['query']) ? '?' . $parsed_can_url['query'] : ''), $ticket_ref );
    133 
    134                 if ( ! isset($expected['qv']) )
    135                         return;
    136 
    137                 // "make" that the request and check the query is correct
    138                 $this->go_to( $can_url );
    139 
    140                 // Are all query vars accounted for, And correct?
    141                 global $wp;
    142 
    143                 $query_vars = array_diff($wp->query_vars, $wp->extra_query_vars);
    144                 if ( !empty($parsed_can_url['query']) ) {
    145                         parse_str($parsed_can_url['query'], $_qv);
    146 
    147                         // $_qv should not contain any elements which are set in $query_vars already (ie. $_GET vars should not be present in the Rewrite)
    148                         $this->assertEquals( array(), array_intersect( $query_vars, $_qv ), 'Query vars are duplicated from the Rewrite into $_GET; ' . $ticket_ref );
    149 
    150                         $query_vars = array_merge($query_vars, $_qv);
    151                 }
    152 
    153                 $this->assertEquals( $expected['qv'], $query_vars );
    154         }
    155 
    156         function data() {
    157                 /* Data format:
    158                  * [0]: $test_url,
    159                  * [1]: expected results: Any of the following can be used
    160                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    161                  *      array( expected query vars to be set, same as 'qv' above )
    162                  *      (string) expected redirect location
    163                  * [2]: (optional) The ticket the test refers to, Can be skipped if unknown.
    164                  */
    165 
    166                 // Please Note: A few test cases are commented out below, Look at the test case following it, in most cases it's simple showing 2 options for the "proper" redirect.
    167                 return array(
    168                         // Categories
    169 
    170                         array( '?cat=%d', '/category/parent/', 15256 ),
    171                         array( '?cat=%d', '/category/parent/child-1/', 15256 ),
    172                         array( '?cat=%d', '/category/parent/child-1/child-2/' ), // no children
    173                         array( '/category/uncategorized/', array( 'url' => '/category/uncategorized/', 'qv' => array( 'category_name' => 'uncategorized' ) ) ),
    174                         array( '/category/uncategorized/page/2/', array( 'url' => '/category/uncategorized/page/2/', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2) ) ),
    175                         array( '/category/uncategorized/?paged=2', array( 'url' => '/category/uncategorized/page/2/', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2) ) ),
    176                         array( '/category/uncategorized/?paged=2&category_name=uncategorized', array( 'url' => '/category/uncategorized/page/2/', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2) ), 17174 ),
    177                         array( '/category/child-1/', '/category/parent/child-1/', 18734 ),
    178                         array( '/category/foo/child-1/', '/category/parent/child-1/', 18734 ),
    179 
    180                         // Categories & Intersections with other vars
    181                         array( '/category/uncategorized/?tag=post-formats', array( 'url' => '/category/uncategorized/?tag=post-formats', 'qv' => array('category_name' => 'uncategorized', 'tag' => 'post-formats') ) ),
    182                         array( '/?category_name=cat-a,cat-b', array( 'url' => '/?category_name=cat-a,cat-b', 'qv' => array( 'category_name' => 'cat-a,cat-b' ) ) ),
    183 
    184                         // Taxonomies with extra Query Vars
    185                         array( '/category/cat-a/page/1/?test=one%20two', '/category/cat-a/?test=one%20two', 18086), // Extra query vars should stay encoded
    186 
    187                         // Categories with Dates
    188                         array( '/category/uncategorized/?paged=2&year=2008', array( 'url' => '/category/uncategorized/page/2/?year=2008', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2, 'year' => 2008) ), 17661 ),
    189 //                      array( '/2008/04/?cat=1', array( 'url' => '/2008/04/?cat=1', 'qv' => array('cat' => '1', 'year' => '2008', 'monthnum' => '04' ) ), 17661 ),
    190                         array( '/2008/04/?cat=1', array( 'url' => '/category/uncategorized/?year=2008&monthnum=04', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008', 'monthnum' => '04' ) ), 17661 ),
    191 //                      array( '/2008/?category_name=cat-a', array( 'url' => '/2008/?category_name=cat-a', 'qv' => array('category_name' => 'cat-a', 'year' => '2008' ) ) ),
    192                         array( '/2008/?category_name=cat-a', array( 'url' => '/category/cat-a/?year=2008', 'qv' => array('category_name' => 'cat-a', 'year' => '2008' ) ), 20386 ),
    193 //                      array( '/category/uncategorized/?year=2008', array( 'url' => '/2008/?category_name=uncategorized', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008' ) ), 17661 ),
    194                         array( '/category/uncategorized/?year=2008', array( 'url' => '/category/uncategorized/?year=2008', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008' ) ), 17661 ),
    195 
    196                         // Pages
    197                         array( '/sample%20page/', array( 'url' => '/sample-page/', 'qv' => array('pagename' => 'sample-page', 'page' => '' ) ), 17653 ), // Page rules always set 'page'
    198                         array( '/sample------page/', array( 'url' => '/sample-page/', 'qv' => array('pagename' => 'sample-page', 'page' => '' ) ), 14773 ),
    199                         array( '/child-page-1/', '/parent-page/child-page-1/'),
    200                         array( '/?page_id=144', '/parent-page/child-page-1/'),
    201                         array( '/abo', '/about/' ),
    202 
    203                         // Posts
    204                         array( '?p=587', '/2008/06/02/post-format-test-audio/'),
    205                         array( '/?name=images-test', '/2008/09/03/images-test/'),
    206                         // Incomplete slug should resolve and remove the ?name= parameter
    207                         array( '/?name=images-te', '/2008/09/03/images-test/', 20374),
    208                         // Page slug should resolve to post slug and remove the ?pagename= parameter
    209                         array( '/?pagename=images-test', '/2008/09/03/images-test/', 20374),
    210 
    211                         array( '/2008/06/02/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    212                         array( '/2008/06/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    213                         array( '/2008/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    214                         array( '/2010/post-format-test-au/', '/2008/06/02/post-format-test-audio/'), // A Year the post is not in
    215                         array( '/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    216 
    217                         array( '/2008/09/03/images-test/3/', array( 'url' => '/2008/09/03/images-test/3/', 'qv' => array( 'name' => 'images-test', 'year' => '2008', 'monthnum' => '09', 'day' => '03', 'page' => '/3' ) ) ), // page = /3 ?!
    218                         array( '/2008/09/03/images-test/8/', '/2008/09/03/images-test/4/', 11694 ), // post with 4 pages
    219                         array( '/2008/09/03/images-test/?page=3', '/2008/09/03/images-test/3/' ),
    220                         array( '/2008/09/03/images-te?page=3', '/2008/09/03/images-test/3/' ),
    221 
    222                         // Comments
    223                         array( '/2008/03/03/comment-test/?cpage=2', '/2008/03/03/comment-test/comment-page-2/', 20388 ),
    224                         array( '/2008/03/03/comment-test/comment-page-20/', '/2008/03/03/comment-test/comment-page-3/', 20388 ), // there's only 3 pages
    225                         array( '/2008/03/03/comment-test/?cpage=30', '/2008/03/03/comment-test/comment-page-3/', 20388 ), // there's only 3 pages
    226 
    227                         // Attachments
    228                         array( '/?attachment_id=611', '/2008/06/10/post-format-test-gallery/canola2/' ),
    229                         array( '/2008/06/10/post-format-test-gallery/?attachment_id=611', '/2008/06/10/post-format-test-gallery/canola2/' ),
    230 
    231                         // Dates
    232                         array( '/?m=2008', '/2008/' ),
    233                         array( '/?m=200809', '/2008/09/'),
    234                         array( '/?m=20080905', '/2008/09/05/'),
    235 
    236                         array( '/2008/?day=05', '/2008/?day=05'), // no redirect
    237                         array( '/2008/09/?day=05', '/2008/09/05/'),
    238                         array( '/2008/?monthnum=9', '/2008/09/'),
    239 
    240                         array( '/?year=2008', '/2008/'),
    241 
    242                         // Authors
    243                         array( '/?author=%d', '/author/canonical-author/' ),
    244 //                      array( '/?author=%d&year=2008', '/2008/?author=3'),
    245                         array( '/?author=%d&year=2008', '/author/canonical-author/?year=2008', 17661 ),
    246 //                      array( '/author/canonical-author/?year=2008', '/2008/?author=3'), //Either or, see previous testcase.
    247                         array( '/author/canonical-author/?year=2008', '/author/canonical-author/?year=2008', 17661 ),
    248 
    249                         // Feeds
    250                         array( '/?feed=atom', '/feed/atom/' ),
    251                         array( '/?feed=rss2', '/feed/' ),
    252                         array( '/?feed=comments-rss2', '/comments/feed/'),
    253                         array( '/?feed=comments-atom', '/comments/feed/atom/'),
    254 
    255                         // Feeds (per-post)
    256                         array( '/2008/03/03/comment-test/?feed=comments-atom', '/2008/03/03/comment-test/feed/atom/'),
    257                         array( '/?p=149&feed=comments-atom', '/2008/03/03/comment-test/feed/atom/'),
    258                         array( '/2008/03/03/comment-test/?feed=comments-atom', '/2008/03/03/comment-test/feed/atom/' ),
    259 
    260                         // Index
    261                         array( '/?paged=1', '/' ),
    262                         array( '/page/1/', '/' ),
    263                         array( '/page1/', '/' ),
    264                         array( '/?paged=2', '/page/2/' ),
    265                         array( '/page2/', '/page/2/' ),
    266 
    267                         // Misc
    268                         array( '/2008%20', '/2008' ),
    269                         array( '//2008////', '/2008/' ),
    270 
    271                         // Todo: Endpoints (feeds, trackbacks, etc), More fuzzed mixed query variables, comment paging, Home page (Static)
    272                 );
    273         }
    274 }
     3require_once dirname( dirname( __FILE__ ) ) . '/canonical.php';
    2754
    2765/**
     
    2798 * @group query
    2809 */
    281 class WP_Canonical_PageOnFront extends WP_Test_Canonical {
    282         function setUp() {
    283                 parent::setUp();
    284                 global $wp_rewrite;
    285                 update_option( 'show_on_front', 'page' );
    286                 update_option( 'page_for_posts', $this->factory->post->create( array( 'post_title' => 'blog-page', 'post_type' => 'page' ) ) );
    287                 update_option( 'page_on_front', $this->factory->post->create( array( 'post_title' => 'front-page', 'post_type' => 'page' ) ) );
    288                 $wp_rewrite->init();
    289                 flush_rewrite_rules();
    290         }
    291 
    292         function data() {
    293                 /* Format:
    294                  * [0]: $test_url,
    295                  * [1]: expected results: Any of the following can be used
    296                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    297                  *      array( expected query vars to be set, same as 'qv' above )
    298                  *      (string) expected redirect location
    299                  * [3]: (optional) The ticket the test refers to, Can be skipped if unknown.
    300                  */
    301                  return array(
    302                          // Check against an odd redirect
    303                          array( '/page/2/', '/page/2/', 20385 ),
    304                          // The page designated as the front page should redirect to the front of the site
    305                          array( '/front-page/', '/' ),
    306                          array( '/blog-page/?paged=2', '/blog-page/page/2/' ),
    307                  );
    308         }
    309 }
    310 
    311 /**
    312  * @group canonical
    313  * @group rewrite
    314  * @group query
    315  */
    316 class WP_Canonical_CustomRules extends WP_Test_Canonical {
     10class Tests_Canonical_CustomRules extends Tests_Canonical {
    31711        function setUp() {
    31812                parent::setUp();
     
    34034        }
    34135}
    342 
    343 /**
    344  * @group canonical
    345  * @group rewrite
    346  * @group query
    347  */
    348 class WP_Canonical_NoRewrite extends WP_Test_Canonical {
    349 
    350         var $structure = '';
    351 
    352         // These test cases are run against the test handler in WP_Canonical
    353 
    354         function data() {
    355                 /* Format:
    356                  * [0]: $test_url,
    357                  * [1]: expected results: Any of the following can be used
    358                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    359                  *      array( expected query vars to be set, same as 'qv' above )
    360                  *      (string) expected redirect location
    361                  * [3]: (optional) The ticket the test refers to, Can be skipped if unknown.
    362                  */
    363                 return array(
    364                         array( '/?p=123', '/?p=123' ),
    365 
    366                         // This post_type arg should be stripped, because p=1 exists, and does not have post_type= in its query string
    367                         array( '/?post_type=fake-cpt&p=1', '/?p=1' ),
    368 
    369                         // Strip an existing but incorrect post_type arg
    370                         array( '/?post_type=page&page_id=1', '/?p=1' ),
    371 
    372                         array( '/?p=358 ', array('url' => '/?p=358',  'qv' => array('p' => '358') ) ), // Trailing spaces
    373                         array( '/?p=358%20', array('url' => '/?p=358',  'qv' => array('p' => '358') ) ),
    374 
    375                         array( '/?page_id=1', '/?p=1' ), // redirect page_id to p (should cover page_id|p|attachment_id to one another
    376                         array( '/?page_id=1&post_type=revision', '/?p=1' ),
    377 
    378                 );
    379         }
    380 }
  • trunk/tests/canonical/noRewrite.php

    r903 r904  
    11<?php
    2 /**
    3  * Tests Canonical redirections.
    4  *
    5  * In the process of doing so, it also tests WP, WP_Rewrite and WP_Query, A fail here may show a bug in any one of these areas.
    6  *
    7  * @group canonical
    8  * @group rewrite
    9  * @group query
    10  */
    11 class WP_Test_Canonical extends WP_UnitTestCase {
    122
    13         // This can be defined in a subclass of this class which contains it's own data() method, those tests will be run against the specified permastruct
    14         var $structure = '/%year%/%monthnum%/%day%/%postname%/';
    15 
    16         var $old_current_user;
    17         var $author_id;
    18         var $post_ids;
    19         var $term_ids;
    20 
    21         function setUp() {
    22                 parent::setUp();
    23 
    24                 update_option( 'comments_per_page', 5 );
    25                 update_option( 'posts_per_page', 5 );
    26 
    27                 update_option( 'permalink_structure', $this->structure );
    28                 create_initial_taxonomies();
    29                 $GLOBALS['wp_rewrite']->init();
    30                 flush_rewrite_rules();
    31 
    32                 $this->old_current_user = get_current_user_id();
    33                 $this->author_id = $this->factory->user->create( array( 'user_login' => 'canonical-author' ) );
    34                 wp_set_current_user( $this->author_id );
    35 
    36                 // Already created by install defaults:
    37                 // $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'uncategorized' ) );
    38 
    39                 $this->term_ids = array();
    40 
    41                 $this->factory->post->create( array( 'import_id' => 587, 'post_title' => 'post-format-test-audio', 'post_date' => '2008-06-02 00:00:00' ) );
    42                 $post_id = $this->factory->post->create( array( 'post_title' => 'post-format-test-gallery', 'post_date' => '2008-06-10 00:00:00' ) );
    43                 $this->factory->post->create( array( 'import_id' => 611, 'post_type' => 'attachment', 'post_title' => 'canola2', 'post_parent' => $post_id ) );
    44 
    45                 $this->factory->post->create( array(
    46                         'post_title' => 'images-test',
    47                         'post_date' => '2008-09-03 00:00:00',
    48                         'post_content' => 'Page 1 <!--nextpage--> Page 2 <!--nextpage--> Page 3'
    49                 ) );
    50 
    51                 $post_id = $this->factory->post->create( array( 'import_id' => 149, 'post_title' => 'comment-test', 'post_date' => '2008-03-03 00:00:00' ) );
    52                 $this->factory->comment->create_post_comments( $post_id, 15 );
    53 
    54                 $this->factory->post->create( array( 'post_date' => '2008-09-05 00:00:00' ) );
    55 
    56                 $this->factory->post->create( array( 'import_id' => 123 ) );
    57                 $this->factory->post->create( array( 'import_id' => 1 ) );
    58                 $this->factory->post->create( array( 'import_id' => 358 ) );
    59 
    60                 $this->factory->post->create( array( 'post_type' => 'page', 'post_title' => 'sample-page' ) );
    61                 $this->factory->post->create( array( 'post_type' => 'page', 'post_title' => 'about' ) );
    62                 $post_id = $this->factory->post->create( array( 'post_type' => 'page', 'post_title' => 'parent-page' ) );
    63                 $this->factory->post->create(
    64                         array( 'import_id' => 144, 'post_type' => 'page', 'post_title' => 'child-page-1', 'post_parent' => $post_id,
    65                 ) );
    66 
    67                 $this->term_ids['/category/parent/'] = $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'parent' ) );
    68                 $this->term_ids['/category/parent/child-1/'] = $this->factory->term->create( array(
    69                         'taxonomy' => 'category', 'name' => 'child-1', 'parent' => $this->term_ids['/category/parent/'],
    70                 ) );
    71                 $this->term_ids['/category/parent/child-1/child-2/'] = $this->factory->term->create( array(
    72                         'taxonomy' => 'category', 'name' => 'child-2', 'parent' => $this->term_ids['/category/parent/child-1/'],
    73                 ) );
    74 
    75                 $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'cat-a' ) );
    76                 $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'cat-b' ) );
    77 
    78                 $this->factory->term->create( array( 'name' => 'post-formats' ) );
    79         }
    80 
    81         function tearDown() {
    82                 parent::tearDown();
    83                 wp_set_current_user( $this->old_current_user );
    84 
    85                 $GLOBALS['wp_rewrite']->init();
    86         }
    87 
    88         // URL's are relative to the site "front", ie. /category/uncategorized/ instead of http://site.../category..
    89         // Return url's are full url's with the prepended home.
    90         function get_canonical($test_url) {
    91                 $test_url = home_url( $test_url );
    92 
    93                 $can_url = redirect_canonical( $test_url, false );
    94                 if ( ! $can_url )
    95                         return $test_url; // No redirect will take place for this request
    96 
    97                 return $can_url;
    98         }
    99 
    100         /**
    101          * @dataProvider data
    102          */
    103         function test($test_url, $expected, $ticket = 0) {
    104                 if ( $ticket )
    105                         $this->knownWPBug( $ticket );
    106 
    107                 $ticket_ref = ($ticket > 0) ? 'Ticket #' . $ticket : null;
    108 
    109                 if ( is_string($expected) )
    110                         $expected = array('url' => $expected);
    111                 elseif ( is_array($expected) && !isset($expected['url']) && !isset($expected['qv']) )
    112                         $expected = array( 'qv' => $expected );
    113 
    114                 if ( !isset($expected['url']) && !isset($expected['qv']) )
    115                         $this->markTestSkipped('No valid expected output was provided');
    116 
    117                 if ( false !== strpos( $test_url, '%d' ) ) {
    118                         if ( false !== strpos( $test_url, '/?author=%d' ) )
    119                                 $test_url = sprintf( $test_url, $this->author_id );
    120                         if ( false !== strpos( $test_url, '?cat=%d' ) )
    121                                 $test_url = sprintf( $test_url, $this->term_ids[ $expected['url'] ] );
    122                 }
    123 
    124                 $this->go_to( home_url( $test_url ) );
    125 
    126                 // Does the redirect match what's expected?
    127                 $can_url = $this->get_canonical( $test_url );
    128                 $parsed_can_url = parse_url($can_url);
    129 
    130                 // Just test the Path and Query if present
    131                 if ( isset($expected['url']) )
    132                         $this->assertEquals( $expected['url'], $parsed_can_url['path'] . (!empty($parsed_can_url['query']) ? '?' . $parsed_can_url['query'] : ''), $ticket_ref );
    133 
    134                 if ( ! isset($expected['qv']) )
    135                         return;
    136 
    137                 // "make" that the request and check the query is correct
    138                 $this->go_to( $can_url );
    139 
    140                 // Are all query vars accounted for, And correct?
    141                 global $wp;
    142 
    143                 $query_vars = array_diff($wp->query_vars, $wp->extra_query_vars);
    144                 if ( !empty($parsed_can_url['query']) ) {
    145                         parse_str($parsed_can_url['query'], $_qv);
    146 
    147                         // $_qv should not contain any elements which are set in $query_vars already (ie. $_GET vars should not be present in the Rewrite)
    148                         $this->assertEquals( array(), array_intersect( $query_vars, $_qv ), 'Query vars are duplicated from the Rewrite into $_GET; ' . $ticket_ref );
    149 
    150                         $query_vars = array_merge($query_vars, $_qv);
    151                 }
    152 
    153                 $this->assertEquals( $expected['qv'], $query_vars );
    154         }
    155 
    156         function data() {
    157                 /* Data format:
    158                  * [0]: $test_url,
    159                  * [1]: expected results: Any of the following can be used
    160                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    161                  *      array( expected query vars to be set, same as 'qv' above )
    162                  *      (string) expected redirect location
    163                  * [2]: (optional) The ticket the test refers to, Can be skipped if unknown.
    164                  */
    165 
    166                 // Please Note: A few test cases are commented out below, Look at the test case following it, in most cases it's simple showing 2 options for the "proper" redirect.
    167                 return array(
    168                         // Categories
    169 
    170                         array( '?cat=%d', '/category/parent/', 15256 ),
    171                         array( '?cat=%d', '/category/parent/child-1/', 15256 ),
    172                         array( '?cat=%d', '/category/parent/child-1/child-2/' ), // no children
    173                         array( '/category/uncategorized/', array( 'url' => '/category/uncategorized/', 'qv' => array( 'category_name' => 'uncategorized' ) ) ),
    174                         array( '/category/uncategorized/page/2/', array( 'url' => '/category/uncategorized/page/2/', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2) ) ),
    175                         array( '/category/uncategorized/?paged=2', array( 'url' => '/category/uncategorized/page/2/', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2) ) ),
    176                         array( '/category/uncategorized/?paged=2&category_name=uncategorized', array( 'url' => '/category/uncategorized/page/2/', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2) ), 17174 ),
    177                         array( '/category/child-1/', '/category/parent/child-1/', 18734 ),
    178                         array( '/category/foo/child-1/', '/category/parent/child-1/', 18734 ),
    179 
    180                         // Categories & Intersections with other vars
    181                         array( '/category/uncategorized/?tag=post-formats', array( 'url' => '/category/uncategorized/?tag=post-formats', 'qv' => array('category_name' => 'uncategorized', 'tag' => 'post-formats') ) ),
    182                         array( '/?category_name=cat-a,cat-b', array( 'url' => '/?category_name=cat-a,cat-b', 'qv' => array( 'category_name' => 'cat-a,cat-b' ) ) ),
    183 
    184                         // Taxonomies with extra Query Vars
    185                         array( '/category/cat-a/page/1/?test=one%20two', '/category/cat-a/?test=one%20two', 18086), // Extra query vars should stay encoded
    186 
    187                         // Categories with Dates
    188                         array( '/category/uncategorized/?paged=2&year=2008', array( 'url' => '/category/uncategorized/page/2/?year=2008', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2, 'year' => 2008) ), 17661 ),
    189 //                      array( '/2008/04/?cat=1', array( 'url' => '/2008/04/?cat=1', 'qv' => array('cat' => '1', 'year' => '2008', 'monthnum' => '04' ) ), 17661 ),
    190                         array( '/2008/04/?cat=1', array( 'url' => '/category/uncategorized/?year=2008&monthnum=04', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008', 'monthnum' => '04' ) ), 17661 ),
    191 //                      array( '/2008/?category_name=cat-a', array( 'url' => '/2008/?category_name=cat-a', 'qv' => array('category_name' => 'cat-a', 'year' => '2008' ) ) ),
    192                         array( '/2008/?category_name=cat-a', array( 'url' => '/category/cat-a/?year=2008', 'qv' => array('category_name' => 'cat-a', 'year' => '2008' ) ), 20386 ),
    193 //                      array( '/category/uncategorized/?year=2008', array( 'url' => '/2008/?category_name=uncategorized', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008' ) ), 17661 ),
    194                         array( '/category/uncategorized/?year=2008', array( 'url' => '/category/uncategorized/?year=2008', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008' ) ), 17661 ),
    195 
    196                         // Pages
    197                         array( '/sample%20page/', array( 'url' => '/sample-page/', 'qv' => array('pagename' => 'sample-page', 'page' => '' ) ), 17653 ), // Page rules always set 'page'
    198                         array( '/sample------page/', array( 'url' => '/sample-page/', 'qv' => array('pagename' => 'sample-page', 'page' => '' ) ), 14773 ),
    199                         array( '/child-page-1/', '/parent-page/child-page-1/'),
    200                         array( '/?page_id=144', '/parent-page/child-page-1/'),
    201                         array( '/abo', '/about/' ),
    202 
    203                         // Posts
    204                         array( '?p=587', '/2008/06/02/post-format-test-audio/'),
    205                         array( '/?name=images-test', '/2008/09/03/images-test/'),
    206                         // Incomplete slug should resolve and remove the ?name= parameter
    207                         array( '/?name=images-te', '/2008/09/03/images-test/', 20374),
    208                         // Page slug should resolve to post slug and remove the ?pagename= parameter
    209                         array( '/?pagename=images-test', '/2008/09/03/images-test/', 20374),
    210 
    211                         array( '/2008/06/02/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    212                         array( '/2008/06/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    213                         array( '/2008/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    214                         array( '/2010/post-format-test-au/', '/2008/06/02/post-format-test-audio/'), // A Year the post is not in
    215                         array( '/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    216 
    217                         array( '/2008/09/03/images-test/3/', array( 'url' => '/2008/09/03/images-test/3/', 'qv' => array( 'name' => 'images-test', 'year' => '2008', 'monthnum' => '09', 'day' => '03', 'page' => '/3' ) ) ), // page = /3 ?!
    218                         array( '/2008/09/03/images-test/8/', '/2008/09/03/images-test/4/', 11694 ), // post with 4 pages
    219                         array( '/2008/09/03/images-test/?page=3', '/2008/09/03/images-test/3/' ),
    220                         array( '/2008/09/03/images-te?page=3', '/2008/09/03/images-test/3/' ),
    221 
    222                         // Comments
    223                         array( '/2008/03/03/comment-test/?cpage=2', '/2008/03/03/comment-test/comment-page-2/', 20388 ),
    224                         array( '/2008/03/03/comment-test/comment-page-20/', '/2008/03/03/comment-test/comment-page-3/', 20388 ), // there's only 3 pages
    225                         array( '/2008/03/03/comment-test/?cpage=30', '/2008/03/03/comment-test/comment-page-3/', 20388 ), // there's only 3 pages
    226 
    227                         // Attachments
    228                         array( '/?attachment_id=611', '/2008/06/10/post-format-test-gallery/canola2/' ),
    229                         array( '/2008/06/10/post-format-test-gallery/?attachment_id=611', '/2008/06/10/post-format-test-gallery/canola2/' ),
    230 
    231                         // Dates
    232                         array( '/?m=2008', '/2008/' ),
    233                         array( '/?m=200809', '/2008/09/'),
    234                         array( '/?m=20080905', '/2008/09/05/'),
    235 
    236                         array( '/2008/?day=05', '/2008/?day=05'), // no redirect
    237                         array( '/2008/09/?day=05', '/2008/09/05/'),
    238                         array( '/2008/?monthnum=9', '/2008/09/'),
    239 
    240                         array( '/?year=2008', '/2008/'),
    241 
    242                         // Authors
    243                         array( '/?author=%d', '/author/canonical-author/' ),
    244 //                      array( '/?author=%d&year=2008', '/2008/?author=3'),
    245                         array( '/?author=%d&year=2008', '/author/canonical-author/?year=2008', 17661 ),
    246 //                      array( '/author/canonical-author/?year=2008', '/2008/?author=3'), //Either or, see previous testcase.
    247                         array( '/author/canonical-author/?year=2008', '/author/canonical-author/?year=2008', 17661 ),
    248 
    249                         // Feeds
    250                         array( '/?feed=atom', '/feed/atom/' ),
    251                         array( '/?feed=rss2', '/feed/' ),
    252                         array( '/?feed=comments-rss2', '/comments/feed/'),
    253                         array( '/?feed=comments-atom', '/comments/feed/atom/'),
    254 
    255                         // Feeds (per-post)
    256                         array( '/2008/03/03/comment-test/?feed=comments-atom', '/2008/03/03/comment-test/feed/atom/'),
    257                         array( '/?p=149&feed=comments-atom', '/2008/03/03/comment-test/feed/atom/'),
    258                         array( '/2008/03/03/comment-test/?feed=comments-atom', '/2008/03/03/comment-test/feed/atom/' ),
    259 
    260                         // Index
    261                         array( '/?paged=1', '/' ),
    262                         array( '/page/1/', '/' ),
    263                         array( '/page1/', '/' ),
    264                         array( '/?paged=2', '/page/2/' ),
    265                         array( '/page2/', '/page/2/' ),
    266 
    267                         // Misc
    268                         array( '/2008%20', '/2008' ),
    269                         array( '//2008////', '/2008/' ),
    270 
    271                         // Todo: Endpoints (feeds, trackbacks, etc), More fuzzed mixed query variables, comment paging, Home page (Static)
    272                 );
    273         }
    274 }
     3require_once dirname( dirname( __FILE__ ) ) . '/canonical.php';
    2754
    2765/**
     
    2798 * @group query
    2809 */
    281 class WP_Canonical_PageOnFront extends WP_Test_Canonical {
    282         function setUp() {
    283                 parent::setUp();
    284                 global $wp_rewrite;
    285                 update_option( 'show_on_front', 'page' );
    286                 update_option( 'page_for_posts', $this->factory->post->create( array( 'post_title' => 'blog-page', 'post_type' => 'page' ) ) );
    287                 update_option( 'page_on_front', $this->factory->post->create( array( 'post_title' => 'front-page', 'post_type' => 'page' ) ) );
    288                 $wp_rewrite->init();
    289                 flush_rewrite_rules();
    290         }
    291 
    292         function data() {
    293                 /* Format:
    294                  * [0]: $test_url,
    295                  * [1]: expected results: Any of the following can be used
    296                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    297                  *      array( expected query vars to be set, same as 'qv' above )
    298                  *      (string) expected redirect location
    299                  * [3]: (optional) The ticket the test refers to, Can be skipped if unknown.
    300                  */
    301                  return array(
    302                          // Check against an odd redirect
    303                          array( '/page/2/', '/page/2/', 20385 ),
    304                          // The page designated as the front page should redirect to the front of the site
    305                          array( '/front-page/', '/' ),
    306                          array( '/blog-page/?paged=2', '/blog-page/page/2/' ),
    307                  );
    308         }
    309 }
    310 
    311 /**
    312  * @group canonical
    313  * @group rewrite
    314  * @group query
    315  */
    316 class WP_Canonical_CustomRules extends WP_Test_Canonical {
    317         function setUp() {
    318                 parent::setUp();
    319                 global $wp_rewrite;
    320                 // Add a custom Rewrite rule to test category redirections.
    321                 $wp_rewrite->add_rule('ccr/(.+?)/sort/(asc|desc)', 'index.php?category_name=$matches[1]&order=$matches[2]', 'top'); // ccr = Custom_Cat_Rule
    322                 $wp_rewrite->flush_rules();
    323         }
    324 
    325         function data() {
    326                 /* Format:
    327                  * [0]: $test_url,
    328                  * [1]: expected results: Any of the following can be used
    329                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    330                  *      array( expected query vars to be set, same as 'qv' above )
    331                  *      (string) expected redirect location
    332                  * [3]: (optional) The ticket the test refers to, Can be skipped if unknown.
    333                  */
    334                 return array(
    335                         // Custom Rewrite rules leading to Categories
    336                         array( '/ccr/uncategorized/sort/asc/', array( 'url' => '/ccr/uncategorized/sort/asc/', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'asc' ) ) ),
    337                         array( '/ccr/uncategorized/sort/desc/', array( 'url' => '/ccr/uncategorized/sort/desc/', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'desc' ) ) ),
    338                         array( '/ccr/uncategorized/sort/desc/?year=2008', array( 'url' => '/ccr/uncategorized/sort/desc/?year=2008', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'desc', 'year' => '2008' ) ), 17661 ),
    339                 );
    340         }
    341 }
    342 
    343 /**
    344  * @group canonical
    345  * @group rewrite
    346  * @group query
    347  */
    348 class WP_Canonical_NoRewrite extends WP_Test_Canonical {
     10class Tests_Canonical_NoRewrite extends Tests_Canonical {
    34911
    35012        var $structure = '';
  • trunk/tests/canonical/pageOnFront.php

    r903 r904  
    11<?php
    2 /**
    3  * Tests Canonical redirections.
    4  *
    5  * In the process of doing so, it also tests WP, WP_Rewrite and WP_Query, A fail here may show a bug in any one of these areas.
    6  *
    7  * @group canonical
    8  * @group rewrite
    9  * @group query
    10  */
    11 class WP_Test_Canonical extends WP_UnitTestCase {
    122
    13         // This can be defined in a subclass of this class which contains it's own data() method, those tests will be run against the specified permastruct
    14         var $structure = '/%year%/%monthnum%/%day%/%postname%/';
    15 
    16         var $old_current_user;
    17         var $author_id;
    18         var $post_ids;
    19         var $term_ids;
    20 
    21         function setUp() {
    22                 parent::setUp();
    23 
    24                 update_option( 'comments_per_page', 5 );
    25                 update_option( 'posts_per_page', 5 );
    26 
    27                 update_option( 'permalink_structure', $this->structure );
    28                 create_initial_taxonomies();
    29                 $GLOBALS['wp_rewrite']->init();
    30                 flush_rewrite_rules();
    31 
    32                 $this->old_current_user = get_current_user_id();
    33                 $this->author_id = $this->factory->user->create( array( 'user_login' => 'canonical-author' ) );
    34                 wp_set_current_user( $this->author_id );
    35 
    36                 // Already created by install defaults:
    37                 // $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'uncategorized' ) );
    38 
    39                 $this->term_ids = array();
    40 
    41                 $this->factory->post->create( array( 'import_id' => 587, 'post_title' => 'post-format-test-audio', 'post_date' => '2008-06-02 00:00:00' ) );
    42                 $post_id = $this->factory->post->create( array( 'post_title' => 'post-format-test-gallery', 'post_date' => '2008-06-10 00:00:00' ) );
    43                 $this->factory->post->create( array( 'import_id' => 611, 'post_type' => 'attachment', 'post_title' => 'canola2', 'post_parent' => $post_id ) );
    44 
    45                 $this->factory->post->create( array(
    46                         'post_title' => 'images-test',
    47                         'post_date' => '2008-09-03 00:00:00',
    48                         'post_content' => 'Page 1 <!--nextpage--> Page 2 <!--nextpage--> Page 3'
    49                 ) );
    50 
    51                 $post_id = $this->factory->post->create( array( 'import_id' => 149, 'post_title' => 'comment-test', 'post_date' => '2008-03-03 00:00:00' ) );
    52                 $this->factory->comment->create_post_comments( $post_id, 15 );
    53 
    54                 $this->factory->post->create( array( 'post_date' => '2008-09-05 00:00:00' ) );
    55 
    56                 $this->factory->post->create( array( 'import_id' => 123 ) );
    57                 $this->factory->post->create( array( 'import_id' => 1 ) );
    58                 $this->factory->post->create( array( 'import_id' => 358 ) );
    59 
    60                 $this->factory->post->create( array( 'post_type' => 'page', 'post_title' => 'sample-page' ) );
    61                 $this->factory->post->create( array( 'post_type' => 'page', 'post_title' => 'about' ) );
    62                 $post_id = $this->factory->post->create( array( 'post_type' => 'page', 'post_title' => 'parent-page' ) );
    63                 $this->factory->post->create(
    64                         array( 'import_id' => 144, 'post_type' => 'page', 'post_title' => 'child-page-1', 'post_parent' => $post_id,
    65                 ) );
    66 
    67                 $this->term_ids['/category/parent/'] = $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'parent' ) );
    68                 $this->term_ids['/category/parent/child-1/'] = $this->factory->term->create( array(
    69                         'taxonomy' => 'category', 'name' => 'child-1', 'parent' => $this->term_ids['/category/parent/'],
    70                 ) );
    71                 $this->term_ids['/category/parent/child-1/child-2/'] = $this->factory->term->create( array(
    72                         'taxonomy' => 'category', 'name' => 'child-2', 'parent' => $this->term_ids['/category/parent/child-1/'],
    73                 ) );
    74 
    75                 $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'cat-a' ) );
    76                 $this->factory->term->create( array( 'taxonomy' => 'category', 'name' => 'cat-b' ) );
    77 
    78                 $this->factory->term->create( array( 'name' => 'post-formats' ) );
    79         }
    80 
    81         function tearDown() {
    82                 parent::tearDown();
    83                 wp_set_current_user( $this->old_current_user );
    84 
    85                 $GLOBALS['wp_rewrite']->init();
    86         }
    87 
    88         // URL's are relative to the site "front", ie. /category/uncategorized/ instead of http://site.../category..
    89         // Return url's are full url's with the prepended home.
    90         function get_canonical($test_url) {
    91                 $test_url = home_url( $test_url );
    92 
    93                 $can_url = redirect_canonical( $test_url, false );
    94                 if ( ! $can_url )
    95                         return $test_url; // No redirect will take place for this request
    96 
    97                 return $can_url;
    98         }
    99 
    100         /**
    101          * @dataProvider data
    102          */
    103         function test($test_url, $expected, $ticket = 0) {
    104                 if ( $ticket )
    105                         $this->knownWPBug( $ticket );
    106 
    107                 $ticket_ref = ($ticket > 0) ? 'Ticket #' . $ticket : null;
    108 
    109                 if ( is_string($expected) )
    110                         $expected = array('url' => $expected);
    111                 elseif ( is_array($expected) && !isset($expected['url']) && !isset($expected['qv']) )
    112                         $expected = array( 'qv' => $expected );
    113 
    114                 if ( !isset($expected['url']) && !isset($expected['qv']) )
    115                         $this->markTestSkipped('No valid expected output was provided');
    116 
    117                 if ( false !== strpos( $test_url, '%d' ) ) {
    118                         if ( false !== strpos( $test_url, '/?author=%d' ) )
    119                                 $test_url = sprintf( $test_url, $this->author_id );
    120                         if ( false !== strpos( $test_url, '?cat=%d' ) )
    121                                 $test_url = sprintf( $test_url, $this->term_ids[ $expected['url'] ] );
    122                 }
    123 
    124                 $this->go_to( home_url( $test_url ) );
    125 
    126                 // Does the redirect match what's expected?
    127                 $can_url = $this->get_canonical( $test_url );
    128                 $parsed_can_url = parse_url($can_url);
    129 
    130                 // Just test the Path and Query if present
    131                 if ( isset($expected['url']) )
    132                         $this->assertEquals( $expected['url'], $parsed_can_url['path'] . (!empty($parsed_can_url['query']) ? '?' . $parsed_can_url['query'] : ''), $ticket_ref );
    133 
    134                 if ( ! isset($expected['qv']) )
    135                         return;
    136 
    137                 // "make" that the request and check the query is correct
    138                 $this->go_to( $can_url );
    139 
    140                 // Are all query vars accounted for, And correct?
    141                 global $wp;
    142 
    143                 $query_vars = array_diff($wp->query_vars, $wp->extra_query_vars);
    144                 if ( !empty($parsed_can_url['query']) ) {
    145                         parse_str($parsed_can_url['query'], $_qv);
    146 
    147                         // $_qv should not contain any elements which are set in $query_vars already (ie. $_GET vars should not be present in the Rewrite)
    148                         $this->assertEquals( array(), array_intersect( $query_vars, $_qv ), 'Query vars are duplicated from the Rewrite into $_GET; ' . $ticket_ref );
    149 
    150                         $query_vars = array_merge($query_vars, $_qv);
    151                 }
    152 
    153                 $this->assertEquals( $expected['qv'], $query_vars );
    154         }
    155 
    156         function data() {
    157                 /* Data format:
    158                  * [0]: $test_url,
    159                  * [1]: expected results: Any of the following can be used
    160                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    161                  *      array( expected query vars to be set, same as 'qv' above )
    162                  *      (string) expected redirect location
    163                  * [2]: (optional) The ticket the test refers to, Can be skipped if unknown.
    164                  */
    165 
    166                 // Please Note: A few test cases are commented out below, Look at the test case following it, in most cases it's simple showing 2 options for the "proper" redirect.
    167                 return array(
    168                         // Categories
    169 
    170                         array( '?cat=%d', '/category/parent/', 15256 ),
    171                         array( '?cat=%d', '/category/parent/child-1/', 15256 ),
    172                         array( '?cat=%d', '/category/parent/child-1/child-2/' ), // no children
    173                         array( '/category/uncategorized/', array( 'url' => '/category/uncategorized/', 'qv' => array( 'category_name' => 'uncategorized' ) ) ),
    174                         array( '/category/uncategorized/page/2/', array( 'url' => '/category/uncategorized/page/2/', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2) ) ),
    175                         array( '/category/uncategorized/?paged=2', array( 'url' => '/category/uncategorized/page/2/', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2) ) ),
    176                         array( '/category/uncategorized/?paged=2&category_name=uncategorized', array( 'url' => '/category/uncategorized/page/2/', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2) ), 17174 ),
    177                         array( '/category/child-1/', '/category/parent/child-1/', 18734 ),
    178                         array( '/category/foo/child-1/', '/category/parent/child-1/', 18734 ),
    179 
    180                         // Categories & Intersections with other vars
    181                         array( '/category/uncategorized/?tag=post-formats', array( 'url' => '/category/uncategorized/?tag=post-formats', 'qv' => array('category_name' => 'uncategorized', 'tag' => 'post-formats') ) ),
    182                         array( '/?category_name=cat-a,cat-b', array( 'url' => '/?category_name=cat-a,cat-b', 'qv' => array( 'category_name' => 'cat-a,cat-b' ) ) ),
    183 
    184                         // Taxonomies with extra Query Vars
    185                         array( '/category/cat-a/page/1/?test=one%20two', '/category/cat-a/?test=one%20two', 18086), // Extra query vars should stay encoded
    186 
    187                         // Categories with Dates
    188                         array( '/category/uncategorized/?paged=2&year=2008', array( 'url' => '/category/uncategorized/page/2/?year=2008', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2, 'year' => 2008) ), 17661 ),
    189 //                      array( '/2008/04/?cat=1', array( 'url' => '/2008/04/?cat=1', 'qv' => array('cat' => '1', 'year' => '2008', 'monthnum' => '04' ) ), 17661 ),
    190                         array( '/2008/04/?cat=1', array( 'url' => '/category/uncategorized/?year=2008&monthnum=04', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008', 'monthnum' => '04' ) ), 17661 ),
    191 //                      array( '/2008/?category_name=cat-a', array( 'url' => '/2008/?category_name=cat-a', 'qv' => array('category_name' => 'cat-a', 'year' => '2008' ) ) ),
    192                         array( '/2008/?category_name=cat-a', array( 'url' => '/category/cat-a/?year=2008', 'qv' => array('category_name' => 'cat-a', 'year' => '2008' ) ), 20386 ),
    193 //                      array( '/category/uncategorized/?year=2008', array( 'url' => '/2008/?category_name=uncategorized', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008' ) ), 17661 ),
    194                         array( '/category/uncategorized/?year=2008', array( 'url' => '/category/uncategorized/?year=2008', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008' ) ), 17661 ),
    195 
    196                         // Pages
    197                         array( '/sample%20page/', array( 'url' => '/sample-page/', 'qv' => array('pagename' => 'sample-page', 'page' => '' ) ), 17653 ), // Page rules always set 'page'
    198                         array( '/sample------page/', array( 'url' => '/sample-page/', 'qv' => array('pagename' => 'sample-page', 'page' => '' ) ), 14773 ),
    199                         array( '/child-page-1/', '/parent-page/child-page-1/'),
    200                         array( '/?page_id=144', '/parent-page/child-page-1/'),
    201                         array( '/abo', '/about/' ),
    202 
    203                         // Posts
    204                         array( '?p=587', '/2008/06/02/post-format-test-audio/'),
    205                         array( '/?name=images-test', '/2008/09/03/images-test/'),
    206                         // Incomplete slug should resolve and remove the ?name= parameter
    207                         array( '/?name=images-te', '/2008/09/03/images-test/', 20374),
    208                         // Page slug should resolve to post slug and remove the ?pagename= parameter
    209                         array( '/?pagename=images-test', '/2008/09/03/images-test/', 20374),
    210 
    211                         array( '/2008/06/02/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    212                         array( '/2008/06/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    213                         array( '/2008/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    214                         array( '/2010/post-format-test-au/', '/2008/06/02/post-format-test-audio/'), // A Year the post is not in
    215                         array( '/post-format-test-au/', '/2008/06/02/post-format-test-audio/'),
    216 
    217                         array( '/2008/09/03/images-test/3/', array( 'url' => '/2008/09/03/images-test/3/', 'qv' => array( 'name' => 'images-test', 'year' => '2008', 'monthnum' => '09', 'day' => '03', 'page' => '/3' ) ) ), // page = /3 ?!
    218                         array( '/2008/09/03/images-test/8/', '/2008/09/03/images-test/4/', 11694 ), // post with 4 pages
    219                         array( '/2008/09/03/images-test/?page=3', '/2008/09/03/images-test/3/' ),
    220                         array( '/2008/09/03/images-te?page=3', '/2008/09/03/images-test/3/' ),
    221 
    222                         // Comments
    223                         array( '/2008/03/03/comment-test/?cpage=2', '/2008/03/03/comment-test/comment-page-2/', 20388 ),
    224                         array( '/2008/03/03/comment-test/comment-page-20/', '/2008/03/03/comment-test/comment-page-3/', 20388 ), // there's only 3 pages
    225                         array( '/2008/03/03/comment-test/?cpage=30', '/2008/03/03/comment-test/comment-page-3/', 20388 ), // there's only 3 pages
    226 
    227                         // Attachments
    228                         array( '/?attachment_id=611', '/2008/06/10/post-format-test-gallery/canola2/' ),
    229                         array( '/2008/06/10/post-format-test-gallery/?attachment_id=611', '/2008/06/10/post-format-test-gallery/canola2/' ),
    230 
    231                         // Dates
    232                         array( '/?m=2008', '/2008/' ),
    233                         array( '/?m=200809', '/2008/09/'),
    234                         array( '/?m=20080905', '/2008/09/05/'),
    235 
    236                         array( '/2008/?day=05', '/2008/?day=05'), // no redirect
    237                         array( '/2008/09/?day=05', '/2008/09/05/'),
    238                         array( '/2008/?monthnum=9', '/2008/09/'),
    239 
    240                         array( '/?year=2008', '/2008/'),
    241 
    242                         // Authors
    243                         array( '/?author=%d', '/author/canonical-author/' ),
    244 //                      array( '/?author=%d&year=2008', '/2008/?author=3'),
    245                         array( '/?author=%d&year=2008', '/author/canonical-author/?year=2008', 17661 ),
    246 //                      array( '/author/canonical-author/?year=2008', '/2008/?author=3'), //Either or, see previous testcase.
    247                         array( '/author/canonical-author/?year=2008', '/author/canonical-author/?year=2008', 17661 ),
    248 
    249                         // Feeds
    250                         array( '/?feed=atom', '/feed/atom/' ),
    251                         array( '/?feed=rss2', '/feed/' ),
    252                         array( '/?feed=comments-rss2', '/comments/feed/'),
    253                         array( '/?feed=comments-atom', '/comments/feed/atom/'),
    254 
    255                         // Feeds (per-post)
    256                         array( '/2008/03/03/comment-test/?feed=comments-atom', '/2008/03/03/comment-test/feed/atom/'),
    257                         array( '/?p=149&feed=comments-atom', '/2008/03/03/comment-test/feed/atom/'),
    258                         array( '/2008/03/03/comment-test/?feed=comments-atom', '/2008/03/03/comment-test/feed/atom/' ),
    259 
    260                         // Index
    261                         array( '/?paged=1', '/' ),
    262                         array( '/page/1/', '/' ),
    263                         array( '/page1/', '/' ),
    264                         array( '/?paged=2', '/page/2/' ),
    265                         array( '/page2/', '/page/2/' ),
    266 
    267                         // Misc
    268                         array( '/2008%20', '/2008' ),
    269                         array( '//2008////', '/2008/' ),
    270 
    271                         // Todo: Endpoints (feeds, trackbacks, etc), More fuzzed mixed query variables, comment paging, Home page (Static)
    272                 );
    273         }
    274 }
     3require_once dirname( dirname( __FILE__ ) ) . '/canonical.php';
    2754
    2765/**
     
    2798 * @group query
    2809 */
    281 class WP_Canonical_PageOnFront extends WP_Test_Canonical {
     10class Tests_Canonical_PageOnFront extends Tests_Canonical {
    28211        function setUp() {
    28312                parent::setUp();
     
    30837        }
    30938}
    310 
    311 /**
    312  * @group canonical
    313  * @group rewrite
    314  * @group query
    315  */
    316 class WP_Canonical_CustomRules extends WP_Test_Canonical {
    317         function setUp() {
    318                 parent::setUp();
    319                 global $wp_rewrite;
    320                 // Add a custom Rewrite rule to test category redirections.
    321                 $wp_rewrite->add_rule('ccr/(.+?)/sort/(asc|desc)', 'index.php?category_name=$matches[1]&order=$matches[2]', 'top'); // ccr = Custom_Cat_Rule
    322                 $wp_rewrite->flush_rules();
    323         }
    324 
    325         function data() {
    326                 /* Format:
    327                  * [0]: $test_url,
    328                  * [1]: expected results: Any of the following can be used
    329                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    330                  *      array( expected query vars to be set, same as 'qv' above )
    331                  *      (string) expected redirect location
    332                  * [3]: (optional) The ticket the test refers to, Can be skipped if unknown.
    333                  */
    334                 return array(
    335                         // Custom Rewrite rules leading to Categories
    336                         array( '/ccr/uncategorized/sort/asc/', array( 'url' => '/ccr/uncategorized/sort/asc/', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'asc' ) ) ),
    337                         array( '/ccr/uncategorized/sort/desc/', array( 'url' => '/ccr/uncategorized/sort/desc/', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'desc' ) ) ),
    338                         array( '/ccr/uncategorized/sort/desc/?year=2008', array( 'url' => '/ccr/uncategorized/sort/desc/?year=2008', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'desc', 'year' => '2008' ) ), 17661 ),
    339                 );
    340         }
    341 }
    342 
    343 /**
    344  * @group canonical
    345  * @group rewrite
    346  * @group query
    347  */
    348 class WP_Canonical_NoRewrite extends WP_Test_Canonical {
    349 
    350         var $structure = '';
    351 
    352         // These test cases are run against the test handler in WP_Canonical
    353 
    354         function data() {
    355                 /* Format:
    356                  * [0]: $test_url,
    357                  * [1]: expected results: Any of the following can be used
    358                  *      array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET );
    359                  *      array( expected query vars to be set, same as 'qv' above )
    360                  *      (string) expected redirect location
    361                  * [3]: (optional) The ticket the test refers to, Can be skipped if unknown.
    362                  */
    363                 return array(
    364                         array( '/?p=123', '/?p=123' ),
    365 
    366                         // This post_type arg should be stripped, because p=1 exists, and does not have post_type= in its query string
    367                         array( '/?post_type=fake-cpt&p=1', '/?p=1' ),
    368 
    369                         // Strip an existing but incorrect post_type arg
    370                         array( '/?post_type=page&page_id=1', '/?p=1' ),
    371 
    372                         array( '/?p=358 ', array('url' => '/?p=358',  'qv' => array('p' => '358') ) ), // Trailing spaces
    373                         array( '/?p=358%20', array('url' => '/?p=358',  'qv' => array('p' => '358') ) ),
    374 
    375                         array( '/?page_id=1', '/?p=1' ), // redirect page_id to p (should cover page_id|p|attachment_id to one another
    376                         array( '/?page_id=1&post_type=revision', '/?p=1' ),
    377 
    378                 );
    379         }
    380 }
  • trunk/tests/compat.php

    r903 r904  
    44 * @group compat
    55 */
    6 class TestMbSubStr extends WP_UnitTestCase {
    7         function test_mb_strcut() {
     6class Tests_Compat extends WP_UnitTestCase {
     7        function test_mb_substr() {
    88                $this->assertEquals('баб', _mb_substr('баба', 0, 3));
    99                $this->assertEquals('баб', _mb_substr('баба', 0, -1));
     
    1111                $this->assertEquals('I am your б', _mb_substr('I am your баба', 0, 11));
    1212        }
    13 }
    1413
    15 /**
    16  * @group compat
    17  */
    18 class TestHashHMAC extends WP_UnitTestCase {
    19         function test_simple() {
     14        function test_hash_hmac_simple() {
    2015                $this->assertEquals('140d1cb79fa12e2a31f32d35ad0a2723', _hash_hmac('md5', 'simple', 'key'));
    2116                $this->assertEquals('993003b95758e0ac2eba451a4c5877eb1bb7b92a', _hash_hmac('sha1', 'simple', 'key'));
    2217        }
    2318
    24         function test_key_padding() {
     19        function test_hash_hmac_padding() {
    2520                $this->assertEquals('3c1399103807cf12ec38228614416a8c', _hash_hmac('md5', 'simple', '65 character key 65 character key 65 character key 65 character k'));
    2621                $this->assertEquals('4428826d20003e309d6c2a6515891370daf184ea', _hash_hmac('sha1', 'simple', '65 character key 65 character key 65 character key 65 character k'));
    2722        }
    2823
    29         function test_raw_output() {
     24        function test_hash_hmac_output() {
    3025                $this->assertEquals(array( 1 => '140d1cb79fa12e2a31f32d35ad0a2723'), unpack('H32', _hash_hmac('md5', 'simple', 'key', true)));
    3126                $this->assertEquals(array( 1 => '993003b95758e0ac2eba451a4c5877eb1bb7b92a'), unpack('H40', _hash_hmac('sha1', 'simple', 'key', true)));
  • trunk/tests/cron.php

    r903 r904  
    66 * @group cron
    77 */
    8 class WPTestCronScheduling extends WP_UnitTestCase {
     8class Tests_Cron extends WP_UnitTestCase {
    99        function setUp() {
    1010                parent::setUp();
  • trunk/tests/dependencies.php

    r903 r904  
    44 * @group scripts
    55 */
    6 class TestWP_Dependencies extends WP_UnitTestCase {
     6class Tests_Dependencies extends WP_UnitTestCase {
    77        function test_add() {
    88                // Create a new object
  • trunk/tests/feed/rss2.php

    r903 r904  
    99 * @group feed
    1010 */
    11 class TestFeedRss2 extends WP_UnitTestCase {
     11class Tests_Feed_RSS2 extends WP_UnitTestCase {
    1212
    1313        function setUp() {
  • trunk/tests/file.php

    r903 r904  
    11<?php
    22
    3 class TestIncludesFile extends WP_UnitTestCase {
     3class Tests_File extends WP_UnitTestCase {
    44
    55        function setUp() {
  • trunk/tests/formatting/balanceTags.php

    r903 r904  
    44 * @group formatting
    55 */
    6 class TestBalanceTags extends WP_UnitTestCase {
     6class Tests_Formatting_BalanceTags extends WP_UnitTestCase {
    77
    88        // These are single/self-closing tags that WP has traditionally recognized.
  • trunk/tests/http/base.php

    r903 r904  
    1010 *
    1111 * The WP_HTTP tests require a class-http.php file of r17550 or later.
    12  */
    13 
    14 /**
    15  * @group http
    1612 */
    1713abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
     
    184180        }
    185181}
    186 
    187 // Stubs to test each transport
    188 /**
    189  * @group http
    190  */
    191 class WPHTTP_curl extends WP_HTTP_UnitTestCase {
    192         var $transport = 'curl';
    193 }
    194 /**
    195  * @group http
    196  */
    197 class WPHTTP_streams extends WP_HTTP_UnitTestCase {
    198         var $transport = 'streams';
    199 }
    200 /**
    201  * @group http
    202  */
    203 class WPHTTP_fsockopen extends WP_HTTP_UnitTestCase {
    204         var $transport = 'fsockopen';
    205 }
    206 
    207 /**
    208  * Non-transport-specific WP_HTTP Tests
    209  *
    210  * @group http
    211  */
    212 class WPHTTP extends WP_UnitTestCase {
    213 
    214         /**
    215          * @dataProvider make_absolute_url_testcases
    216          */
    217         function test_make_absolute_url( $relative_url, $absolute_url, $expected ) {
    218                 if ( ! is_callable( array( 'WP_HTTP', 'make_absolute_url' ) ) ) {
    219                         $this->markTestSkipped( "This version of WP_HTTP doesn't support WP_HTTP::make_absolute_url()" );
    220                         return;
    221                 }
    222 
    223                 $actual = WP_HTTP::make_absolute_url( $relative_url, $absolute_url );
    224                 $this->assertEquals( $expected, $actual );
    225         }
    226 
    227         function make_absolute_url_testcases() {
    228                 // 0: The Location header, 1: The current url, 3: The expected url
    229                 return array(
    230                         array( 'http://site.com/', 'http://example.com/', 'http://site.com/' ), // Absolute URL provided
    231                         array( '/location', '', '/location' ), // No current url provided
    232 
    233                         array( '', 'http://example.com', 'http://example.com/' ), // No location provided
    234 
    235                         // Location provided relative to site root
    236                         array( '/root-relative-link.ext', 'http://example.com/', 'http://example.com/root-relative-link.ext' ),
    237                         array( '/root-relative-link.ext?with=query', 'http://example.com/index.ext?query', 'http://example.com/root-relative-link.ext?with=query' ),
    238 
    239                         // Location provided relative to current file/directory
    240                         array( 'relative-file.ext', 'http://example.com/', 'http://example.com/relative-file.ext' ),
    241                         array( 'relative-file.ext', 'http://example.com/filename', 'http://example.com/relative-file.ext' ),
    242                         array( 'relative-file.ext', 'http://example.com/directory/', 'http://example.com/directory/relative-file.ext' ),
    243 
    244                         // Location provided relative to current file/directory but in a parent directory
    245                         array( '../file-in-parent.ext', 'http://example.com', 'http://example.com/file-in-parent.ext' ),
    246                         array( '../file-in-parent.ext', 'http://example.com/filename', 'http://example.com/file-in-parent.ext' ),
    247                         array( '../file-in-parent.ext', 'http://example.com/directory/', 'http://example.com/file-in-parent.ext' ),
    248                         array( '../file-in-parent.ext', 'http://example.com/directory/filename', 'http://example.com/file-in-parent.ext' ),
    249 
    250                         // Location provided in muliple levels higher, including impossible to reach (../ below DOCROOT)
    251                         array( '../../file-in-grand-parent.ext', 'http://example.com', 'http://example.com/file-in-grand-parent.ext' ),
    252                         array( '../../file-in-grand-parent.ext', 'http://example.com/filename', 'http://example.com/file-in-grand-parent.ext' ),
    253                         array( '../../file-in-grand-parent.ext', 'http://example.com/directory/', 'http://example.com/file-in-grand-parent.ext' ),
    254                         array( '../../file-in-grand-parent.ext', 'http://example.com/directory/filename/', 'http://example.com/file-in-grand-parent.ext' ),
    255                         array( '../../file-in-grand-parent.ext', 'http://example.com/directory1/directory2/filename', 'http://example.com/file-in-grand-parent.ext' ),
    256 
    257                         // Query strings should attach, or replace existing query string.
    258                         array( '?query=string', 'http://example.com', 'http://example.com/?query=string' ),
    259                         array( '?query=string', 'http://example.com/file.ext', 'http://example.com/file.ext?query=string' ),
    260                         array( '?query=string', 'http://example.com/file.ext?existing=query-string', 'http://example.com/file.ext?query=string' ),
    261                         array( 'otherfile.ext?query=string', 'http://example.com/file.ext?existing=query-string', 'http://example.com/otherfile.ext?query=string' ),
    262 
    263                         // A file with a leading dot
    264                         array( '.ext', 'http://example.com/', 'http://example.com/.ext' )
    265                 );
    266         }
    267 }
  • trunk/tests/http/http.php

    r903 r904  
    11<?php
    2 /**
    3  * Note, When running these tests, remember that some things are done differently
    4  * based on safe_mode. You can run the test in safe_mode like such:
    5  *
    6  *   phpunit -d safe_mode=on --group http
    7  *
    8  * You may also need `-d safe_mode_gid=1` to relax the safe_mode checks to allow
    9  * inclusion of PEAR.
    10  *
    11  * The WP_HTTP tests require a class-http.php file of r17550 or later.
    12  */
    13 
    14 /**
    15  * @group http
    16  */
    17 abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
    18         // You can use your own version of data/WPHTTP-testcase-redirection-script.php here.
    19         var $redirection_script = 'http://api.wordpress.org/core/tests/1.0/redirection.php';
    20 
    21         function setUp() {
    22 
    23                 if ( is_callable( array('WP_HTTP', '_getTransport') ) ) {
    24                         $this->markTestSkipped('The WP_HTTP tests require a class-http.php file of r17550 or later.');
    25                         return;
    26                 }
    27 
    28                 $class = "WP_HTTP_" . $this->transport;
    29                 if ( !call_user_func( array($class, 'test') ) ) {
    30                         $this->markTestSkipped( sprintf('The transport %s is not supported on this system', $this->transport) );
    31                 }
    32 
    33                 // Disable all transports aside from this one.
    34                 foreach ( array( 'curl', 'streams', 'fsockopen' ) as $t ) {
    35                         remove_filter( "use_{$t}_transport", '__return_false' ); // Just strip them all
    36                         if ( $t != $this->transport )
    37                                 add_filter( "use_{$t}_transport", '__return_false' ); // and add it back if need be..
    38                 }
    39         }
    40 
    41         function tearDown() {
    42                 foreach ( array( 'curl', 'streams', 'fsockopen' ) as $t ) {
    43                         remove_filter( "use_{$t}_transport", '__return_false' );
    44                 }
    45         }
    46 
    47         function test_redirect_on_301() {
    48                 // 5 : 5 & 301
    49                 $res = wp_remote_request($this->redirection_script . '?code=301&rt=' . 5, array('redirection' => 5) );
    50                 $this->assertFalse( is_wp_error($res) );
    51                 $this->assertEquals(200, (int)$res['response']['code'] );
    52         }
    53 
    54         function test_redirect_on_302() {
    55                 // 5 : 5 & 302
    56                 $res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 5, array('redirection' => 5) );
    57                 $this->assertFalse( is_wp_error($res) );
    58                 $this->assertEquals(200, (int)$res['response']['code'] );
    59         }
    60 
    61         /**
    62          * @ticket 16855
    63          */
    64         function test_redirect_on_301_no_redirect() {
    65                 // 5 > 0 & 301
    66                 $res = wp_remote_request($this->redirection_script . '?code=301&rt=' . 5, array('redirection' => 0) );
    67                 $this->assertFalse( is_wp_error($res) );
    68                 $this->assertEquals(301, (int)$res['response']['code'] );
    69         }
    70 
    71         /**
    72          * @ticket 16855
    73          */
    74         function test_redirect_on_302_no_redirect() {
    75                 // 5 > 0 & 302
    76                 $res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 5, array('redirection' => 0) );
    77                 $this->assertFalse( is_wp_error($res) );
    78                 $this->assertEquals(302, (int)$res['response']['code'] );
    79         }
    80 
    81         function test_redirections_equal() {
    82                 // 5 - 5
    83                 $res = wp_remote_request($this->redirection_script . '?rt=' . 5, array('redirection' => 5) );
    84                 $this->assertFalse( is_wp_error($res) );
    85                 $this->assertEquals(200, (int)$res['response']['code'] );
    86         }
    87 
    88         function test_no_head_redirections() {
    89                 // No redirections on HEAD request:
    90                 $res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 1, array('method' => 'HEAD') );
    91                 $this->assertFalse( is_wp_error($res) );
    92                 $this->assertEquals( 302, (int)$res['response']['code'] );
    93         }
    94 
    95         /**
    96          * @ticket 16855
    97          */
    98         function test_redirect_on_head() {
    99                 // Redirections on HEAD request when Requested
    100                 $res = wp_remote_request($this->redirection_script . '?rt=' . 5, array('redirection' => 5, 'method' => 'HEAD') );
    101                 $this->assertFalse( is_wp_error($res) );
    102                 $this->assertEquals( 200, (int)$res['response']['code'] );
    103         }
    104 
    105         function test_redirections_greater() {
    106                 // 10 > 5
    107                 $res = wp_remote_request($this->redirection_script . '?rt=' . 10, array('redirection' => 5) );
    108                 $this->assertTrue( is_wp_error($res), print_r($res, true) );
    109         }
    110 
    111         function test_redirections_greater_edgecase() {
    112                 // 6 > 5 (close edgecase)
    113                 $res = wp_remote_request($this->redirection_script . '?rt=' . 6, array('redirection' => 5) );
    114                 $this->assertTrue( is_wp_error($res) );
    115         }
    116 
    117         function test_redirections_less_edgecase() {
    118                 // 4 < 5 (close edgecase)
    119                 $res = wp_remote_request($this->redirection_script . '?rt=' . 4, array('redirection' => 5) );
    120                 $this->assertFalse( is_wp_error($res) );
    121         }
    122 
    123         /**
    124          * @ticket 16855
    125          */
    126         function test_redirections_zero_redirections_specified() {
    127                 // 0 redirections asked for, Should return the document?
    128                 $res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 5, array('redirection' => 0) );
    129                 $this->assertFalse( is_wp_error($res) );
    130                 $this->assertEquals( 302, (int)$res['response']['code'] );
    131         }
    132 
    133         /**
    134          * Do not redirect on non 3xx status codes
    135          *
    136          * @ticket 16889
    137          *
    138          * Is this valid? Streams, cURL and therefore PHP Extension (ie. all PHP Internal) follow redirects
    139          * on all status codes, currently all of WP_HTTP follows this template.
    140          */
    141         function test_location_header_on_200() {
    142                 // Prints PASS on initial load, FAIL if the client follows the specified redirection
    143                 $res = wp_remote_request( $this->redirection_script . '?200-location=true' );
    144                 $this->assertEquals( 'PASS', $res['body']);
    145         }
    146 
    147         /**
    148          * @ticket 11888
    149          */
    150         function test_send_headers() {
    151                 // Test that the headers sent are recieved by the server
    152                 $headers = array('test1' => 'test', 'test2' => 0, 'test3' => '');
    153                 $res = wp_remote_request( $this->redirection_script . '?header-check', array('headers' => $headers) );
    154 
    155                 $this->assertFalse( is_wp_error($res) );
    156 
    157                 $headers = array();
    158                 foreach ( explode("\n", $res['body']) as $key => $value ) {
    159                         if ( empty($value) )
    160                                 continue;
    161                         $parts = explode(':', $value,2);
    162                         unset($heaers[$key]);
    163                         $headers[ $parts[0] ] = $parts[1];
    164                 }
    165 
    166                 $this->assertTrue( isset($headers['test1']) && 'test' == $headers['test1'] );
    167                 $this->assertTrue( isset($headers['test2']) && '0' === $headers['test2'] );
    168                 // cURL/HTTP Extension Note: Will never pass, cURL does not pass headers with an empty value.
    169                 // Should it be that empty headers with empty values are NOT sent?
    170                 //$this->assertTrue( isset($headers['test3']) && '' === $headers['test3'] );
    171         }
    172 
    173         function test_file_stream() {
    174                 $url = 'http://unit-tests.svn.wordpress.org/trunk/data/images/2004-07-22-DSC_0007.jpg'; // we'll test against a file in the unit test data
    175                 $size = 87348;
    176                 $res = wp_remote_request( $url, array( 'stream' => true, 'timeout' => 30 ) ); //Auto generate the filename.
    177 
    178                 $this->assertFalse( is_wp_error( $res ) );
    179                 $this->assertEquals( '', $res['body'] ); // The body should be empty.
    180                 $this->assertEquals( $size, $res['headers']['content-length'] ); // Check the headers are returned (and the size is the same..)
    181                 $this->assertEquals( $size, filesize($res['filename']) ); // Check that the file is written to disk correctly without any extra characters
    182 
    183                 unlink($res['filename']); // Remove the temporary file
    184         }
    185 }
    186 
    187 // Stubs to test each transport
    188 /**
    189  * @group http
    190  */
    191 class WPHTTP_curl extends WP_HTTP_UnitTestCase {
    192         var $transport = 'curl';
    193 }
    194 /**
    195  * @group http
    196  */
    197 class WPHTTP_streams extends WP_HTTP_UnitTestCase {
    198         var $transport = 'streams';
    199 }
    200 /**
    201  * @group http
    202  */
    203 class WPHTTP_fsockopen extends WP_HTTP_UnitTestCase {
    204         var $transport = 'fsockopen';
    205 }
    206 
    2072/**
    2083 * Non-transport-specific WP_HTTP Tests
     
    2105 * @group http
    2116 */
    212 class WPHTTP extends WP_UnitTestCase {
     7class Tests_HTTP_HTTP extends WP_UnitTestCase {
    2138
    2149        /**
  • trunk/tests/kses.php

    r903 r904  
    66 * @group kses
    77 */
    8 class Test_wp_filter_post_kses extends WP_UnitTestCase {
     8class Tests_Kses extends WP_UnitTestCase {
    99
    1010        /**
  • trunk/tests/media.php

    r903 r904  
    11<?php
    22
    3 class TestIncludesMedia extends WP_UnitTestCase {
     3/**
     4 * @group media
     5 * @group shortcode
     6 */
     7class Tests_Media extends WP_UnitTestCase {
    48
    59  function setUp() {
  • trunk/tests/meta.php

    r903 r904  
    44 * @group meta
    55 */
    6 class WPTestIncludesMeta extends WP_UnitTestCase {
     6class Tests_Meta extends WP_UnitTestCase {
    77        function setUp() {
    88                parent::setUp();
  • trunk/tests/ms.php

    r903 r904  
    88 * @group multisite
    99 */
    10 class WPTestMS extends WP_UnitTestCase {
     10class Tests_MS extends WP_UnitTestCase {
    1111
    1212        protected $plugin_hook_count = 0;
  • trunk/tests/option/blogOption.php

    r903 r904  
    11<?php
    2 
    3 /**
    4  * @group options
    5  */
    6 class TestOption extends WP_UnitTestCase {
    7         function setUp() {
    8                 parent::setUp();
    9         }
    10 
    11         function tearDown() {
    12                 parent::tearDown();
    13         }
    14 
    15         function __return_foo() {
    16                 return 'foo';
    17         }
    18 
    19         function test_the_basics() {
    20                 $key = rand_str();
    21                 $key2 = rand_str();
    22                 $value = rand_str();
    23                 $value2 = rand_str();
    24 
    25                 $this->assertFalse( get_option( 'doesnotexist' ) );
    26                 $this->assertTrue( add_option( $key, $value ) );
    27                 $this->assertEquals( $value, get_option( $key ) );
    28                 $this->assertFalse( add_option( $key, $value ) );  // Already exists
    29                 $this->assertFalse( update_option( $key, $value ) );  // Value is the same
    30                 $this->assertTrue( update_option( $key, $value2 ) );
    31                 $this->assertEquals( $value2, get_option( $key ) );
    32                 $this->assertFalse( add_option( $key, $value ) );
    33                 $this->assertEquals( $value2, get_option( $key ) );
    34                 $this->assertTrue( delete_option( $key ) );
    35                 $this->assertFalse( get_option( $key ) );
    36                 $this->assertFalse( delete_option( $key ) );
    37 
    38                 $this->assertTrue( update_option( $key2, $value2 ) );
    39                 $this->assertEquals( $value2, get_option( $key2 ) );
    40                 $this->assertTrue( delete_option( $key2 ) );
    41                 $this->assertFalse( get_option( $key2 ) );
    42         }
    43 
    44         function test_default_filter() {
    45                 $random = rand_str();
    46 
    47                 $this->assertFalse( get_option( 'doesnotexist' ) );
    48 
    49                 // Default filter overrides $default arg.
    50                 add_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    51                 $this->assertEquals( 'foo', get_option( 'doesnotexist', 'bar' ) );
    52 
    53                 // Remove the filter and the $default arg is honored.
    54                 remove_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    55                 $this->assertEquals( 'bar', get_option( 'doesnotexist', 'bar' ) );
    56 
    57                 // Once the option exists, the $default arg and the default filter are ignored.
    58                 add_option( 'doesnotexist', $random );
    59                 $this->assertEquals( $random, get_option( 'doesnotexist', 'foo' ) );
    60                 add_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    61                 $this->assertEquals( $random, get_option( 'doesnotexist', 'foo' ) );
    62                 remove_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    63 
    64                 // Cleanup
    65                 $this->assertTrue( delete_option( 'doesnotexist' ) );
    66                 $this->assertFalse( get_option( 'doesnotexist' ) );
    67         }
    68 
    69         function test_serialized_data() {
    70                 $key = rand_str();
    71                 $value = array( 'foo' => true, 'bar' => true );
    72 
    73                 $this->assertTrue( add_option( $key, $value ) );
    74                 $this->assertEquals( $value, get_option( $key ) );
    75 
    76                 $value = (object) $value;
    77                 $this->assertTrue( update_option( $key, $value ) );
    78                 $this->assertEquals( $value, get_option( $key ) );
    79                 $this->assertTrue( delete_option( $key ) );
    80         }
    81 }
    82 
    83 /**
    84  * @group options
    85  */
    86 class TestSiteOption extends WP_UnitTestCase {
    87         function __return_foo() {
    88                 return 'foo';
    89         }
    90 
    91         function test_the_basics() {
    92                 $key = rand_str();
    93                 $key2 = rand_str();
    94                 $value = rand_str();
    95                 $value2 = rand_str();
    96 
    97                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    98                 $this->assertTrue( add_site_option( $key, $value ) );
    99                 $this->assertEquals( $value, get_site_option( $key ) );
    100                 $this->assertFalse( add_site_option( $key, $value ) );  // Already exists
    101                 $this->assertFalse( update_site_option( $key, $value ) );  // Value is the same
    102                 $this->assertTrue( update_site_option( $key, $value2 ) );
    103                 $this->assertEquals( $value2, get_site_option( $key ) );
    104                 $this->assertFalse( add_site_option( $key, $value ) );
    105                 $this->assertEquals( $value2, get_site_option( $key ) );
    106                 $this->assertTrue( delete_site_option( $key ) );
    107                 $this->assertFalse( get_site_option( $key ) );
    108                 $this->assertFalse( delete_site_option( $key ) );
    109 
    110                 $this->assertTrue( update_site_option( $key2, $value2 ) );
    111                 $this->assertEquals( $value2, get_site_option( $key2 ) );
    112                 $this->assertTrue( delete_site_option( $key2 ) );
    113                 $this->assertFalse( get_site_option( $key2 ) );
    114         }
    115 
    116         function test_default_filter() {
    117                 $random = rand_str();
    118 
    119                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    120 
    121                 // Default filter overrides $default arg.
    122                 add_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    123                 $this->assertEquals( 'foo', get_site_option( 'doesnotexist', 'bar' ) );
    124 
    125                 // Remove the filter and the $default arg is honored.
    126                 remove_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    127                 $this->assertEquals( 'bar', get_site_option( 'doesnotexist', 'bar' ) );
    128 
    129                 // Once the option exists, the $default arg and the default filter are ignored.
    130                 add_site_option( 'doesnotexist', $random );
    131                 $this->assertEquals( $random, get_site_option( 'doesnotexist', 'foo' ) );
    132                 add_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    133                 $this->assertEquals( $random, get_site_option( 'doesnotexist', 'foo' ) );
    134                 remove_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    135 
    136                 // Cleanup
    137                 $this->assertTrue( delete_site_option( 'doesnotexist' ) );
    138                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    139         }
    140 
    141         function test_serialized_data() {
    142                 $key = rand_str();
    143                 $value = array( 'foo' => true, 'bar' => true );
    144 
    145                 $this->assertTrue( add_site_option( $key, $value ) );
    146                 $this->assertEquals( $value, get_site_option( $key ) );
    147 
    148                 $value = (object) $value;
    149                 $this->assertTrue( update_site_option( $key, $value ) );
    150                 $this->assertEquals( $value, get_site_option( $key ) );
    151                 $this->assertTrue( delete_site_option( $key ) );
    152         }
    153 
    154         // #15497 - ensure update_site_option will add options with false-y values
    155         function test_update_adds_falsey_value() {
    156                 $key = rand_str();
    157                 $value = 0;
    158 
    159                 delete_site_option( $key );
    160                 $this->assertTrue( update_site_option( $key, $value ) );
    161                 wp_cache_flush(); // ensure we're getting the value from the DB
    162                 $this->assertEquals( $value, get_site_option( $key ) );
    163         }
    164 
    165         // #18955 - ensure get_site_option doesn't cache the default value for non-existent options
    166         function test_get_doesnt_cache_default_value() {
    167                 $option = rand_str();
    168                 $default = 'a default';
    169 
    170                 $this->assertEquals( get_site_option( $option, $default ), $default );
    171                 $this->assertFalse( get_site_option( $option ) );
    172         }
    173 }
    174 
    175 /**
    176  * @group options
    177  */
    178 class TestTransient extends WP_UnitTestCase {
    179         function setUp() {
    180                 parent::setUp();
    181         }
    182 
    183         function tearDown() {
    184                 parent::tearDown();
    185         }
    186 
    187         function test_the_basics() {
    188                 $key = rand_str();
    189                 $value = rand_str();
    190                 $value2 = rand_str();
    191 
    192                 $this->assertFalse( get_transient( 'doesnotexist' ) );
    193                 $this->assertTrue( set_transient( $key, $value ) );
    194                 $this->assertEquals( $value, get_transient( $key ) );
    195                 $this->assertFalse( set_transient( $key, $value ) );
    196                 $this->assertTrue( set_transient( $key, $value2 ) );
    197                 $this->assertEquals( $value2, get_transient( $key ) );
    198                 $this->assertTrue( delete_transient( $key ) );
    199                 $this->assertFalse( get_transient( $key ) );
    200                 $this->assertFalse( delete_transient( $key ) );
    201         }
    202 
    203         function test_serialized_data() {
    204                 $key = rand_str();
    205                 $value = array( 'foo' => true, 'bar' => true );
    206 
    207                 $this->assertTrue( set_transient( $key, $value ) );
    208                 $this->assertEquals( $value, get_transient( $key ) );
    209 
    210                 $value = (object) $value;
    211                 $this->assertTrue( set_transient( $key, $value ) );
    212                 $this->assertEquals( $value, get_transient( $key ) );
    213                 $this->assertTrue( delete_transient( $key ) );
    214         }
    215 }
    216 
    217 /**
    218  * @group options
    219  */
    220 class TestSiteTransient extends WP_UnitTestCase {
    221         function setUp() {
    222                 parent::setUp();
    223         }
    224 
    225         function tearDown() {
    226                 parent::tearDown();
    227         }
    228 
    229         function test_the_basics() {
    230                 $key = rand_str();
    231                 $value = rand_str();
    232                 $value2 = rand_str();
    233 
    234                 $this->assertFalse( get_site_transient( 'doesnotexist' ) );
    235                 $this->assertTrue( set_site_transient( $key, $value ) );
    236                 $this->assertEquals( $value, get_site_transient( $key ) );
    237                 $this->assertFalse( set_site_transient( $key, $value ) );
    238                 $this->assertTrue( set_site_transient( $key, $value2 ) );
    239                 $this->assertEquals( $value2, get_site_transient( $key ) );
    240                 $this->assertTrue( delete_site_transient( $key ) );
    241                 $this->assertFalse( get_site_transient( $key ) );
    242                 $this->assertFalse( delete_site_transient( $key ) );
    243         }
    244 
    245         function test_serialized_data() {
    246                 $key = rand_str();
    247                 $value = array( 'foo' => true, 'bar' => true );
    248 
    249                 $this->assertTrue( set_site_transient( $key, $value ) );
    250                 $this->assertEquals( $value, get_site_transient( $key ) );
    251 
    252                 $value = (object) $value;
    253                 $this->assertTrue( set_site_transient( $key, $value ) );
    254                 $this->assertEquals( $value, get_site_transient( $key ) );
    255                 $this->assertTrue( delete_site_transient( $key ) );
    256         }
    257 }
    2582
    2593if ( is_multisite() ) :
    2604/**
    261  * @group options
     5 * @group option
    2626 */
    263 class TestBlogOption extends WP_UnitTestCase {
     7class Tests_Option_BlogOption extends WP_UnitTestCase {
    2648        function test_from_same_site() {
    2659                $key = rand_str();
  • trunk/tests/option/option.php

    r903 r904  
    22
    33/**
    4  * @group options
     4 * @group option
    55 */
    6 class TestOption extends WP_UnitTestCase {
    7         function setUp() {
    8                 parent::setUp();
    9         }
    10 
    11         function tearDown() {
    12                 parent::tearDown();
    13         }
     6class Tests_Option_Option extends WP_UnitTestCase {
    147
    158        function __return_foo() {
     
    8073        }
    8174}
    82 
    83 /**
    84  * @group options
    85  */
    86 class TestSiteOption extends WP_UnitTestCase {
    87         function __return_foo() {
    88                 return 'foo';
    89         }
    90 
    91         function test_the_basics() {
    92                 $key = rand_str();
    93                 $key2 = rand_str();
    94                 $value = rand_str();
    95                 $value2 = rand_str();
    96 
    97                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    98                 $this->assertTrue( add_site_option( $key, $value ) );
    99                 $this->assertEquals( $value, get_site_option( $key ) );
    100                 $this->assertFalse( add_site_option( $key, $value ) );  // Already exists
    101                 $this->assertFalse( update_site_option( $key, $value ) );  // Value is the same
    102                 $this->assertTrue( update_site_option( $key, $value2 ) );
    103                 $this->assertEquals( $value2, get_site_option( $key ) );
    104                 $this->assertFalse( add_site_option( $key, $value ) );
    105                 $this->assertEquals( $value2, get_site_option( $key ) );
    106                 $this->assertTrue( delete_site_option( $key ) );
    107                 $this->assertFalse( get_site_option( $key ) );
    108                 $this->assertFalse( delete_site_option( $key ) );
    109 
    110                 $this->assertTrue( update_site_option( $key2, $value2 ) );
    111                 $this->assertEquals( $value2, get_site_option( $key2 ) );
    112                 $this->assertTrue( delete_site_option( $key2 ) );
    113                 $this->assertFalse( get_site_option( $key2 ) );
    114         }
    115 
    116         function test_default_filter() {
    117                 $random = rand_str();
    118 
    119                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    120 
    121                 // Default filter overrides $default arg.
    122                 add_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    123                 $this->assertEquals( 'foo', get_site_option( 'doesnotexist', 'bar' ) );
    124 
    125                 // Remove the filter and the $default arg is honored.
    126                 remove_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    127                 $this->assertEquals( 'bar', get_site_option( 'doesnotexist', 'bar' ) );
    128 
    129                 // Once the option exists, the $default arg and the default filter are ignored.
    130                 add_site_option( 'doesnotexist', $random );
    131                 $this->assertEquals( $random, get_site_option( 'doesnotexist', 'foo' ) );
    132                 add_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    133                 $this->assertEquals( $random, get_site_option( 'doesnotexist', 'foo' ) );
    134                 remove_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    135 
    136                 // Cleanup
    137                 $this->assertTrue( delete_site_option( 'doesnotexist' ) );
    138                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    139         }
    140 
    141         function test_serialized_data() {
    142                 $key = rand_str();
    143                 $value = array( 'foo' => true, 'bar' => true );
    144 
    145                 $this->assertTrue( add_site_option( $key, $value ) );
    146                 $this->assertEquals( $value, get_site_option( $key ) );
    147 
    148                 $value = (object) $value;
    149                 $this->assertTrue( update_site_option( $key, $value ) );
    150                 $this->assertEquals( $value, get_site_option( $key ) );
    151                 $this->assertTrue( delete_site_option( $key ) );
    152         }
    153 
    154         // #15497 - ensure update_site_option will add options with false-y values
    155         function test_update_adds_falsey_value() {
    156                 $key = rand_str();
    157                 $value = 0;
    158 
    159                 delete_site_option( $key );
    160                 $this->assertTrue( update_site_option( $key, $value ) );
    161                 wp_cache_flush(); // ensure we're getting the value from the DB
    162                 $this->assertEquals( $value, get_site_option( $key ) );
    163         }
    164 
    165         // #18955 - ensure get_site_option doesn't cache the default value for non-existent options
    166         function test_get_doesnt_cache_default_value() {
    167                 $option = rand_str();
    168                 $default = 'a default';
    169 
    170                 $this->assertEquals( get_site_option( $option, $default ), $default );
    171                 $this->assertFalse( get_site_option( $option ) );
    172         }
    173 }
    174 
    175 /**
    176  * @group options
    177  */
    178 class TestTransient extends WP_UnitTestCase {
    179         function setUp() {
    180                 parent::setUp();
    181         }
    182 
    183         function tearDown() {
    184                 parent::tearDown();
    185         }
    186 
    187         function test_the_basics() {
    188                 $key = rand_str();
    189                 $value = rand_str();
    190                 $value2 = rand_str();
    191 
    192                 $this->assertFalse( get_transient( 'doesnotexist' ) );
    193                 $this->assertTrue( set_transient( $key, $value ) );
    194                 $this->assertEquals( $value, get_transient( $key ) );
    195                 $this->assertFalse( set_transient( $key, $value ) );
    196                 $this->assertTrue( set_transient( $key, $value2 ) );
    197                 $this->assertEquals( $value2, get_transient( $key ) );
    198                 $this->assertTrue( delete_transient( $key ) );
    199                 $this->assertFalse( get_transient( $key ) );
    200                 $this->assertFalse( delete_transient( $key ) );
    201         }
    202 
    203         function test_serialized_data() {
    204                 $key = rand_str();
    205                 $value = array( 'foo' => true, 'bar' => true );
    206 
    207                 $this->assertTrue( set_transient( $key, $value ) );
    208                 $this->assertEquals( $value, get_transient( $key ) );
    209 
    210                 $value = (object) $value;
    211                 $this->assertTrue( set_transient( $key, $value ) );
    212                 $this->assertEquals( $value, get_transient( $key ) );
    213                 $this->assertTrue( delete_transient( $key ) );
    214         }
    215 }
    216 
    217 /**
    218  * @group options
    219  */
    220 class TestSiteTransient extends WP_UnitTestCase {
    221         function setUp() {
    222                 parent::setUp();
    223         }
    224 
    225         function tearDown() {
    226                 parent::tearDown();
    227         }
    228 
    229         function test_the_basics() {
    230                 $key = rand_str();
    231                 $value = rand_str();
    232                 $value2 = rand_str();
    233 
    234                 $this->assertFalse( get_site_transient( 'doesnotexist' ) );
    235                 $this->assertTrue( set_site_transient( $key, $value ) );
    236                 $this->assertEquals( $value, get_site_transient( $key ) );
    237                 $this->assertFalse( set_site_transient( $key, $value ) );
    238                 $this->assertTrue( set_site_transient( $key, $value2 ) );
    239                 $this->assertEquals( $value2, get_site_transient( $key ) );
    240                 $this->assertTrue( delete_site_transient( $key ) );
    241                 $this->assertFalse( get_site_transient( $key ) );
    242                 $this->assertFalse( delete_site_transient( $key ) );
    243         }
    244 
    245         function test_serialized_data() {
    246                 $key = rand_str();
    247                 $value = array( 'foo' => true, 'bar' => true );
    248 
    249                 $this->assertTrue( set_site_transient( $key, $value ) );
    250                 $this->assertEquals( $value, get_site_transient( $key ) );
    251 
    252                 $value = (object) $value;
    253                 $this->assertTrue( set_site_transient( $key, $value ) );
    254                 $this->assertEquals( $value, get_site_transient( $key ) );
    255                 $this->assertTrue( delete_site_transient( $key ) );
    256         }
    257 }
    258 
    259 if ( is_multisite() ) :
    260 /**
    261  * @group options
    262  */
    263 class TestBlogOption extends WP_UnitTestCase {
    264         function test_from_same_site() {
    265                 $key = rand_str();
    266                 $key2 = rand_str();
    267                 $value = rand_str();
    268                 $value2 = rand_str();
    269 
    270                 $this->assertFalse( get_blog_option( 1, 'doesnotexist' ) );
    271                 $this->assertFalse( get_option( 'doesnotexist' ) ); // check get_option()
    272 
    273                 $this->assertTrue( add_blog_option( 1, $key, $value ) );
    274                 // Assert all values of $blog_id that means the current or main blog (the same here).
    275                 $this->assertEquals( $value, get_blog_option( 1, $key ) );
    276                 $this->assertEquals( $value, get_blog_option( null, $key ) );
    277                 $this->assertEquals( $value, get_blog_option( '1', $key ) );
    278                 $this->assertEquals( $value, get_option( $key ) ); // check get_option()
    279 
    280                 $this->assertFalse( add_blog_option( 1, $key, $value ) );  // Already exists
    281                 $this->assertFalse( update_blog_option( 1, $key, $value ) );  // Value is the same
    282                 $this->assertTrue( update_blog_option( 1, $key, $value2 ) );
    283                 $this->assertEquals( $value2, get_blog_option( 1, $key ) );
    284                 $this->assertEquals( $value2, get_option( $key ) ); // check get_option()
    285                 $this->assertFalse( add_blog_option( 1, $key, $value ) );
    286                 $this->assertEquals( $value2, get_blog_option( 1, $key ) );
    287                 $this->assertEquals( $value2, get_option( $key ) ); // check get_option()
    288 
    289                 $this->assertTrue( delete_blog_option( 1, $key ) );
    290                 $this->assertFalse( get_blog_option( 1, $key ) );
    291                 $this->assertFalse( get_option( $key ) ); // check get_option()
    292                 $this->assertFalse( delete_blog_option( 1, $key ) );
    293                 $this->assertTrue( update_blog_option( 1, $key2, $value2 ) );
    294                 $this->assertEquals( $value2, get_blog_option( 1, $key2 ) );
    295                 $this->assertEquals( $value2, get_option( $key2 ) ); // check get_option()
    296                 $this->assertTrue( delete_blog_option( 1, $key2 ) );
    297                 $this->assertFalse( get_blog_option( 1, $key2 ) );
    298                 $this->assertFalse( get_option( $key2 ) ); // check get_option()
    299         }
    300 }
    301 endif;
  • trunk/tests/option/siteOption.php

    r903 r904  
    22
    33/**
    4  * @group options
     4 * @group option
    55 */
    6 class TestOption extends WP_UnitTestCase {
    7         function setUp() {
    8                 parent::setUp();
    9         }
    10 
    11         function tearDown() {
    12                 parent::tearDown();
    13         }
    14 
    15         function __return_foo() {
    16                 return 'foo';
    17         }
    18 
    19         function test_the_basics() {
    20                 $key = rand_str();
    21                 $key2 = rand_str();
    22                 $value = rand_str();
    23                 $value2 = rand_str();
    24 
    25                 $this->assertFalse( get_option( 'doesnotexist' ) );
    26                 $this->assertTrue( add_option( $key, $value ) );
    27                 $this->assertEquals( $value, get_option( $key ) );
    28                 $this->assertFalse( add_option( $key, $value ) );  // Already exists
    29                 $this->assertFalse( update_option( $key, $value ) );  // Value is the same
    30                 $this->assertTrue( update_option( $key, $value2 ) );
    31                 $this->assertEquals( $value2, get_option( $key ) );
    32                 $this->assertFalse( add_option( $key, $value ) );
    33                 $this->assertEquals( $value2, get_option( $key ) );
    34                 $this->assertTrue( delete_option( $key ) );
    35                 $this->assertFalse( get_option( $key ) );
    36                 $this->assertFalse( delete_option( $key ) );
    37 
    38                 $this->assertTrue( update_option( $key2, $value2 ) );
    39                 $this->assertEquals( $value2, get_option( $key2 ) );
    40                 $this->assertTrue( delete_option( $key2 ) );
    41                 $this->assertFalse( get_option( $key2 ) );
    42         }
    43 
    44         function test_default_filter() {
    45                 $random = rand_str();
    46 
    47                 $this->assertFalse( get_option( 'doesnotexist' ) );
    48 
    49                 // Default filter overrides $default arg.
    50                 add_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    51                 $this->assertEquals( 'foo', get_option( 'doesnotexist', 'bar' ) );
    52 
    53                 // Remove the filter and the $default arg is honored.
    54                 remove_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    55                 $this->assertEquals( 'bar', get_option( 'doesnotexist', 'bar' ) );
    56 
    57                 // Once the option exists, the $default arg and the default filter are ignored.
    58                 add_option( 'doesnotexist', $random );
    59                 $this->assertEquals( $random, get_option( 'doesnotexist', 'foo' ) );
    60                 add_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    61                 $this->assertEquals( $random, get_option( 'doesnotexist', 'foo' ) );
    62                 remove_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    63 
    64                 // Cleanup
    65                 $this->assertTrue( delete_option( 'doesnotexist' ) );
    66                 $this->assertFalse( get_option( 'doesnotexist' ) );
    67         }
    68 
    69         function test_serialized_data() {
    70                 $key = rand_str();
    71                 $value = array( 'foo' => true, 'bar' => true );
    72 
    73                 $this->assertTrue( add_option( $key, $value ) );
    74                 $this->assertEquals( $value, get_option( $key ) );
    75 
    76                 $value = (object) $value;
    77                 $this->assertTrue( update_option( $key, $value ) );
    78                 $this->assertEquals( $value, get_option( $key ) );
    79                 $this->assertTrue( delete_option( $key ) );
    80         }
    81 }
    82 
    83 /**
    84  * @group options
    85  */
    86 class TestSiteOption extends WP_UnitTestCase {
     6class Tests_Option_SiteOption extends WP_UnitTestCase {
    877        function __return_foo() {
    888                return 'foo';
     
    17292        }
    17393}
    174 
    175 /**
    176  * @group options
    177  */
    178 class TestTransient extends WP_UnitTestCase {
    179         function setUp() {
    180                 parent::setUp();
    181         }
    182 
    183         function tearDown() {
    184                 parent::tearDown();
    185         }
    186 
    187         function test_the_basics() {
    188                 $key = rand_str();
    189                 $value = rand_str();
    190                 $value2 = rand_str();
    191 
    192                 $this->assertFalse( get_transient( 'doesnotexist' ) );
    193                 $this->assertTrue( set_transient( $key, $value ) );
    194                 $this->assertEquals( $value, get_transient( $key ) );
    195                 $this->assertFalse( set_transient( $key, $value ) );
    196                 $this->assertTrue( set_transient( $key, $value2 ) );
    197                 $this->assertEquals( $value2, get_transient( $key ) );
    198                 $this->assertTrue( delete_transient( $key ) );
    199                 $this->assertFalse( get_transient( $key ) );
    200                 $this->assertFalse( delete_transient( $key ) );
    201         }
    202 
    203         function test_serialized_data() {
    204                 $key = rand_str();
    205                 $value = array( 'foo' => true, 'bar' => true );
    206 
    207                 $this->assertTrue( set_transient( $key, $value ) );
    208                 $this->assertEquals( $value, get_transient( $key ) );
    209 
    210                 $value = (object) $value;
    211                 $this->assertTrue( set_transient( $key, $value ) );
    212                 $this->assertEquals( $value, get_transient( $key ) );
    213                 $this->assertTrue( delete_transient( $key ) );
    214         }
    215 }
    216 
    217 /**
    218  * @group options
    219  */
    220 class TestSiteTransient extends WP_UnitTestCase {
    221         function setUp() {
    222                 parent::setUp();
    223         }
    224 
    225         function tearDown() {
    226                 parent::tearDown();
    227         }
    228 
    229         function test_the_basics() {
    230                 $key = rand_str();
    231                 $value = rand_str();
    232                 $value2 = rand_str();
    233 
    234                 $this->assertFalse( get_site_transient( 'doesnotexist' ) );
    235                 $this->assertTrue( set_site_transient( $key, $value ) );
    236                 $this->assertEquals( $value, get_site_transient( $key ) );
    237                 $this->assertFalse( set_site_transient( $key, $value ) );
    238                 $this->assertTrue( set_site_transient( $key, $value2 ) );
    239                 $this->assertEquals( $value2, get_site_transient( $key ) );
    240                 $this->assertTrue( delete_site_transient( $key ) );
    241                 $this->assertFalse( get_site_transient( $key ) );
    242                 $this->assertFalse( delete_site_transient( $key ) );
    243         }
    244 
    245         function test_serialized_data() {
    246                 $key = rand_str();
    247                 $value = array( 'foo' => true, 'bar' => true );
    248 
    249                 $this->assertTrue( set_site_transient( $key, $value ) );
    250                 $this->assertEquals( $value, get_site_transient( $key ) );
    251 
    252                 $value = (object) $value;
    253                 $this->assertTrue( set_site_transient( $key, $value ) );
    254                 $this->assertEquals( $value, get_site_transient( $key ) );
    255                 $this->assertTrue( delete_site_transient( $key ) );
    256         }
    257 }
    258 
    259 if ( is_multisite() ) :
    260 /**
    261  * @group options
    262  */
    263 class TestBlogOption extends WP_UnitTestCase {
    264         function test_from_same_site() {
    265                 $key = rand_str();
    266                 $key2 = rand_str();
    267                 $value = rand_str();
    268                 $value2 = rand_str();
    269 
    270                 $this->assertFalse( get_blog_option( 1, 'doesnotexist' ) );
    271                 $this->assertFalse( get_option( 'doesnotexist' ) ); // check get_option()
    272 
    273                 $this->assertTrue( add_blog_option( 1, $key, $value ) );
    274                 // Assert all values of $blog_id that means the current or main blog (the same here).
    275                 $this->assertEquals( $value, get_blog_option( 1, $key ) );
    276                 $this->assertEquals( $value, get_blog_option( null, $key ) );
    277                 $this->assertEquals( $value, get_blog_option( '1', $key ) );
    278                 $this->assertEquals( $value, get_option( $key ) ); // check get_option()
    279 
    280                 $this->assertFalse( add_blog_option( 1, $key, $value ) );  // Already exists
    281                 $this->assertFalse( update_blog_option( 1, $key, $value ) );  // Value is the same
    282                 $this->assertTrue( update_blog_option( 1, $key, $value2 ) );
    283                 $this->assertEquals( $value2, get_blog_option( 1, $key ) );
    284                 $this->assertEquals( $value2, get_option( $key ) ); // check get_option()
    285                 $this->assertFalse( add_blog_option( 1, $key, $value ) );
    286                 $this->assertEquals( $value2, get_blog_option( 1, $key ) );
    287                 $this->assertEquals( $value2, get_option( $key ) ); // check get_option()
    288 
    289                 $this->assertTrue( delete_blog_option( 1, $key ) );
    290                 $this->assertFalse( get_blog_option( 1, $key ) );
    291                 $this->assertFalse( get_option( $key ) ); // check get_option()
    292                 $this->assertFalse( delete_blog_option( 1, $key ) );
    293                 $this->assertTrue( update_blog_option( 1, $key2, $value2 ) );
    294                 $this->assertEquals( $value2, get_blog_option( 1, $key2 ) );
    295                 $this->assertEquals( $value2, get_option( $key2 ) ); // check get_option()
    296                 $this->assertTrue( delete_blog_option( 1, $key2 ) );
    297                 $this->assertFalse( get_blog_option( 1, $key2 ) );
    298                 $this->assertFalse( get_option( $key2 ) ); // check get_option()
    299         }
    300 }
    301 endif;
  • trunk/tests/option/siteTransient.php

    r903 r904  
    22
    33/**
    4  * @group options
     4 * @group option
    55 */
    6 class TestOption extends WP_UnitTestCase {
    7         function setUp() {
    8                 parent::setUp();
    9         }
    10 
    11         function tearDown() {
    12                 parent::tearDown();
    13         }
    14 
    15         function __return_foo() {
    16                 return 'foo';
    17         }
    18 
    19         function test_the_basics() {
    20                 $key = rand_str();
    21                 $key2 = rand_str();
    22                 $value = rand_str();
    23                 $value2 = rand_str();
    24 
    25                 $this->assertFalse( get_option( 'doesnotexist' ) );
    26                 $this->assertTrue( add_option( $key, $value ) );
    27                 $this->assertEquals( $value, get_option( $key ) );
    28                 $this->assertFalse( add_option( $key, $value ) );  // Already exists
    29                 $this->assertFalse( update_option( $key, $value ) );  // Value is the same
    30                 $this->assertTrue( update_option( $key, $value2 ) );
    31                 $this->assertEquals( $value2, get_option( $key ) );
    32                 $this->assertFalse( add_option( $key, $value ) );
    33                 $this->assertEquals( $value2, get_option( $key ) );
    34                 $this->assertTrue( delete_option( $key ) );
    35                 $this->assertFalse( get_option( $key ) );
    36                 $this->assertFalse( delete_option( $key ) );
    37 
    38                 $this->assertTrue( update_option( $key2, $value2 ) );
    39                 $this->assertEquals( $value2, get_option( $key2 ) );
    40                 $this->assertTrue( delete_option( $key2 ) );
    41                 $this->assertFalse( get_option( $key2 ) );
    42         }
    43 
    44         function test_default_filter() {
    45                 $random = rand_str();
    46 
    47                 $this->assertFalse( get_option( 'doesnotexist' ) );
    48 
    49                 // Default filter overrides $default arg.
    50                 add_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    51                 $this->assertEquals( 'foo', get_option( 'doesnotexist', 'bar' ) );
    52 
    53                 // Remove the filter and the $default arg is honored.
    54                 remove_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    55                 $this->assertEquals( 'bar', get_option( 'doesnotexist', 'bar' ) );
    56 
    57                 // Once the option exists, the $default arg and the default filter are ignored.
    58                 add_option( 'doesnotexist', $random );
    59                 $this->assertEquals( $random, get_option( 'doesnotexist', 'foo' ) );
    60                 add_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    61                 $this->assertEquals( $random, get_option( 'doesnotexist', 'foo' ) );
    62                 remove_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    63 
    64                 // Cleanup
    65                 $this->assertTrue( delete_option( 'doesnotexist' ) );
    66                 $this->assertFalse( get_option( 'doesnotexist' ) );
    67         }
    68 
    69         function test_serialized_data() {
    70                 $key = rand_str();
    71                 $value = array( 'foo' => true, 'bar' => true );
    72 
    73                 $this->assertTrue( add_option( $key, $value ) );
    74                 $this->assertEquals( $value, get_option( $key ) );
    75 
    76                 $value = (object) $value;
    77                 $this->assertTrue( update_option( $key, $value ) );
    78                 $this->assertEquals( $value, get_option( $key ) );
    79                 $this->assertTrue( delete_option( $key ) );
    80         }
    81 }
    82 
    83 /**
    84  * @group options
    85  */
    86 class TestSiteOption extends WP_UnitTestCase {
    87         function __return_foo() {
    88                 return 'foo';
    89         }
    90 
    91         function test_the_basics() {
    92                 $key = rand_str();
    93                 $key2 = rand_str();
    94                 $value = rand_str();
    95                 $value2 = rand_str();
    96 
    97                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    98                 $this->assertTrue( add_site_option( $key, $value ) );
    99                 $this->assertEquals( $value, get_site_option( $key ) );
    100                 $this->assertFalse( add_site_option( $key, $value ) );  // Already exists
    101                 $this->assertFalse( update_site_option( $key, $value ) );  // Value is the same
    102                 $this->assertTrue( update_site_option( $key, $value2 ) );
    103                 $this->assertEquals( $value2, get_site_option( $key ) );
    104                 $this->assertFalse( add_site_option( $key, $value ) );
    105                 $this->assertEquals( $value2, get_site_option( $key ) );
    106                 $this->assertTrue( delete_site_option( $key ) );
    107                 $this->assertFalse( get_site_option( $key ) );
    108                 $this->assertFalse( delete_site_option( $key ) );
    109 
    110                 $this->assertTrue( update_site_option( $key2, $value2 ) );
    111                 $this->assertEquals( $value2, get_site_option( $key2 ) );
    112                 $this->assertTrue( delete_site_option( $key2 ) );
    113                 $this->assertFalse( get_site_option( $key2 ) );
    114         }
    115 
    116         function test_default_filter() {
    117                 $random = rand_str();
    118 
    119                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    120 
    121                 // Default filter overrides $default arg.
    122                 add_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    123                 $this->assertEquals( 'foo', get_site_option( 'doesnotexist', 'bar' ) );
    124 
    125                 // Remove the filter and the $default arg is honored.
    126                 remove_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    127                 $this->assertEquals( 'bar', get_site_option( 'doesnotexist', 'bar' ) );
    128 
    129                 // Once the option exists, the $default arg and the default filter are ignored.
    130                 add_site_option( 'doesnotexist', $random );
    131                 $this->assertEquals( $random, get_site_option( 'doesnotexist', 'foo' ) );
    132                 add_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    133                 $this->assertEquals( $random, get_site_option( 'doesnotexist', 'foo' ) );
    134                 remove_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    135 
    136                 // Cleanup
    137                 $this->assertTrue( delete_site_option( 'doesnotexist' ) );
    138                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    139         }
    140 
    141         function test_serialized_data() {
    142                 $key = rand_str();
    143                 $value = array( 'foo' => true, 'bar' => true );
    144 
    145                 $this->assertTrue( add_site_option( $key, $value ) );
    146                 $this->assertEquals( $value, get_site_option( $key ) );
    147 
    148                 $value = (object) $value;
    149                 $this->assertTrue( update_site_option( $key, $value ) );
    150                 $this->assertEquals( $value, get_site_option( $key ) );
    151                 $this->assertTrue( delete_site_option( $key ) );
    152         }
    153 
    154         // #15497 - ensure update_site_option will add options with false-y values
    155         function test_update_adds_falsey_value() {
    156                 $key = rand_str();
    157                 $value = 0;
    158 
    159                 delete_site_option( $key );
    160                 $this->assertTrue( update_site_option( $key, $value ) );
    161                 wp_cache_flush(); // ensure we're getting the value from the DB
    162                 $this->assertEquals( $value, get_site_option( $key ) );
    163         }
    164 
    165         // #18955 - ensure get_site_option doesn't cache the default value for non-existent options
    166         function test_get_doesnt_cache_default_value() {
    167                 $option = rand_str();
    168                 $default = 'a default';
    169 
    170                 $this->assertEquals( get_site_option( $option, $default ), $default );
    171                 $this->assertFalse( get_site_option( $option ) );
    172         }
    173 }
    174 
    175 /**
    176  * @group options
    177  */
    178 class TestTransient extends WP_UnitTestCase {
    179         function setUp() {
    180                 parent::setUp();
    181         }
    182 
    183         function tearDown() {
    184                 parent::tearDown();
    185         }
    186 
    187         function test_the_basics() {
    188                 $key = rand_str();
    189                 $value = rand_str();
    190                 $value2 = rand_str();
    191 
    192                 $this->assertFalse( get_transient( 'doesnotexist' ) );
    193                 $this->assertTrue( set_transient( $key, $value ) );
    194                 $this->assertEquals( $value, get_transient( $key ) );
    195                 $this->assertFalse( set_transient( $key, $value ) );
    196                 $this->assertTrue( set_transient( $key, $value2 ) );
    197                 $this->assertEquals( $value2, get_transient( $key ) );
    198                 $this->assertTrue( delete_transient( $key ) );
    199                 $this->assertFalse( get_transient( $key ) );
    200                 $this->assertFalse( delete_transient( $key ) );
    201         }
    202 
    203         function test_serialized_data() {
    204                 $key = rand_str();
    205                 $value = array( 'foo' => true, 'bar' => true );
    206 
    207                 $this->assertTrue( set_transient( $key, $value ) );
    208                 $this->assertEquals( $value, get_transient( $key ) );
    209 
    210                 $value = (object) $value;
    211                 $this->assertTrue( set_transient( $key, $value ) );
    212                 $this->assertEquals( $value, get_transient( $key ) );
    213                 $this->assertTrue( delete_transient( $key ) );
    214         }
    215 }
    216 
    217 /**
    218  * @group options
    219  */
    220 class TestSiteTransient extends WP_UnitTestCase {
    221         function setUp() {
    222                 parent::setUp();
    223         }
    224 
    225         function tearDown() {
    226                 parent::tearDown();
    227         }
     6class Tests_Option_SiteTransient extends WP_UnitTestCase {
    2287
    2298        function test_the_basics() {
     
    25635        }
    25736}
    258 
    259 if ( is_multisite() ) :
    260 /**
    261  * @group options
    262  */
    263 class TestBlogOption extends WP_UnitTestCase {
    264         function test_from_same_site() {
    265                 $key = rand_str();
    266                 $key2 = rand_str();
    267                 $value = rand_str();
    268                 $value2 = rand_str();
    269 
    270                 $this->assertFalse( get_blog_option( 1, 'doesnotexist' ) );
    271                 $this->assertFalse( get_option( 'doesnotexist' ) ); // check get_option()
    272 
    273                 $this->assertTrue( add_blog_option( 1, $key, $value ) );
    274                 // Assert all values of $blog_id that means the current or main blog (the same here).
    275                 $this->assertEquals( $value, get_blog_option( 1, $key ) );
    276                 $this->assertEquals( $value, get_blog_option( null, $key ) );
    277                 $this->assertEquals( $value, get_blog_option( '1', $key ) );
    278                 $this->assertEquals( $value, get_option( $key ) ); // check get_option()
    279 
    280                 $this->assertFalse( add_blog_option( 1, $key, $value ) );  // Already exists
    281                 $this->assertFalse( update_blog_option( 1, $key, $value ) );  // Value is the same
    282                 $this->assertTrue( update_blog_option( 1, $key, $value2 ) );
    283                 $this->assertEquals( $value2, get_blog_option( 1, $key ) );
    284                 $this->assertEquals( $value2, get_option( $key ) ); // check get_option()
    285                 $this->assertFalse( add_blog_option( 1, $key, $value ) );
    286                 $this->assertEquals( $value2, get_blog_option( 1, $key ) );
    287                 $this->assertEquals( $value2, get_option( $key ) ); // check get_option()
    288 
    289                 $this->assertTrue( delete_blog_option( 1, $key ) );
    290                 $this->assertFalse( get_blog_option( 1, $key ) );
    291                 $this->assertFalse( get_option( $key ) ); // check get_option()
    292                 $this->assertFalse( delete_blog_option( 1, $key ) );
    293                 $this->assertTrue( update_blog_option( 1, $key2, $value2 ) );
    294                 $this->assertEquals( $value2, get_blog_option( 1, $key2 ) );
    295                 $this->assertEquals( $value2, get_option( $key2 ) ); // check get_option()
    296                 $this->assertTrue( delete_blog_option( 1, $key2 ) );
    297                 $this->assertFalse( get_blog_option( 1, $key2 ) );
    298                 $this->assertFalse( get_option( $key2 ) ); // check get_option()
    299         }
    300 }
    301 endif;
  • trunk/tests/option/transient.php

    r903 r904  
    22
    33/**
    4  * @group options
     4 * @group option
    55 */
    6 class TestOption extends WP_UnitTestCase {
    7         function setUp() {
    8                 parent::setUp();
    9         }
    10 
    11         function tearDown() {
    12                 parent::tearDown();
    13         }
    14 
    15         function __return_foo() {
    16                 return 'foo';
    17         }
    18 
    19         function test_the_basics() {
    20                 $key = rand_str();
    21                 $key2 = rand_str();
    22                 $value = rand_str();
    23                 $value2 = rand_str();
    24 
    25                 $this->assertFalse( get_option( 'doesnotexist' ) );
    26                 $this->assertTrue( add_option( $key, $value ) );
    27                 $this->assertEquals( $value, get_option( $key ) );
    28                 $this->assertFalse( add_option( $key, $value ) );  // Already exists
    29                 $this->assertFalse( update_option( $key, $value ) );  // Value is the same
    30                 $this->assertTrue( update_option( $key, $value2 ) );
    31                 $this->assertEquals( $value2, get_option( $key ) );
    32                 $this->assertFalse( add_option( $key, $value ) );
    33                 $this->assertEquals( $value2, get_option( $key ) );
    34                 $this->assertTrue( delete_option( $key ) );
    35                 $this->assertFalse( get_option( $key ) );
    36                 $this->assertFalse( delete_option( $key ) );
    37 
    38                 $this->assertTrue( update_option( $key2, $value2 ) );
    39                 $this->assertEquals( $value2, get_option( $key2 ) );
    40                 $this->assertTrue( delete_option( $key2 ) );
    41                 $this->assertFalse( get_option( $key2 ) );
    42         }
    43 
    44         function test_default_filter() {
    45                 $random = rand_str();
    46 
    47                 $this->assertFalse( get_option( 'doesnotexist' ) );
    48 
    49                 // Default filter overrides $default arg.
    50                 add_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    51                 $this->assertEquals( 'foo', get_option( 'doesnotexist', 'bar' ) );
    52 
    53                 // Remove the filter and the $default arg is honored.
    54                 remove_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    55                 $this->assertEquals( 'bar', get_option( 'doesnotexist', 'bar' ) );
    56 
    57                 // Once the option exists, the $default arg and the default filter are ignored.
    58                 add_option( 'doesnotexist', $random );
    59                 $this->assertEquals( $random, get_option( 'doesnotexist', 'foo' ) );
    60                 add_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    61                 $this->assertEquals( $random, get_option( 'doesnotexist', 'foo' ) );
    62                 remove_filter( 'default_option_doesnotexist', array( $this, '__return_foo' ) );
    63 
    64                 // Cleanup
    65                 $this->assertTrue( delete_option( 'doesnotexist' ) );
    66                 $this->assertFalse( get_option( 'doesnotexist' ) );
    67         }
    68 
    69         function test_serialized_data() {
    70                 $key = rand_str();
    71                 $value = array( 'foo' => true, 'bar' => true );
    72 
    73                 $this->assertTrue( add_option( $key, $value ) );
    74                 $this->assertEquals( $value, get_option( $key ) );
    75 
    76                 $value = (object) $value;
    77                 $this->assertTrue( update_option( $key, $value ) );
    78                 $this->assertEquals( $value, get_option( $key ) );
    79                 $this->assertTrue( delete_option( $key ) );
    80         }
    81 }
    82 
    83 /**
    84  * @group options
    85  */
    86 class TestSiteOption extends WP_UnitTestCase {
    87         function __return_foo() {
    88                 return 'foo';
    89         }
    90 
    91         function test_the_basics() {
    92                 $key = rand_str();
    93                 $key2 = rand_str();
    94                 $value = rand_str();
    95                 $value2 = rand_str();
    96 
    97                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    98                 $this->assertTrue( add_site_option( $key, $value ) );
    99                 $this->assertEquals( $value, get_site_option( $key ) );
    100                 $this->assertFalse( add_site_option( $key, $value ) );  // Already exists
    101                 $this->assertFalse( update_site_option( $key, $value ) );  // Value is the same
    102                 $this->assertTrue( update_site_option( $key, $value2 ) );
    103                 $this->assertEquals( $value2, get_site_option( $key ) );
    104                 $this->assertFalse( add_site_option( $key, $value ) );
    105                 $this->assertEquals( $value2, get_site_option( $key ) );
    106                 $this->assertTrue( delete_site_option( $key ) );
    107                 $this->assertFalse( get_site_option( $key ) );
    108                 $this->assertFalse( delete_site_option( $key ) );
    109 
    110                 $this->assertTrue( update_site_option( $key2, $value2 ) );
    111                 $this->assertEquals( $value2, get_site_option( $key2 ) );
    112                 $this->assertTrue( delete_site_option( $key2 ) );
    113                 $this->assertFalse( get_site_option( $key2 ) );
    114         }
    115 
    116         function test_default_filter() {
    117                 $random = rand_str();
    118 
    119                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    120 
    121                 // Default filter overrides $default arg.
    122                 add_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    123                 $this->assertEquals( 'foo', get_site_option( 'doesnotexist', 'bar' ) );
    124 
    125                 // Remove the filter and the $default arg is honored.
    126                 remove_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    127                 $this->assertEquals( 'bar', get_site_option( 'doesnotexist', 'bar' ) );
    128 
    129                 // Once the option exists, the $default arg and the default filter are ignored.
    130                 add_site_option( 'doesnotexist', $random );
    131                 $this->assertEquals( $random, get_site_option( 'doesnotexist', 'foo' ) );
    132                 add_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    133                 $this->assertEquals( $random, get_site_option( 'doesnotexist', 'foo' ) );
    134                 remove_filter( 'default_site_option_doesnotexist', array( $this, '__return_foo' ) );
    135 
    136                 // Cleanup
    137                 $this->assertTrue( delete_site_option( 'doesnotexist' ) );
    138                 $this->assertFalse( get_site_option( 'doesnotexist' ) );
    139         }
    140 
    141         function test_serialized_data() {
    142                 $key = rand_str();
    143                 $value = array( 'foo' => true, 'bar' => true );
    144 
    145                 $this->assertTrue( add_site_option( $key, $value ) );
    146                 $this->assertEquals( $value, get_site_option( $key ) );
    147 
    148                 $value = (object) $value;
    149                 $this->assertTrue( update_site_option( $key, $value ) );
    150                 $this->assertEquals( $value, get_site_option( $key ) );
    151                 $this->assertTrue( delete_site_option( $key ) );
    152         }
    153 
    154         // #15497 - ensure update_site_option will add options with false-y values
    155         function test_update_adds_falsey_value() {
    156                 $key = rand_str();
    157                 $value = 0;
    158 
    159                 delete_site_option( $key );
    160                 $this->assertTrue( update_site_option( $key, $value ) );
    161                 wp_cache_flush(); // ensure we're getting the value from the DB
    162                 $this->assertEquals( $value, get_site_option( $key ) );
    163         }
    164 
    165         // #18955 - ensure get_site_option doesn't cache the default value for non-existent options
    166         function test_get_doesnt_cache_default_value() {
    167                 $option = rand_str();
    168                 $default = 'a default';
    169 
    170                 $this->assertEquals( get_site_option( $option, $default ), $default );
    171                 $this->assertFalse( get_site_option( $option ) );
    172         }
    173 }
    174 
    175 /**
    176  * @group options
    177  */
    178 class TestTransient extends WP_UnitTestCase {
    179         function setUp() {
    180                 parent::setUp();
    181         }
    182 
    183         function tearDown() {
    184                 parent::tearDown();
    185         }
     6class Tests_Option_Transient extends WP_UnitTestCase {
    1867
    1878        function test_the_basics() {
     
    21435        }
    21536}
    216 
    217 /**
    218  * @group options
    219  */
    220 class TestSiteTransient extends WP_UnitTestCase {
    221         function setUp() {
    222                 parent::setUp();
    223         }
    224 
    225         function tearDown() {
    226                 parent::tearDown();
    227         }
    228 
    229         function test_the_basics() {
    230                 $key = rand_str();
    231                 $value = rand_str();
    232                 $value2 = rand_str();
    233 
    234                 $this->assertFalse( get_site_transient( 'doesnotexist' ) );
    235                 $this->assertTrue( set_site_transient( $key, $value ) );
    236                 $this->assertEquals( $value, get_site_transient( $key ) );
    237                 $this->assertFalse( set_site_transient( $key, $value ) );
    238                 $this->assertTrue( set_site_transient( $key, $value2 ) );
    239                 $this->assertEquals( $value2, get_site_transient( $key ) );
    240                 $this->assertTrue( delete_site_transient( $key ) );
    241                 $this->assertFalse( get_site_transient( $key ) );
    242                 $this->assertFalse( delete_site_transient( $key ) );
    243         }
    244 
    245         function test_serialized_data() {
    246                 $key = rand_str();
    247                 $value = array( 'foo' => true, 'bar' => true );
    248 
    249                 $this->assertTrue( set_site_transient( $key, $value ) );
    250                 $this->assertEquals( $value, get_site_transient( $key ) );
    251 
    252                 $value = (object) $value;
    253                 $this->assertTrue( set_site_transient( $key, $value ) );
    254                 $this->assertEquals( $value, get_site_transient( $key ) );
    255                 $this->assertTrue( delete_site_transient( $key ) );
    256         }
    257 }
    258 
    259 if ( is_multisite() ) :
    260 /**
    261  * @group options
    262  */
    263 class TestBlogOption extends WP_UnitTestCase {
    264         function test_from_same_site() {
    265                 $key = rand_str();
    266                 $key2 = rand_str();
    267                 $value = rand_str();
    268                 $value2 = rand_str();
    269 
    270                 $this->assertFalse( get_blog_option( 1, 'doesnotexist' ) );
    271                 $this->assertFalse( get_option( 'doesnotexist' ) ); // check get_option()
    272 
    273                 $this->assertTrue( add_blog_option( 1, $key, $value ) );
    274                 // Assert all values of $blog_id that means the current or main blog (the same here).
    275                 $this->assertEquals( $value, get_blog_option( 1, $key ) );
    276                 $this->assertEquals( $value, get_blog_option( null, $key ) );
    277                 $this->assertEquals( $value, get_blog_option( '1', $key ) );
    278                 $this->assertEquals( $value, get_option( $key ) ); // check get_option()
    279 
    280                 $this->assertFalse( add_blog_option( 1, $key, $value ) );  // Already exists
    281                 $this->assertFalse( update_blog_option( 1, $key, $value ) );  // Value is the same
    282                 $this->assertTrue( update_blog_option( 1, $key, $value2 ) );
    283                 $this->assertEquals( $value2, get_blog_option( 1, $key ) );
    284                 $this->assertEquals( $value2, get_option( $key ) ); // check get_option()
    285                 $this->assertFalse( add_blog_option( 1, $key, $value ) );
    286                 $this->assertEquals( $value2, get_blog_option( 1, $key ) );
    287                 $this->assertEquals( $value2, get_option( $key ) ); // check get_option()
    288 
    289                 $this->assertTrue( delete_blog_option( 1, $key ) );
    290                 $this->assertFalse( get_blog_option( 1, $key ) );
    291                 $this->assertFalse( get_option( $key ) ); // check get_option()
    292                 $this->assertFalse( delete_blog_option( 1, $key ) );
    293                 $this->assertTrue( update_blog_option( 1, $key2, $value2 ) );
    294                 $this->assertEquals( $value2, get_blog_option( 1, $key2 ) );
    295                 $this->assertEquals( $value2, get_option( $key2 ) ); // check get_option()
    296                 $this->assertTrue( delete_blog_option( 1, $key2 ) );
    297                 $this->assertFalse( get_blog_option( 1, $key2 ) );
    298                 $this->assertFalse( get_option( $key2 ) ); // check get_option()
    299         }
    300 }
    301 endif;
  • trunk/tests/post/filtering.php

    r903 r904  
    66/**
    77 * @group post
     8 * @group formatting
    89 */
    9 class TestPostFiltering extends WP_UnitTestCase {
     10class Tests_Post_Filtering extends WP_UnitTestCase {
    1011        function setUp() {
    1112                parent::setUp();
  • trunk/tests/query.php

    r903 r904  
    1010 * @group rewrite
    1111 */
    12 class TestWPQueryVars extends WP_UnitTestCase {
     12class Tests_Query extends WP_UnitTestCase {
    1313
    1414        protected $page_ids;
     
    631631        // '[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?attachment=$matches[1]&feed=$matches[2]',
    632632}
    633 
    634 /**
    635  * @group query
    636  * @group rewrite
    637  */
    638 class TestWPQueryVerbosePageRules extends TestWPQueryVars {
    639         function setUp() {
    640                 parent::setUp();
    641                 global $wp_rewrite;
    642                 update_option( 'permalink_structure', '/%category%/%year%/%postname%/' );
    643                 create_initial_taxonomies();
    644                 $GLOBALS['wp_rewrite']->init();
    645                 flush_rewrite_rules();
    646         }
    647 }
  • trunk/tests/query/results.php

    r903 r904  
    88 * @group query
    99 */
    10 class TestWPQueryPosts extends WP_UnitTestCase {
     10class Tests_Query_Results extends WP_UnitTestCase {
    1111        protected $q;
    1212
  • trunk/tests/shortcode.php

    r903 r904  
    11<?php
    22/**
    3  * @group shortcodes
     3 * @group shortcode
    44 */
    5 class TestShortcode extends WP_UnitTestCase {
     5class Tests_Shortcode extends WP_UnitTestCase {
    66
    77        protected $shortcodes = array( 'footag', 'bartag', 'baztag', 'dumptag' );
  • trunk/tests/test_includes_pluggable.php

    r902 r904  
    270270        }
    271271}
    272 
    273 /**
    274  * @group pluggable
    275  * @group user
    276  */
    277 class TestUserFunction extends WP_UnitTestCase {
    278         /**
    279          * @ticket 13317
    280          */
    281         function test_get_userdata() {
    282                 $id = $this->factory->user->create( array( 'role' => 'administrator' ) );
    283                 $this->assertFalse( get_userdata( 0 ) );
    284                 $this->assertFalse( get_userdata( '0' ) );
    285                 $this->assertFalse( get_userdata( 'string' ) );
    286                 $this->assertFalse( get_userdata( array( 'array' ) ) );
    287         }
    288 }
  • trunk/tests/theme/WPTheme.php

    r903 r904  
    33 * @group themes
    44 */
    5 class Test_WP_Theme extends WP_UnitTestCase {
     5class Tests_Theme_WPTheme extends WP_UnitTestCase {
    66        function setUp() {
    77                parent::setUp();
  • trunk/tests/upload.php

    r903 r904  
    66 * @group media
    77 */
    8 class TestUploadFunctions extends WP_UnitTestCase {
     8class Tests_Upload extends WP_UnitTestCase {
    99
    1010        var $siteurl;
  • trunk/tests/url.php

    r903 r904  
    22
    33// tests for link-template.php and related URL functions
    4 class TestSSLLinks extends WP_UnitTestCase {
     4class Tests_URL extends WP_UnitTestCase {
    55        var $_old_server;
    66        function setUp() {
  • trunk/tests/user.php

    r903 r904  
    55 * @group user
    66 */
    7 class TestWPUser extends WP_UnitTestCase {
     7class Tests_User_User extends WP_UnitTestCase {
    88
    99        protected $_deprecated_errors = array();
     
    506506                $this->assertNull( get_post( $post_id ) );
    507507        }
     508
     509        /**
     510         * @ticket 13317
     511         */
     512        function test_get_userdata() {
     513                $this->assertFalse( get_userdata( 0 ) );
     514                $this->assertFalse( get_userdata( '0' ) );
     515                $this->assertFalse( get_userdata( 'string' ) );
     516                $this->assertFalse( get_userdata( array( 'array' ) ) );
     517        }
    508518}
  • trunk/tests/user/author.php

    r903 r904  
    77 * @group user
    88 */
    9 class TestWPAuthor extends WP_UnitTestCase {
     9class Tests_User_Author extends WP_UnitTestCase {
    1010        protected $old_post_id = 0;
    1111        protected $author_id = 0;
  • trunk/tests/user/capabilities.php

    r903 r904  
    77 * @group capabilities
    88 */
    9 class WPTestUserCapabilities extends WP_UnitTestCase {
     9class Tests_User_Capabilities extends WP_UnitTestCase {
    1010        var $user_ids = array();
    1111
  • trunk/tests/user/mapMetaCap.php

    r903 r904  
    55 * @group capabilities
    66 */
    7 class TestMapMetaCap extends WP_UnitTestCase {
     7class Tests_User_MapMetaCap extends WP_UnitTestCase {
    88        var $super_admins = null;
    99
  • trunk/tests/xmlrpc/Disabled.php

    r903 r904  
    11<?php
    2 include_once(ABSPATH . 'wp-admin/includes/admin.php');
    3 include_once(ABSPATH . WPINC . '/class-IXR.php');
    4 include_once(ABSPATH . WPINC . '/class-wp-xmlrpc-server.php');
     2
     3require_once ABSPATH . 'wp-admin/includes/admin.php';
     4require_once ABSPATH . WPINC . '/class-IXR.php';
     5require_once ABSPATH . WPINC . '/class-wp-xmlrpc-server.php';
    56
    67/**
    78 * @group xmlrpc
    89 */
    9 class TestXMLRPCServer_Disabled extends WP_UnitTestCase {
     10class Tests_XMLRPC_Disabled extends WP_UnitTestCase {
    1011        function test_disabled() {
    1112                $myxmlrpcserver = new wp_xmlrpc_server();
  • trunk/tests/xmlrpc/mt/getRecentPostTitles.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_mt_getRecentPostTitles extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_mt_getRecentPostTitles extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/mw/editPost.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_mw_editPost extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_mw_editPost extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/mw/getPost.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_mw_getPost extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_mw_getPost extends WP_XMLRPC_UnitTestCase {
    77        var $post_data;
    88        var $post_id;
  • trunk/tests/xmlrpc/mw/getRecentPosts.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_mw_getRecentPosts extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_mw_getRecentPosts extends WP_XMLRPC_UnitTestCase {
    77        var $post_data;
    88        var $post_id;
  • trunk/tests/xmlrpc/mw/newPost.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_mw_newPost extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_mw_newPost extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/wp/deletePost.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_deletePost extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_deletePost extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/wp/deleteTerm.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_deleteTerm extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_deleteTerm extends WP_XMLRPC_UnitTestCase {
    77        var $term;
    88
  • trunk/tests/xmlrpc/wp/editPost.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_editPost extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_editPost extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/wp/editTerm.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_editTerm extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_editTerm extends WP_XMLRPC_UnitTestCase {
    77        var $parent_term;
    88        var $child_term;
  • trunk/tests/xmlrpc/wp/getComment.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getComment extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getComment extends WP_XMLRPC_UnitTestCase {
    77        var $post_id;
    88        var $parent_comment_id;
  • trunk/tests/xmlrpc/wp/getComments.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getComments extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getComments extends WP_XMLRPC_UnitTestCase {
    77        var $post_id;
    88
  • trunk/tests/xmlrpc/wp/getMediaItem.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getMediaItem extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getMediaItem extends WP_XMLRPC_UnitTestCase {
    77        var $post_id;
    88        var $attachment_data;
  • trunk/tests/xmlrpc/wp/getOptions.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getOptions extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getOptions extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/wp/getPage.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getPage extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getPage extends WP_XMLRPC_UnitTestCase {
    77        var $post_data;
    88        var $post_id;
  • trunk/tests/xmlrpc/wp/getPageList.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getPageList extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getPageList extends WP_XMLRPC_UnitTestCase {
    77        var $post_data;
    88        var $post_id;
  • trunk/tests/xmlrpc/wp/getPages.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getPages extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getPages extends WP_XMLRPC_UnitTestCase {
    77    var $post_data;
    88    var $post_id;
  • trunk/tests/xmlrpc/wp/getPost.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getPost extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getPost extends WP_XMLRPC_UnitTestCase {
    77        var $post_data;
    88        var $post_id;
  • trunk/tests/xmlrpc/wp/getPostType.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getPostType extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getPostType extends WP_XMLRPC_UnitTestCase {
    77        var $cpt_name;
    88        var $cpt_args;
  • trunk/tests/xmlrpc/wp/getPostTypes.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getPostTypes extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getPostTypes extends WP_XMLRPC_UnitTestCase {
    77        function test_invalid_username_password() {
    88                $result = $this->myxmlrpcserver->wp_getPostTypes( array( 1, 'username', 'password', 'post' ) );
  • trunk/tests/xmlrpc/wp/getPosts.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getPosts extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getPosts extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/wp/getTaxonomies.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getTaxonomies extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getTaxonomies extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/wp/getTaxonomy.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getTaxonomy extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getTaxonomy extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/wp/getTerm.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getTerm extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getTerm extends WP_XMLRPC_UnitTestCase {
    77        var $term;
    88
  • trunk/tests/xmlrpc/wp/getTerms.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_getTerms extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_getTerms extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/wp/newPost.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_newPost extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_newPost extends WP_XMLRPC_UnitTestCase {
    77
    88        function test_invalid_username_password() {
  • trunk/tests/xmlrpc/wp/newTerm.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_newTerm extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_newTerm extends WP_XMLRPC_UnitTestCase {
    77        var $parent_term;
    88
  • trunk/tests/xmlrpc/wp/uploadFile.php

    r903 r904  
    44 * @group xmlrpc
    55 */
    6 class TestXMLRPCServer_wp_uploadFile extends WP_XMLRPC_UnitTestCase {
     6class Tests_XMLRPC_wp_uploadFile extends WP_XMLRPC_UnitTestCase {
    77        function test_valid_attachment() {
    88                $this->make_user_by_role( 'editor' );
Note: See TracChangeset for help on using the changeset viewer.