Upgraded drupal core with security updates
[yaffs-website] / web / core / tests / Drupal / Tests / Core / Controller / AjaxRendererTest.php
1 <?php
2
3 /**
4  * @file
5  * Contains \Drupal\Tests\Core\Controller\AjaxRendererTest.
6  */
7
8 namespace Drupal\Tests\Core\Controller;
9
10 use Drupal\Core\Render\MainContent\AjaxRenderer;
11 use Drupal\Tests\UnitTestCase;
12 use Symfony\Component\HttpFoundation\Request;
13 use Symfony\Component\DependencyInjection\ContainerBuilder;
14
15 /**
16  * @coversDefaultClass \Drupal\Core\Render\MainContent\AjaxRenderer
17  * @group Ajax
18  */
19 class AjaxRendererTest extends UnitTestCase {
20
21   /**
22    * The tested ajax controller.
23    *
24    * @var \Drupal\Core\Render\MainContent\AjaxRenderer
25    */
26   protected $ajaxRenderer;
27
28   /**
29    * The renderer.
30    *
31    * @var \Drupal\Core\Render\RendererInterface|\PHPUnit_Framework_MockObject_MockObject
32    */
33   protected $renderer;
34
35   /**
36    * {@inheritdoc}
37    */
38   protected function setUp() {
39     $element_info_manager = $this->getMock('Drupal\Core\Render\ElementInfoManagerInterface');
40     $element_info_manager->expects($this->any())
41       ->method('getInfo')
42       ->with('ajax')
43       ->willReturn([
44         '#header' => TRUE,
45         '#commands' => [],
46         '#error' => NULL,
47       ]);
48     $this->ajaxRenderer = new TestAjaxRenderer($element_info_manager);
49
50     $this->renderer = $this->getMockBuilder('Drupal\Core\Render\Renderer')
51       ->disableOriginalConstructor()
52       ->setMethods(NULL)
53       ->getMock();
54     $container = new ContainerBuilder();
55     $container->set('renderer', $this->renderer);
56     \Drupal::setContainer($container);
57   }
58
59   /**
60    * Tests the content method.
61    *
62    * @covers ::renderResponse
63    */
64   public function testRenderWithFragmentObject() {
65     $main_content = ['#markup' => 'example content'];
66     $request = new Request();
67     $route_match = $this->getMock('Drupal\Core\Routing\RouteMatchInterface');
68     /** @var \Drupal\Core\Ajax\AjaxResponse $result */
69     $result = $this->ajaxRenderer->renderResponse($main_content, $request, $route_match);
70
71     $this->assertInstanceOf('Drupal\Core\Ajax\AjaxResponse', $result);
72
73     $commands = $result->getCommands();
74     $this->assertEquals('insert', $commands[0]['command']);
75     $this->assertEquals('example content', $commands[0]['data']);
76
77     $this->assertEquals('insert', $commands[1]['command']);
78     $this->assertEquals('status_messages', $commands[1]['data']);
79   }
80
81 }
82
83 class TestAjaxRenderer extends AjaxRenderer {
84
85   /**
86    * {@inheritdoc}
87    */
88   protected function drupalRenderRoot(&$elements, $is_root_call = FALSE) {
89     $elements += ['#attached' => []];
90     if (isset($elements['#markup'])) {
91       return $elements['#markup'];
92     }
93     elseif (isset($elements['#type'])) {
94       return $elements['#type'];
95     }
96     else {
97       return 'Markup';
98     }
99   }
100
101 }