WordPress.org

Make WordPress Core

Changeset 496 in tests


Ignore:
Timestamp:
01/11/12 21:09:34 (2 years ago)
Author:
ryan
Message:

Beginnings of post type tests. Test post deletion and cache clearing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wp-testcase/test_includes_post.php

    r454 r496  
    77        parent::setUp(); 
    88        $this->author_id = $this->_make_user('editor'); 
     9        $this->old_current_user = get_current_user_id(); 
     10        wp_set_current_user( $this->author_id ); 
    911        _set_cron_array(array()); 
    1012        $this->post_ids = array(); 
     
    1618            wp_delete_post($id); 
    1719        wp_delete_user( $this->author_id ); 
     20        wp_set_current_user( $this->old_current_user ); 
    1821    } 
    1922 
     
    2326    } 
    2427 
    25  
    2628    // test simple valid behavior: insert and get a post 
    27     function test_vb_insert_get() { 
    28         $post = array( 
    29             'post_author' => $this->author_id, 
    30             'post_status' => 'publish', 
    31             'post_content' => rand_str(), 
    32             'post_title' => rand_str(), 
    33         ); 
    34  
    35         // insert a post and make sure the ID is ok 
    36         $id = $this->post_ids[] = wp_insert_post($post); 
    37         $this->assertTrue(is_numeric($id)); 
    38         $this->assertTrue($id > 0); 
    39  
    40         // fetch the post and make sure it matches 
    41         $out = wp_get_single_post($id); 
    42  
    43         $this->assertEquals($post['post_content'], $out->post_content); 
    44         $this->assertEquals($post['post_title'], $out->post_title); 
    45         $this->assertEquals($post['post_status'], $out->post_status); 
    46         $this->assertEquals($post['post_author'], $out->post_author); 
    47     } 
    48  
     29    function test_vb_insert_get_delete() { 
     30        register_post_type( 'cpt', array( 'taxonomies' => array( 'post_tag', 'ctax' ) ) ); 
     31        register_taxonomy( 'ctax', 'cpt' ); 
     32        $post_types = array( 'post', 'cpt' ); 
     33 
     34        foreach ( $post_types as $post_type ) { 
     35            $post = array( 
     36                'post_author' => $this->author_id, 
     37                'post_status' => 'publish', 
     38                'post_content' => rand_str(), 
     39                'post_title' => rand_str(), 
     40                'tax_input' => array( 'post_tag' => 'tag1,tag2', 'ctax' => 'cterm1,cterm2' ), 
     41                'post_type' => $post_type 
     42            ); 
     43 
     44            // insert a post and make sure the ID is ok 
     45            $id = wp_insert_post($post); 
     46            $this->assertTrue(is_numeric($id)); 
     47            $this->assertTrue($id > 0); 
     48 
     49            // fetch the post and make sure it matches 
     50            $out = wp_get_single_post($id); 
     51 
     52            $this->assertEquals($post['post_content'], $out->post_content); 
     53            $this->assertEquals($post['post_title'], $out->post_title); 
     54            $this->assertEquals($post['post_status'], $out->post_status); 
     55            $this->assertEquals($post['post_author'], $out->post_author); 
     56 
     57            // test cache state 
     58            $pcache = wp_cache_get( $id, 'posts' ); 
     59            $this->assertInstanceOf( 'stdClass', $pcache ); 
     60            $this->assertEquals( $id, $pcache->ID ); 
     61 
     62            update_object_term_cache( $id, $post_type ); 
     63            $tcache = wp_cache_get( $id, "post_tag_relationships" ); 
     64            $this->assertInternalType( 'array', $tcache ); 
     65            $this->assertEquals( 2, count( $tcache ) ); 
     66 
     67            $tcache = wp_cache_get( $id, "ctax_relationships" ); 
     68            if ( 'cpt' == $post_type ) { 
     69                $this->assertInternalType( 'array', $tcache ); 
     70                $this->assertEquals( 2, count( $tcache ) ); 
     71            } else { 
     72                $this->assertFalse( $tcache ); 
     73            } 
     74 
     75            wp_delete_post( $id, true ); 
     76            $this->assertFalse( wp_cache_get( $id, 'posts' ) ); 
     77            $this->assertFalse( wp_cache_get( $id, "post_tag_relationships" ) ); 
     78            $this->assertFalse( wp_cache_get( $id, "ctax_relationships" ) ); 
     79        } 
     80    } 
    4981 
    5082    function test_vb_insert_future() { 
     
    842874    } 
    843875} 
     876 
     877class WPTestPostTypes extends WPTestCase { 
     878    function setUp() { 
     879        parent::setUp(); 
     880    } 
     881 
     882    function tearDown() { 
     883        parent::tearDown(); 
     884    } 
     885 
     886    function test_register_post_type() { 
     887        $this->assertNull( get_post_type_object( 'foo' ) ); 
     888        register_post_type( 'foo' ); 
     889 
     890        $pobj = get_post_type_object( 'foo' ); 
     891        $this->assertInstanceOf( 'stdClass', $pobj ); 
     892        $this->assertEquals( 'foo', $pobj->name ); 
     893 
     894        // Test some defaults 
     895        $this->assertFalse( is_post_type_hierarchical( 'foo' ) ); 
     896        $this->assertEquals( array(), get_object_taxonomies( 'foo' ) ); 
     897    } 
     898 
     899    function test_register_taxonomy_for_object_type() { 
     900        register_post_type( 'bar' ); 
     901        register_taxonomy_for_object_type( 'post_tag', 'bar' ); 
     902        $this->assertEquals( array( 'post_tag' ), get_object_taxonomies( 'bar' ) ); 
     903        register_taxonomy_for_object_type( 'category', 'bar' ); 
     904        $this->assertEquals( array( 'category', 'post_tag' ), get_object_taxonomies( 'bar' ) ); 
     905    } 
     906 
     907    function test_post_type_exists() { 
     908        $this->assertFalse( post_type_exists( 'notaposttype' ) ); 
     909        $this->assertTrue( post_type_exists( 'post' ) ); 
     910    } 
     911 
     912    function test_post_type_supports() { 
     913        $this->assertTrue( post_type_supports( 'post', 'post-formats' ) ); 
     914        $this->assertFalse( post_type_supports( 'page', 'post-formats' ) ); 
     915        $this->assertFalse( post_type_supports( 'notaposttype', 'post-formats' ) ); 
     916        $this->assertFalse( post_type_supports( 'post', 'notafeature' ) ); 
     917        $this->assertFalse( post_type_supports( 'notaposttype', 'notafeature' ) ); 
     918    } 
     919} 
     920 
    844921?> 
Note: See TracChangeset for help on using the changeset viewer.