class AjaxCommandsTest

Same name in other branches
  1. 9 core/tests/Drupal/Tests/Core/Ajax/AjaxCommandsTest.php \Drupal\Tests\Core\Ajax\AjaxCommandsTest
  2. 8.9.x core/tests/Drupal/Tests/Core/Ajax/AjaxCommandsTest.php \Drupal\Tests\Core\Ajax\AjaxCommandsTest
  3. 11.x core/tests/Drupal/Tests/Core/Ajax/AjaxCommandsTest.php \Drupal\Tests\Core\Ajax\AjaxCommandsTest

Test coverage for various classes in the \Drupal\Core\Ajax namespace.

@group Ajax

Hierarchy

Expanded class hierarchy of AjaxCommandsTest

File

core/tests/Drupal/Tests/Core/Ajax/AjaxCommandsTest.php, line 39

Namespace

Drupal\Tests\Core\Ajax
View source
class AjaxCommandsTest extends UnitTestCase {
    
    /**
     * @return array
     *   - Array of css elements
     *   - Expected value
     */
    public static function providerCss() {
        return [
            'empty' => [
                [],
                [
                    'command' => 'add_css',
                    'data' => [],
                ],
            ],
            'single' => [
                [
                    [
                        'href' => 'core/misc/example.css',
                        'media' => 'all',
                    ],
                ],
                [
                    'command' => 'add_css',
                    'data' => [
                        [
                            'href' => 'core/misc/example.css',
                            'media' => 'all',
                        ],
                    ],
                ],
            ],
            'single-data-property' => [
                [
                    [
                        'href' => 'core/misc/example.css',
                        'media' => 'all',
                        'data-test' => 'test',
                    ],
                ],
                [
                    'command' => 'add_css',
                    'data' => [
                        [
                            'href' => 'core/misc/example.css',
                            'media' => 'all',
                            'data-test' => 'test',
                        ],
                    ],
                ],
            ],
            'multiple' => [
                [
                    [
                        'href' => 'core/misc/example1.css',
                        'media' => 'all',
                    ],
                    [
                        'href' => 'core/misc/example2.css',
                        'media' => 'all',
                    ],
                ],
                [
                    'command' => 'add_css',
                    'data' => [
                        [
                            'href' => 'core/misc/example1.css',
                            'media' => 'all',
                        ],
                        [
                            'href' => 'core/misc/example2.css',
                            'media' => 'all',
                        ],
                    ],
                ],
            ],
        ];
    }
    
    /**
     * @covers \Drupal\Core\Ajax\AddCssCommand
     * @dataProvider providerCss
     */
    public function testAddCssCommand($css, $expected) : void {
        $command = new AddCssCommand($css);
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\AddCssCommand
     * @group legacy
     */
    public function testStringAddCssCommand() : void {
        $this->expectDeprecation("The Drupal\\Core\\Ajax\\AddCssCommand with a string argument is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. See http://www.drupal.org/node/3154948");
        $command = new AddCssCommand('<style>p{ text-decoration:blink; }</style>');
        $expected = [
            'command' => 'add_css',
            'data' => '<style>p{ text-decoration:blink; }</style>',
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\AfterCommand
     */
    public function testAfterCommand() : void {
        $command = new AfterCommand('#page-title', '<p>New Text!</p>', [
            'my-setting' => 'setting',
        ]);
        $expected = [
            'command' => 'insert',
            'method' => 'after',
            'selector' => '#page-title',
            'data' => '<p>New Text!</p>',
            'settings' => [
                'my-setting' => 'setting',
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\AlertCommand
     */
    public function testAlertCommand() : void {
        $command = new AlertCommand('Set condition 1 throughout the ship!');
        $expected = [
            'command' => 'alert',
            'text' => 'Set condition 1 throughout the ship!',
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\AnnounceCommand
     *
     * @dataProvider announceCommandProvider
     */
    public function testAnnounceCommand($message, $priority, array $expected) : void {
        if ($priority === NULL) {
            $command = new AnnounceCommand($message);
        }
        else {
            $command = new AnnounceCommand($message, $priority);
        }
        $expected_assets = new AttachedAssets();
        $expected_assets->setLibraries([
            'core/drupal.announce',
        ]);
        $this->assertEquals($expected_assets, $command->getAttachedAssets());
        $this->assertSame($expected, $command->render());
    }
    
    /**
     * Data provider for testAnnounceCommand().
     */
    public static function announceCommandProvider() {
        return [
            'no priority' => [
                'Things are going to change!',
                NULL,
                [
                    'command' => 'announce',
                    'text' => 'Things are going to change!',
                ],
            ],
            'polite priority' => [
                'Things are going to change!',
                'polite',
                [
                    'command' => 'announce',
                    'text' => 'Things are going to change!',
                    'priority' => AnnounceCommand::PRIORITY_POLITE,
                ],
            ],
            'assertive priority' => [
                'Important!',
                'assertive',
                [
                    'command' => 'announce',
                    'text' => 'Important!',
                    'priority' => AnnounceCommand::PRIORITY_ASSERTIVE,
                ],
            ],
        ];
    }
    
    /**
     * @covers \Drupal\Core\Ajax\AppendCommand
     */
    public function testAppendCommand() : void {
        $command = new AppendCommand('#page-title', '<p>New Text!</p>', [
            'my-setting' => 'setting',
        ]);
        $expected = [
            'command' => 'insert',
            'method' => 'append',
            'selector' => '#page-title',
            'data' => '<p>New Text!</p>',
            'settings' => [
                'my-setting' => 'setting',
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\BeforeCommand
     */
    public function testBeforeCommand() : void {
        $command = new BeforeCommand('#page-title', '<p>New Text!</p>', [
            'my-setting' => 'setting',
        ]);
        $expected = [
            'command' => 'insert',
            'method' => 'before',
            'selector' => '#page-title',
            'data' => '<p>New Text!</p>',
            'settings' => [
                'my-setting' => 'setting',
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\ChangedCommand
     */
    public function testChangedCommand() : void {
        $command = new ChangedCommand('#page-title', '#page-title-changed');
        $expected = [
            'command' => 'changed',
            'selector' => '#page-title',
            'asterisk' => '#page-title-changed',
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\CssCommand
     */
    public function testCssCommand() : void {
        $command = new CssCommand('#page-title', [
            'text-decoration' => 'blink',
        ]);
        $command->setProperty('font-size', '40px')
            ->setProperty('font-weight', 'bold');
        $expected = [
            'command' => 'css',
            'selector' => '#page-title',
            'argument' => [
                'text-decoration' => 'blink',
                'font-size' => '40px',
                'font-weight' => 'bold',
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\DataCommand
     */
    public function testDataCommand() : void {
        $command = new DataCommand('#page-title', 'my-data', [
            'key' => 'value',
        ]);
        $expected = [
            'command' => 'data',
            'selector' => '#page-title',
            'name' => 'my-data',
            'value' => [
                'key' => 'value',
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\HtmlCommand
     */
    public function testHtmlCommand() : void {
        $command = new HtmlCommand('#page-title', '<p>New Text!</p>', [
            'my-setting' => 'setting',
        ]);
        $expected = [
            'command' => 'insert',
            'method' => 'html',
            'selector' => '#page-title',
            'data' => '<p>New Text!</p>',
            'settings' => [
                'my-setting' => 'setting',
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\InsertCommand
     */
    public function testInsertCommand() : void {
        $command = new InsertCommand('#page-title', '<p>New Text!</p>', [
            'my-setting' => 'setting',
        ]);
        $expected = [
            'command' => 'insert',
            'method' => NULL,
            'selector' => '#page-title',
            'data' => '<p>New Text!</p>',
            'settings' => [
                'my-setting' => 'setting',
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\InvokeCommand
     */
    public function testInvokeCommand() : void {
        $command = new InvokeCommand('#page-title', 'myMethod', [
            'var1',
            'var2',
        ]);
        $expected = [
            'command' => 'invoke',
            'selector' => '#page-title',
            'method' => 'myMethod',
            'args' => [
                'var1',
                'var2',
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\PrependCommand
     */
    public function testPrependCommand() : void {
        $command = new PrependCommand('#page-title', '<p>New Text!</p>', [
            'my-setting' => 'setting',
        ]);
        $expected = [
            'command' => 'insert',
            'method' => 'prepend',
            'selector' => '#page-title',
            'data' => '<p>New Text!</p>',
            'settings' => [
                'my-setting' => 'setting',
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\RemoveCommand
     */
    public function testRemoveCommand() : void {
        $command = new RemoveCommand('#page-title');
        $expected = [
            'command' => 'remove',
            'selector' => '#page-title',
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\ReplaceCommand
     */
    public function testReplaceCommand() : void {
        $command = new ReplaceCommand('#page-title', '<p>New Text!</p>', [
            'my-setting' => 'setting',
        ]);
        $expected = [
            'command' => 'insert',
            'method' => 'replaceWith',
            'selector' => '#page-title',
            'data' => '<p>New Text!</p>',
            'settings' => [
                'my-setting' => 'setting',
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\RestripeCommand
     */
    public function testRestripeCommand() : void {
        $command = new RestripeCommand('#page-title');
        $expected = [
            'command' => 'restripe',
            'selector' => '#page-title',
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\SettingsCommand
     */
    public function testSettingsCommand() : void {
        $command = new SettingsCommand([
            'key' => 'value',
        ], TRUE);
        $expected = [
            'command' => 'settings',
            'settings' => [
                'key' => 'value',
            ],
            'merge' => TRUE,
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\OpenDialogCommand
     */
    public function testOpenDialogCommand() : void {
        $command = new OpenDialogCommand('#some-dialog', 'Title', '<p>Text!</p>', [
            'url' => FALSE,
            'width' => 500,
        ]);
        $expected = [
            'command' => 'openDialog',
            'selector' => '#some-dialog',
            'settings' => NULL,
            'data' => '<p>Text!</p>',
            'dialogOptions' => [
                'url' => FALSE,
                'width' => 500,
                'title' => 'Title',
                'modal' => FALSE,
            ],
        ];
        $this->assertEquals($expected, $command->render());
        $command->setDialogTitle('New title');
        $expected['dialogOptions']['title'] = 'New title';
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\OpenModalDialogCommand
     */
    public function testOpenModalDialogCommand() : void {
        $command = $this->getMockBuilder('Drupal\\Core\\Ajax\\OpenModalDialogCommand')
            ->setConstructorArgs([
            'Title',
            '<p>Text!</p>',
            [
                'url' => 'example',
                'width' => 500,
            ],
        ])
            ->onlyMethods([
            'getRenderedContent',
        ])
            ->getMock();
        // This method calls the render service, which isn't available. We want it
        // to do nothing so we mock it to return a known value.
        $command->expects($this->once())
            ->method('getRenderedContent')
            ->willReturn('rendered content');
        $expected = [
            'command' => 'openDialog',
            'selector' => '#drupal-modal',
            'settings' => NULL,
            'data' => 'rendered content',
            'dialogOptions' => [
                'url' => 'example',
                'width' => 500,
                'title' => 'Title',
                'modal' => TRUE,
            ],
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\CloseModalDialogCommand
     */
    public function testCloseModalDialogCommand() : void {
        $command = new CloseModalDialogCommand();
        $expected = [
            'command' => 'closeDialog',
            'selector' => '#drupal-modal',
            'persist' => FALSE,
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\CloseDialogCommand
     */
    public function testCloseDialogCommand() : void {
        $command = new CloseDialogCommand('#some-dialog', TRUE);
        $expected = [
            'command' => 'closeDialog',
            'selector' => '#some-dialog',
            'persist' => TRUE,
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\SetDialogOptionCommand
     */
    public function testSetDialogOptionCommand() : void {
        $command = new SetDialogOptionCommand('#some-dialog', 'width', '500');
        $expected = [
            'command' => 'setDialogOption',
            'selector' => '#some-dialog',
            'optionName' => 'width',
            'optionValue' => '500',
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\SetDialogTitleCommand
     */
    public function testSetDialogTitleCommand() : void {
        $command = new SetDialogTitleCommand('#some-dialog', 'Example');
        $expected = [
            'command' => 'setDialogOption',
            'selector' => '#some-dialog',
            'optionName' => 'title',
            'optionValue' => 'Example',
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\RedirectCommand
     */
    public function testRedirectCommand() : void {
        $command = new RedirectCommand('http://example.com');
        $expected = [
            'command' => 'redirect',
            'url' => 'http://example.com',
        ];
        $this->assertEquals($expected, $command->render());
    }
    
    /**
     * @covers \Drupal\Core\Ajax\UpdateBuildIdCommand
     */
    public function testUpdateBuildIdCommand() : void {
        $old = 'ThisStringIsOld';
        $new = 'ThisStringIsNew';
        $command = new UpdateBuildIdCommand($old, $new);
        $expected = [
            'command' => 'update_build_id',
            'old' => $old,
            'new' => $new,
        ];
        $this->assertEquals($expected, $command->render());
    }

}

Members

Title Sort descending Deprecated Modifiers Object type Summary Overrides
AjaxCommandsTest::announceCommandProvider public static function Data provider for testAnnounceCommand().
AjaxCommandsTest::providerCss public static function
AjaxCommandsTest::testAddCssCommand public function @covers \Drupal\Core\Ajax\AddCssCommand
@dataProvider providerCss
AjaxCommandsTest::testAfterCommand public function @covers \Drupal\Core\Ajax\AfterCommand
AjaxCommandsTest::testAlertCommand public function @covers \Drupal\Core\Ajax\AlertCommand
AjaxCommandsTest::testAnnounceCommand public function @covers \Drupal\Core\Ajax\AnnounceCommand
AjaxCommandsTest::testAppendCommand public function @covers \Drupal\Core\Ajax\AppendCommand
AjaxCommandsTest::testBeforeCommand public function @covers \Drupal\Core\Ajax\BeforeCommand
AjaxCommandsTest::testChangedCommand public function @covers \Drupal\Core\Ajax\ChangedCommand
AjaxCommandsTest::testCloseDialogCommand public function @covers \Drupal\Core\Ajax\CloseDialogCommand
AjaxCommandsTest::testCloseModalDialogCommand public function @covers \Drupal\Core\Ajax\CloseModalDialogCommand
AjaxCommandsTest::testCssCommand public function @covers \Drupal\Core\Ajax\CssCommand
AjaxCommandsTest::testDataCommand public function @covers \Drupal\Core\Ajax\DataCommand
AjaxCommandsTest::testHtmlCommand public function @covers \Drupal\Core\Ajax\HtmlCommand
AjaxCommandsTest::testInsertCommand public function @covers \Drupal\Core\Ajax\InsertCommand
AjaxCommandsTest::testInvokeCommand public function @covers \Drupal\Core\Ajax\InvokeCommand
AjaxCommandsTest::testOpenDialogCommand public function @covers \Drupal\Core\Ajax\OpenDialogCommand
AjaxCommandsTest::testOpenModalDialogCommand public function @covers \Drupal\Core\Ajax\OpenModalDialogCommand
AjaxCommandsTest::testPrependCommand public function @covers \Drupal\Core\Ajax\PrependCommand
AjaxCommandsTest::testRedirectCommand public function @covers \Drupal\Core\Ajax\RedirectCommand
AjaxCommandsTest::testRemoveCommand public function @covers \Drupal\Core\Ajax\RemoveCommand
AjaxCommandsTest::testReplaceCommand public function @covers \Drupal\Core\Ajax\ReplaceCommand
AjaxCommandsTest::testRestripeCommand public function @covers \Drupal\Core\Ajax\RestripeCommand
AjaxCommandsTest::testSetDialogOptionCommand public function @covers \Drupal\Core\Ajax\SetDialogOptionCommand
AjaxCommandsTest::testSetDialogTitleCommand public function @covers \Drupal\Core\Ajax\SetDialogTitleCommand
AjaxCommandsTest::testSettingsCommand public function @covers \Drupal\Core\Ajax\SettingsCommand
AjaxCommandsTest::testStringAddCssCommand public function @covers \Drupal\Core\Ajax\AddCssCommand
@group legacy
AjaxCommandsTest::testUpdateBuildIdCommand public function @covers \Drupal\Core\Ajax\UpdateBuildIdCommand
PhpUnitWarnings::$deprecationWarnings private static property Deprecation warnings from PHPUnit to raise with @trigger_error().
PhpUnitWarnings::addWarning public function Converts PHPUnit deprecation warnings to E_USER_DEPRECATED.
RandomGeneratorTrait::getRandomGenerator protected function Gets the random generator for the utility methods.
RandomGeneratorTrait::randomMachineName protected function Generates a unique random string containing letters and numbers.
RandomGeneratorTrait::randomObject public function Generates a random PHP object.
RandomGeneratorTrait::randomString public function Generates a pseudo-random string of ASCII characters of codes 32 to 126.
RandomGeneratorTrait::randomStringValidate Deprecated public function Callback for random string validation.
UnitTestCase::$root protected property The app root. 1
UnitTestCase::getClassResolverStub protected function Returns a stub class resolver.
UnitTestCase::getConfigFactoryStub public function Returns a stub config factory that behaves according to the passed array.
UnitTestCase::getConfigStorageStub public function Returns a stub config storage that returns the supplied configuration.
UnitTestCase::getContainerWithCacheTagsInvalidator protected function Sets up a container with a cache tags invalidator.
UnitTestCase::getStringTranslationStub public function Returns a stub translation manager that just returns the passed string.
UnitTestCase::setUp protected function 358
UnitTestCase::setUpBeforeClass public static function
UnitTestCase::__get public function

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.