/**
  * Test value method returns zero for nav_menu_term_id when previewing a new menu.
  *
  * @see WP_Customize_Nav_Menu_Item_Setting::value()
  */
 function test_value_nav_menu_term_id_returns_zero()
 {
     do_action('customize_register', $this->wp_customize);
     $menu_id = -123;
     $post_value = array('name' => 'Secondary', 'description' => '', 'parent' => 0, 'auto_add' => false);
     $setting_id = "nav_menu[{$menu_id}]";
     $menu = new WP_Customize_Nav_Menu_Setting($this->wp_customize, $setting_id);
     $this->wp_customize->set_post_value($menu->id, $post_value);
     $menu->preview();
     $value = $menu->value();
     $this->assertEquals($post_value, $value);
     $post_id = self::factory()->post->create(array('post_title' => 'Hello World'));
     $item_id = wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'post_type', 'menu-item-object' => 'post', 'menu-item-object-id' => $post_id, 'menu-item-title' => 'Hello World', 'menu-item-status' => 'publish'));
     $post = get_post($item_id);
     $menu_item = wp_setup_nav_menu_item($post);
     $setting_id = "nav_menu_item[{$item_id}]";
     $setting = new WP_Customize_Nav_Menu_Item_Setting($this->wp_customize, $setting_id);
     $value = $setting->value();
     $this->assertEquals(0, $value['nav_menu_term_id']);
 }
 /**
  * Test protected update() method via the save() method, for deleted menu.
  *
  * @see WP_Customize_Nav_Menu_Setting::update()
  */
 function test_save_deleted()
 {
     do_action('customize_register', $this->wp_customize);
     $menu_name = 'Lorem Ipsum';
     $menu_id = wp_create_nav_menu($menu_name);
     $setting_id = "nav_menu[{$menu_id}]";
     $setting = new WP_Customize_Nav_Menu_Setting($this->wp_customize, $setting_id);
     $nav_menu_options = $this->get_nav_menu_items_option();
     $nav_menu_options['auto_add'][] = $menu_id;
     update_option('nav_menu_options', $nav_menu_options);
     $menu = wp_get_nav_menu_object($menu_id);
     $this->assertEquals($menu_name, $menu->name);
     $this->wp_customize->set_post_value($setting_id, false);
     $setting->save();
     $this->assertFalse(wp_get_nav_menu_object($menu_id));
     $save_response = apply_filters('customize_save_response', array());
     $this->assertArrayHasKey('nav_menu_updates', $save_response);
     $update_result = array_shift($save_response['nav_menu_updates']);
     $this->assertArrayHasKey('term_id', $update_result);
     $this->assertArrayHasKey('previous_term_id', $update_result);
     $this->assertArrayHasKey('error', $update_result);
     $this->assertArrayHasKey('status', $update_result);
     $this->assertArrayHasKey('saved_value', $update_result);
     $this->assertNull($update_result['saved_value']);
     $this->assertEquals($menu_id, $update_result['term_id']);
     $this->assertNull($update_result['previous_term_id']);
     $this->assertNull($update_result['error']);
     $this->assertEquals('deleted', $update_result['status']);
     $nav_menu_options = $this->get_nav_menu_items_option();
     $this->assertNotContains($menu_id, $nav_menu_options['auto_add']);
 }