| | 47 | * Test that registering a widget class and registering a widget instance work together. |
| | 48 | * |
| | 49 | * @see register_widget() |
| | 50 | * @see unregister_widget() |
| | 51 | * @ticket 28216 |
| | 52 | */ |
| | 53 | function test_register_and_unregister_widget_instance() { |
| | 54 | global $wp_widget_factory, $wp_registered_widgets; |
| | 55 | $this->assertEmpty( $wp_widget_factory->widgets ); |
| | 56 | $this->assertEmpty( $wp_registered_widgets ); |
| | 57 | |
| | 58 | update_option( 'widget_search', array( |
| | 59 | 2 => array( |
| | 60 | 'title' => '', |
| | 61 | ), |
| | 62 | '_multiwidget' => 1, |
| | 63 | ) ); |
| | 64 | update_option( 'widget_better_search', array( |
| | 65 | 3 => array( |
| | 66 | 'title' => '', |
| | 67 | ), |
| | 68 | '_multiwidget' => 1, |
| | 69 | ) ); |
| | 70 | |
| | 71 | register_widget( 'WP_Widget_Search' ); |
| | 72 | $this->assertArrayHasKey( 'WP_Widget_Search', $wp_widget_factory->widgets ); |
| | 73 | |
| | 74 | $widget_better_search = new WP_Widget_Search(); |
| | 75 | $widget_better_search->id_base = 'better_search'; |
| | 76 | $widget_better_search->name = 'Better Search'; |
| | 77 | $widget_better_search->option_name = 'widget_' . $widget_better_search->id_base; |
| | 78 | $widget_better_search->widget_options['classname'] = 'widget_' . $widget_better_search->id_base; |
| | 79 | $widget_better_search->control_options['id_base'] = $widget_better_search->id_base; |
| | 80 | register_widget( $widget_better_search ); |
| | 81 | $this->assertArrayHasKey( spl_object_hash( $widget_better_search ), $wp_widget_factory->widgets ); |
| | 82 | |
| | 83 | $this->assertCount( 2, $wp_widget_factory->widgets ); |
| | 84 | $this->assertArrayHasKey( 'WP_Widget_Search', $wp_widget_factory->widgets ); |
| | 85 | $this->assertArrayHasKey( spl_object_hash( $widget_better_search ), $wp_widget_factory->widgets ); |
| | 86 | |
| | 87 | $wp_widget_factory->_register_widgets(); |
| | 88 | |
| | 89 | $this->assertArrayHasKey( 'search-2', $wp_registered_widgets ); |
| | 90 | $this->assertArrayHasKey( 'better_search-3', $wp_registered_widgets ); |
| | 91 | $this->assertInstanceOf( 'WP_Widget_Search', $wp_registered_widgets['search-2']['callback'][0] ); |
| | 92 | $this->assertSame( $widget_better_search, $wp_registered_widgets['better_search-3']['callback'][0] ); |
| | 93 | |
| | 94 | $this->assertArrayHasKey( spl_object_hash( $widget_better_search ), $wp_widget_factory->widgets ); |
| | 95 | $this->assertArrayHasKey( 'WP_Widget_Search', $wp_widget_factory->widgets ); |
| | 96 | unregister_widget( 'WP_Widget_Search' ); |
| | 97 | unregister_widget( $widget_better_search ); |
| | 98 | $this->assertArrayNotHasKey( spl_object_hash( $widget_better_search ), $wp_widget_factory->widgets ); |
| | 99 | $this->assertArrayNotHasKey( 'WP_Widget_Search', $wp_widget_factory->widgets ); |
| | 100 | } |
| | 101 | |
| | 102 | /** |