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;
30 * Test coverage for various classes in the \Drupal\Core\Ajax namespace.
34 class AjaxCommandsTest extends UnitTestCase {
37 * @covers \Drupal\Core\Ajax\AddCssCommand
39 public function testAddCssCommand() {
40 $command = new AddCssCommand('p{ text-decoration:blink; }');
43 'command' => 'add_css',
44 'data' => 'p{ text-decoration:blink; }',
47 $this->assertEquals($expected, $command->render());
51 * @covers \Drupal\Core\Ajax\AfterCommand
53 public function testAfterCommand() {
54 $command = new AfterCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
57 'command' => 'insert',
59 'selector' => '#page-title',
60 'data' => '<p>New Text!</p>',
61 'settings' => ['my-setting' => 'setting'],
64 $this->assertEquals($expected, $command->render());
68 * @covers \Drupal\Core\Ajax\AlertCommand
70 public function testAlertCommand() {
71 $command = new AlertCommand('Set condition 1 throughout the ship!');
74 'text' => 'Set condition 1 throughout the ship!',
77 $this->assertEquals($expected, $command->render());
81 * @covers \Drupal\Core\Ajax\AppendCommand
83 public function testAppendCommand() {
84 $command = new AppendCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
87 'command' => 'insert',
89 'selector' => '#page-title',
90 'data' => '<p>New Text!</p>',
91 'settings' => ['my-setting' => 'setting'],
94 $this->assertEquals($expected, $command->render());
98 * @covers \Drupal\Core\Ajax\BeforeCommand
100 public function testBeforeCommand() {
101 $command = new BeforeCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
104 'command' => 'insert',
105 'method' => 'before',
106 'selector' => '#page-title',
107 'data' => '<p>New Text!</p>',
108 'settings' => ['my-setting' => 'setting'],
111 $this->assertEquals($expected, $command->render());
115 * @covers \Drupal\Core\Ajax\ChangedCommand
117 public function testChangedCommand() {
118 $command = new ChangedCommand('#page-title', '#page-title-changed');
121 'command' => 'changed',
122 'selector' => '#page-title',
123 'asterisk' => '#page-title-changed',
126 $this->assertEquals($expected, $command->render());
130 * @covers \Drupal\Core\Ajax\CssCommand
132 public function testCssCommand() {
133 $command = new CssCommand('#page-title', ['text-decoration' => 'blink']);
134 $command->setProperty('font-size', '40px')->setProperty('font-weight', 'bold');
138 'selector' => '#page-title',
140 'text-decoration' => 'blink',
141 'font-size' => '40px',
142 'font-weight' => 'bold',
146 $this->assertEquals($expected, $command->render());
150 * @covers \Drupal\Core\Ajax\DataCommand
152 public function testDataCommand() {
153 $command = new DataCommand('#page-title', 'my-data', ['key' => 'value']);
157 'selector' => '#page-title',
159 'value' => ['key' => 'value'],
162 $this->assertEquals($expected, $command->render());
166 * @covers \Drupal\Core\Ajax\HtmlCommand
168 public function testHtmlCommand() {
169 $command = new HtmlCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
172 'command' => 'insert',
174 'selector' => '#page-title',
175 'data' => '<p>New Text!</p>',
176 'settings' => ['my-setting' => 'setting'],
179 $this->assertEquals($expected, $command->render());
183 * @covers \Drupal\Core\Ajax\InsertCommand
185 public function testInsertCommand() {
186 $command = new InsertCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
189 'command' => 'insert',
191 'selector' => '#page-title',
192 'data' => '<p>New Text!</p>',
193 'settings' => ['my-setting' => 'setting'],
196 $this->assertEquals($expected, $command->render());
200 * @covers \Drupal\Core\Ajax\InvokeCommand
202 public function testInvokeCommand() {
203 $command = new InvokeCommand('#page-title', 'myMethod', ['var1', 'var2']);
206 'command' => 'invoke',
207 'selector' => '#page-title',
208 'method' => 'myMethod',
209 'args' => ['var1', 'var2'],
212 $this->assertEquals($expected, $command->render());
216 * @covers \Drupal\Core\Ajax\PrependCommand
218 public function testPrependCommand() {
219 $command = new PrependCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
222 'command' => 'insert',
223 'method' => 'prepend',
224 'selector' => '#page-title',
225 'data' => '<p>New Text!</p>',
226 'settings' => ['my-setting' => 'setting'],
229 $this->assertEquals($expected, $command->render());
233 * @covers \Drupal\Core\Ajax\RemoveCommand
235 public function testRemoveCommand() {
236 $command = new RemoveCommand('#page-title');
239 'command' => 'remove',
240 'selector' => '#page-title',
243 $this->assertEquals($expected, $command->render());
247 * @covers \Drupal\Core\Ajax\ReplaceCommand
249 public function testReplaceCommand() {
250 $command = new ReplaceCommand('#page-title', '<p>New Text!</p>', ['my-setting' => 'setting']);
253 'command' => 'insert',
254 'method' => 'replaceWith',
255 'selector' => '#page-title',
256 'data' => '<p>New Text!</p>',
257 'settings' => ['my-setting' => 'setting'],
260 $this->assertEquals($expected, $command->render());
264 * @covers \Drupal\Core\Ajax\RestripeCommand
266 public function testRestripeCommand() {
267 $command = new RestripeCommand('#page-title');
270 'command' => 'restripe',
271 'selector' => '#page-title',
274 $this->assertEquals($expected, $command->render());
278 * @covers \Drupal\Core\Ajax\SettingsCommand
280 public function testSettingsCommand() {
281 $command = new SettingsCommand(['key' => 'value'], TRUE);
284 'command' => 'settings',
285 'settings' => ['key' => 'value'],
289 $this->assertEquals($expected, $command->render());
293 * @covers \Drupal\Core\Ajax\OpenDialogCommand
295 public function testOpenDialogCommand() {
296 $command = $this->getMockBuilder('Drupal\Core\Ajax\OpenDialogCommand')
297 ->setConstructorArgs([
298 '#some-dialog', 'Title', '<p>Text!</p>', [
303 ->setMethods(['getRenderedContent'])
306 // This method calls the render service, which isn't available. We want it
307 // to do nothing so we mock it to return a known value.
308 $command->expects($this->once())
309 ->method('getRenderedContent')
310 ->willReturn('rendered content');
313 'command' => 'openDialog',
314 'selector' => '#some-dialog',
316 'data' => 'rendered content',
324 $this->assertEquals($expected, $command->render());
328 * @covers \Drupal\Core\Ajax\OpenModalDialogCommand
330 public function testOpenModalDialogCommand() {
331 $command = $this->getMockBuilder('Drupal\Core\Ajax\OpenModalDialogCommand')
332 ->setConstructorArgs([
333 'Title', '<p>Text!</p>', [
338 ->setMethods(['getRenderedContent'])
341 // This method calls the render service, which isn't available. We want it
342 // to do nothing so we mock it to return a known value.
343 $command->expects($this->once())
344 ->method('getRenderedContent')
345 ->willReturn('rendered content');
348 'command' => 'openDialog',
349 'selector' => '#drupal-modal',
351 'data' => 'rendered content',
359 $this->assertEquals($expected, $command->render());
363 * @covers \Drupal\Core\Ajax\CloseModalDialogCommand
365 public function testCloseModalDialogCommand() {
366 $command = new CloseModalDialogCommand();
368 'command' => 'closeDialog',
369 'selector' => '#drupal-modal',
373 $this->assertEquals($expected, $command->render());
377 * @covers \Drupal\Core\Ajax\CloseDialogCommand
379 public function testCloseDialogCommand() {
380 $command = new CloseDialogCommand('#some-dialog', TRUE);
382 'command' => 'closeDialog',
383 'selector' => '#some-dialog',
387 $this->assertEquals($expected, $command->render());
391 * @covers \Drupal\Core\Ajax\SetDialogOptionCommand
393 public function testSetDialogOptionCommand() {
394 $command = new SetDialogOptionCommand('#some-dialog', 'width', '500');
396 'command' => 'setDialogOption',
397 'selector' => '#some-dialog',
398 'optionName' => 'width',
399 'optionValue' => '500',
402 $this->assertEquals($expected, $command->render());
406 * @covers \Drupal\Core\Ajax\SetDialogTitleCommand
408 public function testSetDialogTitleCommand() {
409 $command = new SetDialogTitleCommand('#some-dialog', 'Example');
411 'command' => 'setDialogOption',
412 'selector' => '#some-dialog',
413 'optionName' => 'title',
414 'optionValue' => 'Example',
417 $this->assertEquals($expected, $command->render());
421 * @covers \Drupal\Core\Ajax\RedirectCommand
423 public function testRedirectCommand() {
424 $command = new RedirectCommand('http://example.com');
426 'command' => 'redirect',
427 'url' => 'http://example.com',
430 $this->assertEquals($expected, $command->render());
434 * @covers \Drupal\Core\Ajax\UpdateBuildIdCommand
436 public function testUpdateBuildIdCommand() {
437 $old = 'ThisStringisOld';
438 $new = 'ThisStringIsNew';
439 $command = new UpdateBuildIdCommand($old, $new);
441 'command' => 'update_build_id',
446 $this->assertEquals($expected, $command->render());