| 111 | | } |
| 112 | | No newline at end of file |
| | 111 | /** |
| | 112 | * @ticket 18088 |
| | 113 | */ |
| | 114 | public function test_get_settings_errors_all_error_codes() { |
| | 115 | global $wp_settings_errors; |
| | 116 | |
| | 117 | $_orig_settings_errors = $wp_settings_errors; |
| | 118 | |
| | 119 | $wp_settings_errors = array(); |
| | 120 | |
| | 121 | $foo_codes = range( 0, 4 ); |
| | 122 | $bar_codes = range( 13, 16 ); |
| | 123 | |
| | 124 | foreach ( $foo_codes as $foo_code ) { |
| | 125 | $wp_settings_errors[] = array( |
| | 126 | 'setting' => 'foo', |
| | 127 | 'code' => $foo_code, |
| | 128 | 'message' => 'Foo.', |
| | 129 | 'type' => 'error', |
| | 130 | ); |
| | 131 | } |
| | 132 | |
| | 133 | foreach ( $bar_codes as $bar_code ) { |
| | 134 | $wp_settings_errors[] = array( |
| | 135 | 'setting' => 'bar', |
| | 136 | 'code' => $bar_code, |
| | 137 | 'message' => 'Bar.', |
| | 138 | 'type' => 'error', |
| | 139 | ); |
| | 140 | } |
| | 141 | |
| | 142 | $result = get_settings_errors(); |
| | 143 | |
| | 144 | $wp_settings_errors = $_orig_settings_errors; |
| | 145 | |
| | 146 | $this->assertEquals( array_merge( $foo_codes, $bar_codes ), wp_list_pluck( $result, 'code' ) ); |
| | 147 | } |
| | 148 | |
| | 149 | /** |
| | 150 | * @ticket 18088 |
| | 151 | */ |
| | 152 | public function test_get_settings_errors_single_error_code() { |
| | 153 | global $wp_settings_errors; |
| | 154 | |
| | 155 | $_orig_settings_errors = $wp_settings_errors; |
| | 156 | |
| | 157 | $wp_settings_errors = array(); |
| | 158 | |
| | 159 | $foo_codes = range( 0, 4 ); |
| | 160 | $bar_codes = range( 13, 16 ); |
| | 161 | |
| | 162 | foreach ( $foo_codes as $foo_code ) { |
| | 163 | $wp_settings_errors[] = array( |
| | 164 | 'setting' => 'foo', |
| | 165 | 'code' => $foo_code, |
| | 166 | 'message' => 'Foo.', |
| | 167 | 'type' => 'error', |
| | 168 | ); |
| | 169 | } |
| | 170 | |
| | 171 | foreach ( $bar_codes as $bar_code ) { |
| | 172 | $wp_settings_errors[] = array( |
| | 173 | 'setting' => 'bar', |
| | 174 | 'code' => $bar_code, |
| | 175 | 'message' => 'Bar.', |
| | 176 | 'type' => 'error', |
| | 177 | ); |
| | 178 | } |
| | 179 | |
| | 180 | $result = get_settings_errors( 'foo' ); |
| | 181 | |
| | 182 | $wp_settings_errors = $_orig_settings_errors; |
| | 183 | |
| | 184 | $this->assertEquals( $foo_codes, wp_list_pluck( $result, 'code' ) ); |
| | 185 | } |
| | 186 | |
| | 187 | /** |
| | 188 | * @ticket 18088 |
| | 189 | */ |
| | 190 | public function test_get_settings_errors_invalid_error_code() { |
| | 191 | global $wp_settings_errors; |
| | 192 | |
| | 193 | $_orig_settings_errors = $wp_settings_errors; |
| | 194 | |
| | 195 | $wp_settings_errors = array(); |
| | 196 | |
| | 197 | $codes = range( 0, 4 ); |
| | 198 | |
| | 199 | foreach ( $codes as $code ) { |
| | 200 | $wp_settings_errors[] = array( |
| | 201 | 'setting' => 'foo', |
| | 202 | 'code' => $code, |
| | 203 | 'message' => 'Foo.', |
| | 204 | 'type' => 'error', |
| | 205 | ); |
| | 206 | } |
| | 207 | |
| | 208 | $result = get_settings_errors( 'foobar' ); |
| | 209 | |
| | 210 | $wp_settings_errors = $_orig_settings_errors; |
| | 211 | |
| | 212 | $this->assertEmpty( $result ); |
| | 213 | } |
| | 214 | |
| | 215 | /** |
| | 216 | * @ticket 18088 |
| | 217 | */ |
| | 218 | public function test_get_settings_errors_from_transient() { |
| | 219 | global $wp_settings_errors; |
| | 220 | |
| | 221 | $_orig_settings_errors = $wp_settings_errors; |
| | 222 | |
| | 223 | $wp_settings_errors = array(); |
| | 224 | |
| | 225 | $codes = range( 0, 4 ); |
| | 226 | |
| | 227 | $errors = array(); |
| | 228 | foreach ( $codes as $code ) { |
| | 229 | $errors[] = array( |
| | 230 | 'setting' => 'foo', |
| | 231 | 'code' => $code, |
| | 232 | 'message' => 'Foo.', |
| | 233 | 'type' => 'error', |
| | 234 | ); |
| | 235 | } |
| | 236 | |
| | 237 | set_transient( 'settings_errors', $errors, 30 ); |
| | 238 | |
| | 239 | $_GET['settings-updated'] = 'true'; |
| | 240 | |
| | 241 | $result = get_settings_errors(); |
| | 242 | |
| | 243 | unset( $_GET['settings-updated'] ); |
| | 244 | $wp_settings_errors = $_orig_settings_errors; |
| | 245 | |
| | 246 | $this->assertEqualSets( $codes, wp_list_pluck( $result, 'code' ) ); |
| | 247 | } |
| | 248 | |
| | 249 | /** |
| | 250 | * @ticket 18088 |
| | 251 | */ |
| | 252 | public function test_get_settings_errors_from_network_transient() { |
| | 253 | if ( ! is_multisite() ) { |
| | 254 | $this->markTestSkipped( 'Test only runs in multisite' ); |
| | 255 | } |
| | 256 | |
| | 257 | global $wp_settings_errors, $current_screen; |
| | 258 | |
| | 259 | $_orig_settings_errors = $wp_settings_errors; |
| | 260 | $_orig_screen = $current_screen; |
| | 261 | |
| | 262 | $wp_settings_errors = array(); |
| | 263 | $current_screen = WP_Screen::get( 'dashboard-network' ); |
| | 264 | |
| | 265 | $codes = range( 3, 8 ); |
| | 266 | |
| | 267 | $errors = array(); |
| | 268 | foreach ( $codes as $code ) { |
| | 269 | $errors[] = array( |
| | 270 | 'setting' => 'foo', |
| | 271 | 'code' => $code, |
| | 272 | 'message' => 'Foo.', |
| | 273 | 'type' => 'error', |
| | 274 | ); |
| | 275 | } |
| | 276 | |
| | 277 | set_site_transient( 'settings_errors', $errors, 30 ); |
| | 278 | |
| | 279 | $_GET['updated'] = 'true'; |
| | 280 | |
| | 281 | $result = get_settings_errors(); |
| | 282 | |
| | 283 | unset( $_GET['updated'] ); |
| | 284 | $wp_settings_errors = $_orig_settings_errors; |
| | 285 | $current_screen = $_orig_screen; |
| | 286 | |
| | 287 | $this->assertEqualSets( $codes, wp_list_pluck( $result, 'code' ) ); |
| | 288 | } |
| | 289 | } |