assertInstanceOf( '\Elementor\Widgets_Manager', $this->elementor()->widgets_manager ); } public function test_getWidgets() { $this->assertNotEmpty( $this->elementor()->widgets_manager->get_widget_types() ); } public function test_elementMethods() { foreach ( $this->elementor()->widgets_manager->get_widget_types() as $widget_type ) { $name = $widget_type->get_name(); if ( 'common' === $name ) { continue; } $this->assertNotEmpty( $widget_type->get_title() ); $this->assertNotEmpty( $widget_type->get_type() ); $this->assertNotEmpty( $name ); } } public function test_registerNUnregisterWidget() { $widget_class = '\Elementor\Widget_Text_editor'; $widget_id = 'text-editor'; $this->assertTrue( $this->elementor()->widgets_manager->register_widget_type( new $widget_class() ) ); $widget = $this->elementor()->widgets_manager->get_widget_types( $widget_id ); $this->assertInstanceOf( $widget_class, $widget ); $this->assertTrue( $this->elementor()->widgets_manager->unregister_widget_type( $widget_id ) ); $this->assertFalse( $this->elementor()->widgets_manager->unregister_widget_type( $widget_id ) ); $this->assertNull( $this->elementor()->widgets_manager->get_widget_types( $widget_id ) ); } public function test_controlsSelectorsData() { foreach ( $this->elementor()->widgets_manager->get_widget_types() as $widget ) { foreach ( $widget->get_controls() as $control ) { if ( empty( $control['selectors'] ) ) { continue; } foreach ( $control['selectors'] as $selector => $css_property ) { foreach ( explode( ',', $selector ) as $item ) { preg_match( '/\{\{(WRAPPER)|(ID)\}\}/', $item, $matches ); $this->assertTrue( ! ! $matches ); } } } } } public function test_controlsDefaultData() { foreach ( $this->elementor()->widgets_manager->get_widget_types() as $widget ) { foreach ( $widget->get_controls() as $control ) { if ( \Elementor\Controls_Manager::SELECT !== $control['type'] ) { continue; } $error_msg = sprintf( 'Widget: %1$s, Control: %2$s', $widget->get_name(), $control['name'] ); // is_empty makes an exception of the value '0' (string zero) if ( Utils::is_empty( $control['default'] ) ) { // Don't perform this check for mobile/tablet controls generated by add_responsive_control(), // because their default value is always an empty string, even if there is no '' option. if ( ! ( isset( $control['responsive']['max'] ) && ( 'tablet' === $control['responsive']['max'] || 'mobile' === $control['responsive']['max'] ) ) ) { $this->assertTrue( isset( $control['options'][''] ), $error_msg ); } } else { $flat_options = []; if ( isset( $control['groups'] ) ) { foreach ( $control['groups'] as $index_or_key => $args_or_label ) { if ( is_numeric( $index_or_key ) ) { $args = $args_or_label; $this->assertTrue( is_array( $args['options'] ), $error_msg ); foreach ( $args['options'] as $key => $label ) { $flat_options[ $key ] = $label; } } else { $key = $index_or_key; $label = $args_or_label; $flat_options[ $key ] = $label; } } } else { $flat_options = $control['options']; } $this->assertArrayHasKey( $control['default'], $flat_options, $error_msg ); } } } } }