| | 86 | |
| | 87 | /** |
| | 88 | * If get_option( $transient_timeout ) returns false, don't bother trying to delete the transient. |
| | 89 | * |
| | 90 | * @ticket 30380 |
| | 91 | */ |
| | 92 | function test_nonexistent_key_dont_delete_if_false() { |
| | 93 | // Create a bogus a transient |
| | 94 | $key = 'test_transient'; |
| | 95 | set_transient( $key, 'test', 60 * 10 ); |
| | 96 | $this->assertEquals( 'test', get_transient( $key ) ); |
| | 97 | |
| | 98 | // Useful variables for tracking |
| | 99 | $transient_timeout = '_transient_timeout_' . $key; |
| | 100 | |
| | 101 | // Mock an action for tracking action calls |
| | 102 | $a = new MockAction(); |
| | 103 | |
| | 104 | // Make sure the timeout option returns false |
| | 105 | add_filter( 'option_' . $transient_timeout, '__return_false' ); |
| | 106 | |
| | 107 | // Add some actions to make sure options are _not_ deleted |
| | 108 | add_action( 'delete_option', array( $a, 'delete_option' ) ); |
| | 109 | |
| | 110 | // Act |
| | 111 | get_transient( $key ); |
| | 112 | |
| | 113 | // Make sure delete option was not called for both the transient and the timeout |
| | 114 | $this->assertEquals( 0, $a->get_call_count() ); |
| | 115 | } |
| | 116 | |
| | 117 | /** |
| | 118 | * @ticket 30380 |
| | 119 | */ |
| | 120 | function test_nonexistent_key_old_timeout() { |
| | 121 | // Create a transient |
| | 122 | $key = 'test_transient'; |
| | 123 | set_transient( $key, 'test', 60 * 10 ); |
| | 124 | $this->assertEquals( 'test', get_transient( $key ) ); |
| | 125 | |
| | 126 | // Make sure the timeout option returns false |
| | 127 | $timeout = '_transient_timeout_' . $key; |
| | 128 | $transient_option = '_transient_' . $key; |
| | 129 | add_filter( 'option_' . $timeout, '__return_zero' ); |
| | 130 | |
| | 131 | // Mock an action for tracking action calls |
| | 132 | $a = new MockAction(); |
| | 133 | |
| | 134 | // Add some actions to make sure options are deleted |
| | 135 | add_action( 'delete_option', array( $a, 'action' ) ); |
| | 136 | |
| | 137 | // Act |
| | 138 | get_transient( $key ); |
| | 139 | |
| | 140 | // Make sure delete option was called for both the transient and the timeout |
| | 141 | $this->assertEquals( 2, $a->get_call_count() ); |
| | 142 | |
| | 143 | $expected = array( |
| | 144 | array( |
| | 145 | 'action' => 'action', |
| | 146 | 'tag' => 'delete_option', |
| | 147 | 'args' => array( $transient_option ), |
| | 148 | ), |
| | 149 | array( |
| | 150 | 'action' => 'action', |
| | 151 | 'tag' => 'delete_option', |
| | 152 | 'args' => array( $timeout ), |
| | 153 | ), |
| | 154 | ); |
| | 155 | $this->assertEquals( $expected, $a->get_events() ); |
| | 156 | } |