WordPress.org

Make WordPress Core

Ticket #18955: 18955.filter-tests.diff

File 18955.filter-tests.diff, 2.9 KB (added by duck_, 7 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 {