3 namespace Drupal\Tests\Core\Ajax;
5 use Drupal\Tests\UnitTestCase;
6 use Drupal\Core\Ajax\AddCssCommand;
7 use Drupal\Core\Ajax\AfterCommand;
8 use Drupal\Core\Ajax\AlertCommand;
9 use Drupal\Core\Ajax\AppendCommand;
10 use Drupal\Core\Ajax\BeforeCommand;
11 use Drupal\Core\Ajax\ChangedCommand;
12 use Drupal\Core\Ajax\CssCommand;
13 use Drupal\Core\Ajax\DataCommand;
14 use Drupal\Core\Ajax\HtmlCommand;
15 use Drupal\Core\Ajax\InsertCommand;
16 use Drupal\Core\Ajax\InvokeCommand;
17 use Drupal\Core\Ajax\PrependCommand;
18 use Drupal\Core\Ajax\RemoveCommand;
19 use Drupal\Core\Ajax\ReplaceCommand;
20 use Drupal\Core\Ajax\RestripeCommand;
21 use Drupal\Core\Ajax\SettingsCommand;
22 use Drupal\Core\Ajax\CloseDialogCommand;
23 use Drupal\Core\Ajax\CloseModalDialogCommand;
24 use Drupal\Core\Ajax\SetDialogOptionCommand;
25 use Drupal\Core\Ajax\SetDialogTitleCommand;
26 use Drupal\Core\Ajax\RedirectCommand;
27 use Drupal\Core\Ajax\UpdateBuildIdCommand;
28 use Drupal\Core\Ajax\OpenDialogCommand;
31 * Test coverage for various classes in the \Drupal\Core\Ajax namespace.
35 class AjaxCommandsTest extends UnitTestCase {
38 * @covers \Drupal\Core\Ajax\AddCssCommand
40 public function testAddCssCommand() {
41 $command = new AddCssCommand('p{ text-decoration:blink; }');
44 'command' => 'add_css',
45 'data' => 'p{ text-decoration:blink; }',
48 $this->assertEquals($expected, $command->render());
52 * @covers \Drupal\Core\Ajax\AfterCommand
54 public function testAfterCommand() {
55 $command = new AfterCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
58 'command' => 'insert',
60 'selector' => '#page-title',
61 'data' => '<p>New Text!</p>',
62 'settings' => ['my-setting' => 'setting'],
65 $this->assertEquals($expected, $command->render());
69 * @covers \Drupal\Core\Ajax\AlertCommand
71 public function testAlertCommand() {
72 $command = new AlertCommand('Set condition 1 throughout the ship!');
75 'text' => 'Set condition 1 throughout the ship!',
78 $this->assertEquals($expected, $command->render());
82 * @covers \Drupal\Core\Ajax\AppendCommand
84 public function testAppendCommand() {
85 $command = new AppendCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
88 'command' => 'insert',
90 'selector' => '#page-title',
91 'data' => '<p>New Text!</p>',
92 'settings' => ['my-setting' => 'setting'],
95 $this->assertEquals($expected, $command->render());
99 * @covers \Drupal\Core\Ajax\BeforeCommand
101 public function testBeforeCommand() {
102 $command = new BeforeCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
105 'command' => 'insert',
106 'method' => 'before',
107 'selector' => '#page-title',
108 'data' => '<p>New Text!</p>',
109 'settings' => ['my-setting' => 'setting'],
112 $this->assertEquals($expected, $command->render());
116 * @covers \Drupal\Core\Ajax\ChangedCommand
118 public function testChangedCommand() {
119 $command = new ChangedCommand('#page-title', '#page-title-changed');
122 'command' => 'changed',
123 'selector' => '#page-title',
124 'asterisk' => '#page-title-changed',
127 $this->assertEquals($expected, $command->render());
131 * @covers \Drupal\Core\Ajax\CssCommand
133 public function testCssCommand() {
134 $command = new CssCommand('#page-title', ['text-decoration' => 'blink']);
135 $command->setProperty('font-size', '40px')->setProperty('font-weight', 'bold');
139 'selector' => '#page-title',
141 'text-decoration' => 'blink',
142 'font-size' => '40px',
143 'font-weight' => 'bold',
147 $this->assertEquals($expected, $command->render());
151 * @covers \Drupal\Core\Ajax\DataCommand
153 public function testDataCommand() {
154 $command = new DataCommand('#page-title', 'my-data', ['key' => 'value']);
158 'selector' => '#page-title',
160 'value' => ['key' => 'value'],
163 $this->assertEquals($expected, $command->render());
167 * @covers \Drupal\Core\Ajax\HtmlCommand
169 public function testHtmlCommand() {
170 $command = new HtmlCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
173 'command' => 'insert',
175 'selector' => '#page-title',
176 'data' => '<p>New Text!</p>',
177 'settings' => ['my-setting' => 'setting'],
180 $this->assertEquals($expected, $command->render());
184 * @covers \Drupal\Core\Ajax\InsertCommand
186 public function testInsertCommand() {
187 $command = new InsertCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
190 'command' => 'insert',
192 'selector' => '#page-title',
193 'data' => '<p>New Text!</p>',
194 'settings' => ['my-setting' => 'setting'],
197 $this->assertEquals($expected, $command->render());
201 * @covers \Drupal\Core\Ajax\InvokeCommand
203 public function testInvokeCommand() {
204 $command = new InvokeCommand('#page-title', 'myMethod', ['var1', 'var2']);
207 'command' => 'invoke',
208 'selector' => '#page-title',
209 'method' => 'myMethod',
210 'args' => ['var1', 'var2'],
213 $this->assertEquals($expected, $command->render());
217 * @covers \Drupal\Core\Ajax\PrependCommand
219 public function testPrependCommand() {
220 $command = new PrependCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
223 'command' => 'insert',
224 'method' => 'prepend',
225 'selector' => '#page-title',
226 'data' => '<p>New Text!</p>',
227 'settings' => ['my-setting' => 'setting'],
230 $this->assertEquals($expected, $command->render());
234 * @covers \Drupal\Core\Ajax\RemoveCommand
236 public function testRemoveCommand() {
237 $command = new RemoveCommand('#page-title');
240 'command' => 'remove',
241 'selector' => '#page-title',
244 $this->assertEquals($expected, $command->render());
248 * @covers \Drupal\Core\Ajax\ReplaceCommand
250 public function testReplaceCommand() {
251 $command = new ReplaceCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
254 'command' => 'insert',
255 'method' => 'replaceWith',
256 'selector' => '#page-title',
257 'data' => '<p>New Text!</p>',
258 'settings' => ['my-setting' => 'setting'],
261 $this->assertEquals($expected, $command->render());
265 * @covers \Drupal\Core\Ajax\RestripeCommand
267 public function testRestripeCommand() {
268 $command = new RestripeCommand('#page-title');
271 'command' => 'restripe',
272 'selector' => '#page-title',
275 $this->assertEquals($expected, $command->render());
279 * @covers \Drupal\Core\Ajax\SettingsCommand
281 public function testSettingsCommand() {
282 $command = new SettingsCommand(['key' => 'value'], TRUE);
285 'command' => 'settings',
286 'settings' => ['key' => 'value'],
290 $this->assertEquals($expected, $command->render());
294 * @covers \Drupal\Core\Ajax\OpenDialogCommand
296 public function testOpenDialogCommand() {
297 $command = new OpenDialogCommand('#some-dialog', 'Title', '<p>Text!</p>', [
303 'command' => 'openDialog',
304 'selector' => '#some-dialog',
306 'data' => '<p>Text!</p>',
314 $this->assertEquals($expected, $command->render());
316 $command->setDialogTitle('New title');
317 $expected['dialogOptions']['title'] = 'New title';
318 $this->assertEquals($expected, $command->render());
322 * @covers \Drupal\Core\Ajax\OpenModalDialogCommand
324 public function testOpenModalDialogCommand() {
325 $command = $this->getMockBuilder('Drupal\Core\Ajax\OpenModalDialogCommand')
326 ->setConstructorArgs([
327 'Title', '<p>Text!</p>', [
332 ->setMethods(['getRenderedContent'])
335 // This method calls the render service, which isn't available. We want it
336 // to do nothing so we mock it to return a known value.
337 $command->expects($this->once())
338 ->method('getRenderedContent')
339 ->willReturn('rendered content');
342 'command' => 'openDialog',
343 'selector' => '#drupal-modal',
345 'data' => 'rendered content',
353 $this->assertEquals($expected, $command->render());
357 * @covers \Drupal\Core\Ajax\CloseModalDialogCommand
359 public function testCloseModalDialogCommand() {
360 $command = new CloseModalDialogCommand();
362 'command' => 'closeDialog',
363 'selector' => '#drupal-modal',
367 $this->assertEquals($expected, $command->render());
371 * @covers \Drupal\Core\Ajax\CloseDialogCommand
373 public function testCloseDialogCommand() {
374 $command = new CloseDialogCommand('#some-dialog', TRUE);
376 'command' => 'closeDialog',
377 'selector' => '#some-dialog',
381 $this->assertEquals($expected, $command->render());
385 * @covers \Drupal\Core\Ajax\SetDialogOptionCommand
387 public function testSetDialogOptionCommand() {
388 $command = new SetDialogOptionCommand('#some-dialog', 'width', '500');
390 'command' => 'setDialogOption',
391 'selector' => '#some-dialog',
392 'optionName' => 'width',
393 'optionValue' => '500',
396 $this->assertEquals($expected, $command->render());
400 * @covers \Drupal\Core\Ajax\SetDialogTitleCommand
402 public function testSetDialogTitleCommand() {
403 $command = new SetDialogTitleCommand('#some-dialog', 'Example');
405 'command' => 'setDialogOption',
406 'selector' => '#some-dialog',
407 'optionName' => 'title',
408 'optionValue' => 'Example',
411 $this->assertEquals($expected, $command->render());
415 * @covers \Drupal\Core\Ajax\RedirectCommand
417 public function testRedirectCommand() {
418 $command = new RedirectCommand('http://example.com');
420 'command' => 'redirect',
421 'url' => 'http://example.com',
424 $this->assertEquals($expected, $command->render());
428 * @covers \Drupal\Core\Ajax\UpdateBuildIdCommand
430 public function testUpdateBuildIdCommand() {
431 $old = 'ThisStringisOld';
432 $new = 'ThisStringIsNew';
433 $command = new UpdateBuildIdCommand($old, $new);
435 'command' => 'update_build_id',
440 $this->assertEquals($expected, $command->render());