WordPress.org

Make WordPress Core

Ticket #20448: 20448-ut.diff

File 20448-ut.diff, 2.7 KB (added by ryan, 6 years ago)

unit tests for default filters

  • wp-testcase/test_option.php

     
    3434                $this->assertFalse( get_option( $key2 ) );
    3535        }
    3636
     37        function test_default_filter() {
     38                $return_foo = function ( $value ) {
     39                        return 'foo';
     40                };
     41
     42                $random = rand_str();
     43
     44                $this->assertFalse( get_option( 'doesnotexist' ) );
     45
     46                // Default filter overrides $default arg.
     47                add_filter( 'default_option_doesnotexist', $return_foo );
     48                $this->assertEquals( 'foo', get_option( 'doesnotexist', 'bar' ) );
     49
     50                // Remove the filter and the $default arg is honored.
     51                remove_filter( 'default_option_doesnotexist', $return_foo );
     52                $this->assertEquals( 'bar', get_option( 'doesnotexist', 'bar' ) );
     53
     54                // Once the option exists, the $default arg and the default filter are ignored.
     55                add_option( 'doesnotexist', $random );
     56                $this->assertEquals( $random, get_option( 'doesnotexist', 'foo' ) );
     57                add_filter( 'default_option_doesnotexist', $return_foo );
     58                $this->assertEquals( $random, get_option( 'doesnotexist', 'foo' ) );
     59                remove_filter( 'default_option_doesnotexist', $return_foo );
     60
     61                // Cleanup
     62                $this->assertTrue( delete_option( 'doesnotexist' ) );
     63                $this->assertFalse( get_option( 'doesnotexist' ) );
     64        }
     65
    3766        function test_serialized_data() {
    3867                $key = rand_str();
    3968                $value = array( 'foo' => true, 'bar' => true );
     
    82111                $this->assertFalse( get_site_option( $key2 ) );
    83112        }
    84113
     114        function test_default_filter() {
     115                $return_foo = function ( $value ) {
     116                        return 'foo';
     117                };
     118
     119                $random = rand_str();
     120
     121                $this->assertFalse( get_site_option( 'doesnotexist' ) );
     122
     123                // Default filter overrides $default arg.
     124                add_filter( 'default_site_option_doesnotexist', $return_foo );
     125                $this->assertEquals( 'foo', get_site_option( 'doesnotexist', 'bar' ) );
     126
     127                // Remove the filter and the $default arg is honored.
     128                remove_filter( 'default_site_option_doesnotexist', $return_foo );
     129                $this->assertEquals( 'bar', get_site_option( 'doesnotexist', 'bar' ) );
     130
     131                // Once the option exists, the $default arg and the default filter are ignored.
     132                add_site_option( 'doesnotexist', $random );
     133                $this->assertEquals( $random, get_site_option( 'doesnotexist', 'foo' ) );
     134                add_filter( 'default_site_option_doesnotexist', $return_foo );
     135                $this->assertEquals( $random, get_site_option( 'doesnotexist', 'foo' ) );
     136                remove_filter( 'default_site_option_doesnotexist', $return_foo );
     137
     138                // Cleanup
     139                $this->assertTrue( delete_site_option( 'doesnotexist' ) );
     140                $this->assertFalse( get_site_option( 'doesnotexist' ) );
     141        }
     142
    85143        function test_serialized_data() {
    86144                $key = rand_str();
    87145                $value = array( 'foo' => true, 'bar' => true );