WordPress.org

Make WordPress Core

Ticket #18955: 18955.filter-tests.diff

File 18955.filter-tests.diff, 2.9 KB (added by duck_, 3 years ago)
  • wp-testcase/test_option.php

     
    4646                $this->assertEquals( $value, get_option( $key ) ); 
    4747                $this->assertTrue( delete_option( $key ) ); 
    4848        } 
     49 
     50        function _option_filter() { 
     51                return current_filter(); 
     52        } 
     53 
     54        function test_filter_order() { 
     55                $option = rand_str(); 
     56                add_option( $option, 'value' ); 
     57 
     58                // override update_option() 
     59                add_filter( 'pre_update_option_' . $option, array( $this, '_option_filter' ) ); 
     60                $this->assertTrue( update_option( $option, 'value' ) ); 
     61                $this->assertEquals( 'pre_update_option_' . $option, get_option( $option ) ); 
     62 
     63                remove_filter( 'pre_update_option_' . $option, array( $this, '_option_filter' ) ); 
     64                update_option( $option, 'value' ); 
     65 
     66                $this->assertEquals( 'value', get_option( $option ) ); 
     67                // override get_option() at the end 
     68                add_filter( 'option_' . $option, array( $this, '_option_filter' ) ); 
     69                $this->assertEquals( 'option_' . $option, get_option( $option ) ); 
     70 
     71                delete_option( $option ); 
     72                // the default value trumps the option_$option filter 
     73                $this->assertEquals( 'default', get_option( $option, 'default' ) ); 
     74                // but pre_option_$option beats default 
     75                add_filter( 'pre_option_' . $option, array( $this, '_option_filter' ) ); 
     76                $this->assertEquals( 'pre_option_' . $option, get_option( $option, 'default' ) ); 
     77        } 
    4978} 
    5079 
    5180class TestSiteOption extends WPTestCase { 
     
    114143                $this->assertEquals( get_site_option( $option, $default ), $default ); 
    115144                $this->assertFalse( get_site_option( $option ) );        
    116145        } 
     146 
     147        function _option_filter() { 
     148                return current_filter(); 
     149        } 
     150 
     151        function test_filter_order() { 
     152                $option = rand_str(); 
     153                add_site_option( $option, 'value' ); 
     154 
     155                // override update_site_option() 
     156                add_filter( 'pre_update_site_option_' . $option, array( $this, '_option_filter' ) ); 
     157                $this->assertTrue( update_site_option( $option, 'value' ) ); 
     158                $this->assertEquals( 'pre_update_site_option_' . $option, get_site_option( $option ) ); 
     159 
     160                remove_filter( 'pre_update_site_option_' . $option, array( $this, '_option_filter' ) ); 
     161                update_site_option( $option, 'value' ); 
     162 
     163                $this->assertEquals( 'value', get_site_option( $option ) ); 
     164                // override get_site_option() at the end 
     165                add_filter( 'site_option_' . $option, array( $this, '_option_filter' ) ); 
     166                $this->assertEquals( 'site_option_' . $option, get_site_option( $option ) ); 
     167 
     168                delete_site_option( $option ); 
     169                // the default value trumps the site_option_$option filter 
     170                $this->assertEquals( 'default', get_site_option( $option, 'default' ) ); 
     171                // but pre_site_option_$option beats default 
     172                add_filter( 'pre_site_option_' . $option, array( $this, '_option_filter' ) ); 
     173                $this->assertEquals( 'pre_site_option_' . $option, get_site_option( $option, 'default' ) ); 
     174        } 
    117175} 
    118176 
    119177class TestTransient extends WPTestCase {