5 * Contains \Drupal\Tests\Core\Controller\AjaxRendererTest.
8 namespace Drupal\Tests\Core\Controller;
10 use Drupal\Core\Render\MainContent\AjaxRenderer;
11 use Drupal\Tests\UnitTestCase;
12 use Symfony\Component\HttpFoundation\Request;
13 use Symfony\Component\DependencyInjection\ContainerBuilder;
16 * @coversDefaultClass \Drupal\Core\Render\MainContent\AjaxRenderer
19 class AjaxRendererTest extends UnitTestCase {
22 * The tested ajax controller.
24 * @var \Drupal\Core\Render\MainContent\AjaxRenderer
26 protected $ajaxRenderer;
31 * @var \Drupal\Core\Render\RendererInterface|\PHPUnit_Framework_MockObject_MockObject
38 protected function setUp() {
39 $element_info_manager = $this->getMock('Drupal\Core\Render\ElementInfoManagerInterface');
40 $element_info_manager->expects($this->any())
48 $this->ajaxRenderer = new TestAjaxRenderer($element_info_manager);
50 $this->renderer = $this->getMockBuilder('Drupal\Core\Render\Renderer')
51 ->disableOriginalConstructor()
54 $container = new ContainerBuilder();
55 $container->set('renderer', $this->renderer);
56 \Drupal::setContainer($container);
60 * Tests the content method.
62 * @covers ::renderResponse
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);
71 $this->assertInstanceOf('Drupal\Core\Ajax\AjaxResponse', $result);
73 $commands = $result->getCommands();
74 $this->assertEquals('insert', $commands[0]['command']);
75 $this->assertEquals('example content', $commands[0]['data']);
77 $this->assertEquals('insert', $commands[1]['command']);
78 $this->assertEquals('status_messages', $commands[1]['data']);
83 class TestAjaxRenderer extends AjaxRenderer {
88 protected function drupalRenderRoot(&$elements, $is_root_call = FALSE) {
89 $elements += ['#attached' => []];
90 if (isset($elements['#markup'])) {
91 return $elements['#markup'];
93 elseif (isset($elements['#type'])) {
94 return $elements['#type'];