Files
carpseeds.pl/wp-content/plugins/elementor-3.2.5-bck4/tests/phpunit/elementor/test-controls.php
2024-07-15 11:28:08 +02:00

205 lines
5.4 KiB
PHP

<?php
namespace Elementor\Testing;
use Elementor\Controls_Manager;
class Elementor_Test_Controls extends Elementor_Test_Base {
public function test_getInstance() {
$this->assertInstanceOf( '\Elementor\Controls_Manager', $this->elementor()->controls_manager );
}
public function test_getControls() {
$this->assertNotEmpty( $this->elementor()->controls_manager->get_controls() );
}
public function test_renderControls() {
ob_start();
$this->elementor()->controls_manager->render_controls();
$this->assertNotEmpty( ob_get_clean() );
}
public function test_enqueueControlScripts() {
ob_start();
$this->elementor()->controls_manager->enqueue_control_scripts();
$this->assertEmpty( ob_get_clean() );
}
public function test_getTypes() {
foreach ( $this->elementor()->controls_manager->get_controls() as $control ) {
$this->assertNotEmpty( $control->get_type() );
}
}
public function test_registerNUnregisterControl() {
$control_class = '\Elementor\Control_Text';
$control_id = 'text';
$control_instance = new $control_class();
$this->elementor()->controls_manager->register_control( $control_id, new $control_instance() );
$control = $this->elementor()->controls_manager->get_control( $control_id );
$this->assertInstanceOf( $control_class, $control );
$this->assertTrue( $this->elementor()->controls_manager->unregister_control( $control_id ) );
$this->assertFalse( $this->elementor()->controls_manager->unregister_control( $control_id ) );
// Return the control for next tests..
$this->elementor()->controls_manager->register_control( $control_id, $control_instance );
}
public function test_groupControlsGetTypes() {
foreach ( $this->elementor()->controls_manager->get_control_groups() as $control_group ) {
$this->assertNotEmpty( $control_group->get_type() );
}
}
public function test_replaceStyleValues() {
$post_css_file = new \Elementor\Core\Files\CSS\Post( 0 );
$controls_stack = [
'margin' => [
'name' => 'margin',
'type' => Controls_Manager::DIMENSIONS,
'selectors' => [
'{{WRAPPER}} .elementor-element' => 'margin: {{TOP}}px {{RIGHT}}px {{BOTTOM}}px {{LEFT}}px;',
],
],
'color' => [
'name' => 'color',
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .elementor-element' => 'color: {{VALUE}};',
],
],
];
$values = [
'color' => '#fff',
'margin' => [
'top' => '1',
'right' => '2',
'bottom' => '3',
'left' => '4',
],
];
$value_callback = function( $control ) use ( $values ) {
return $values[ $control['name'] ];
};
$placeholders = [ '{{WRAPPER}}' ];
$replacements = [ '.elementor-test-element' ];
$post_css_file->add_control_rules( $controls_stack['color'], $controls_stack, $value_callback, $placeholders, $replacements );
$this->assertEquals(
'#fff',
$post_css_file->get_stylesheet()->get_rules( 'all', '.elementor-test-element .elementor-element', 'color' )
);
$post_css_file->add_control_rules( $controls_stack['margin'], $controls_stack, $value_callback, $placeholders, $replacements );
$this->assertEquals(
'1px 2px 3px 4px',
$post_css_file->get_stylesheet()->get_rules( 'all', '.elementor-test-element .elementor-element', 'margin' )
);
}
public function test_checkCondition() {
$this->elementor()->widgets_manager->get_widget_types(); // Ensure the widgets initialized
$element_obj = $this->elementor()->elements_manager->create_element_instance(
[
'elType' => 'widget',
'widgetType' => 'text-editor',
'id' => 'test_id',
'settings' => [
'control_1' => 'value',
],
]
);
$this->assertTrue( $element_obj->is_control_visible( [] ) );
$control_option = [
'name' => 'control_2',
'condition' => [
'control_1' => 'value1',
],
];
$this->assertFalse( $element_obj->is_control_visible( $control_option ) );
$control_option = [
'name' => 'control_2',
'condition' => [
'control_1' => 'value',
],
];
$this->assertTrue( $element_obj->is_control_visible( $control_option ) );
$control_option = [
'name' => 'control_2',
'condition' => [
'control_1!' => 'value',
],
];
$this->assertFalse( $element_obj->is_control_visible( $control_option ) );
}
public function test_getDefaultValue() {
// Text Control
$text_control = $this->elementor()->controls_manager->get_control( Controls_Manager::TEXT );
$control_option = [
'name' => 'key',
'default' => 'value',
];
$this->assertEquals( 'value', $text_control->get_value( $control_option, [] ) );
// URL Control
$url_control = $this->elementor()->controls_manager->get_control( Controls_Manager::URL );
$control_option = [
'name' => 'key',
'default' => [
'url' => 'THE_LINK',
],
];
$this->assertEquals(
[
'url' => 'THE_LINK',
'is_external' => '',
'nofollow' => '',
'custom_attributes' => '',
], $url_control->get_value( $control_option, [ 'key' => [ 'is_external' => '' ] ] )
);
// Repeater Control
$repeater_control = $this->elementor()->controls_manager->get_control( Controls_Manager::REPEATER );
$control_option = [
'name' => 'key',
'default' => [ [] ],
'fields' => [
[
'name' => 'one',
'type' => Controls_Manager::TEXT,
'default' => 'value',
],
],
];
$expected = [
[
'one' => 'value',
],
];
$this->assertEquals( $expected, $repeater_control->get_value( $control_option, [ [] ] ) );
}
}