| 1295 | * Ensure that save_changeset_post method bails updating an underlying changeset which is invalid. |
| 1296 | * |
| 1297 | * @ticket 41252 |
| 1298 | * @covers WP_Customize_Manager::save_changeset_post |
| 1299 | * @covers WP_Customize_Manager::get_changeset_post_data |
| 1300 | */ |
| 1301 | function test_save_changeset_post_for_bad_changeset() { |
| 1302 | $uuid = wp_generate_uuid4(); |
| 1303 | $post_id = wp_insert_post( array( |
| 1304 | 'post_type' => 'customize_changeset', |
| 1305 | 'post_content' => 'INVALID_JSON', |
| 1306 | 'post_name' => $uuid, |
| 1307 | 'post_status' => 'auto-draft', |
| 1308 | 'post_date' => gmdate( 'Y-m-d H:i:s', strtotime( '-3 days' ) ), |
| 1309 | ) ); |
| 1310 | $manager = $this->create_test_manager( $uuid ); |
| 1311 | $args = array( |
| 1312 | 'data' => array( |
| 1313 | 'blogname' => array( |
| 1314 | 'value' => 'Test', |
| 1315 | ), |
| 1316 | ), |
| 1317 | ); |
| 1318 | |
| 1319 | $r = $manager->save_changeset_post( $args ); |
| 1320 | $this->assertInstanceOf( 'WP_Error', $r ); |
| 1321 | $this->assertEquals( 'json_parse_error', $r->get_error_code() ); |
| 1322 | |
| 1323 | wp_update_post( array( |
| 1324 | 'ID' => $post_id, |
| 1325 | 'post_content' => 'null', |
| 1326 | ) ); |
| 1327 | $r = $manager->save_changeset_post( $args ); |
| 1328 | $this->assertInstanceOf( 'WP_Error', $r ); |
| 1329 | $this->assertEquals( 'expected_array', $r->get_error_code() ); |
| 1330 | } |
| 1331 | |
| 1332 | /** |