diff --git a/core/includes/theme.inc b/core/includes/theme.inc index d367cbb..c9d2c54 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -22,6 +22,7 @@ use Drupal\Core\Page\Link; use Drupal\Core\Page\Metatag; +use Drupal\node\NodeInterface; /** * @defgroup content_flags Content markers @@ -2541,8 +2542,8 @@ function template_preprocess_html_page(&$variables) { } // If on an individual node page, add the node type to body classes. - if ($node = menu_get_object()) { - $variables['attributes']['class'][] = drupal_html_class('node-type-' . $node->type); + if (($node = menu_get_object()) && $node instanceof NodeInterface) { + $variables['attributes']['class'][] = drupal_html_class('node-type-' . $node->getType()); } // Add favicon. diff --git a/core/tests/Drupal/Tests/Core/Entity/Enhancer/EntityRouteEnhancerTest.php b/core/tests/Drupal/Tests/Core/Entity/Enhancer/EntityRouteEnhancerTest.php index f0a0a5e..e880af9 100644 --- a/core/tests/Drupal/Tests/Core/Entity/Enhancer/EntityRouteEnhancerTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/Enhancer/EntityRouteEnhancerTest.php @@ -34,12 +34,13 @@ public static function getInfo() { * @see \Drupal\Core\Entity\Enhancer\EntityRouteEnhancer::enhancer() */ public function testEnhancer() { - $form_controller = $this->getMockBuilder('Drupal\Core\Entity\HtmlEntityFormController') + $controller_resolver = $this->getMock('Drupal\Core\Controller\ControllerResolverInterface'); + $entity_manager = $this->getMockBuilder('Drupal\Core\Entity\EntityManager') ->disableOriginalConstructor() ->getMock(); - $route_enhancer = new EntityRouteEnhancer($form_controller); + $route_enhancer = new EntityRouteEnhancer($controller_resolver, $entity_manager); // Set a controller to ensure it is not overridden. $request = new Request(); @@ -47,30 +48,32 @@ public function testEnhancer() { $defaults['_controller'] = 'Drupal\Tests\Core\Controller\TestController::content'; $defaults['_entity_form'] = 'entity_test.default'; $new_defaults = $route_enhancer->enhance($defaults, $request); - $this->assertInstanceOf('\Closure', $new_defaults['_content']); + $this->assertTrue(is_callable($new_defaults['_content'])); + $this->assertInstanceOf('\Drupal\Core\Entity\HtmlEntityFormController', $new_defaults['_content'][0]); + $this->assertEquals($new_defaults['_content'][1], 'getContentResult'); $this->assertEquals($defaults['_controller'], $new_defaults['_controller'], '_controller got overridden.'); // Set _entity_form and ensure that the form controller is set. $defaults = array(); $defaults['_entity_form'] = 'entity_test.default'; - $defaults = $route_enhancer->enhance($defaults, $request); - $this->assertInstanceOf('\Closure', $new_defaults['_content']); + $new_defaults = $route_enhancer->enhance($defaults, $request); + $this->assertTrue(is_callable($new_defaults['_content'])); + $this->assertInstanceOf('\Drupal\Core\Entity\HtmlEntityFormController', $new_defaults['_content'][0]); + $this->assertEquals($new_defaults['_content'][1], 'getContentResult'); // Set _entity_list and ensure that the entity list controller is set. $defaults = array(); $defaults['_entity_list'] = 'entity_test.default'; - $defaults = $route_enhancer->enhance($defaults, $request); - $this->assertEquals('controller.page:content', $defaults['_controller']); - $this->assertEquals('\Drupal\Core\Entity\Controller\EntityListController::listing', $defaults['_content'], 'The entity list controller was not set.'); - $this->assertEquals('entity_test.default', $defaults['entity_type']); - $this->assertFalse(isset($defaults['_entity_list'])); + $new_defaults = $route_enhancer->enhance($defaults, $request); + $this->assertEquals('\Drupal\Core\Entity\Controller\EntityListController::listing', $new_defaults['_content'], 'The entity list controller was not set.'); + $this->assertEquals('entity_test.default', $new_defaults['entity_type']); + $this->assertFalse(isset($new_defaults['_entity_list'])); // Set _entity_view and ensure that the entity view controller is set. $defaults = array(); $defaults['_entity_view'] = 'entity_test.full'; $defaults['entity_test'] = 'Mock entity'; $defaults = $route_enhancer->enhance($defaults, $request); - $this->assertEquals('controller.page:content', $defaults['_controller']); $this->assertEquals('\Drupal\Core\Entity\Controller\EntityViewController::view', $defaults['_content'], 'The entity view controller was not set.'); $this->assertEquals($defaults['_entity'], 'Mock entity'); $this->assertEquals($defaults['view_mode'], 'full'); @@ -94,7 +97,6 @@ public function testEnhancer() { $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route; $defaults = $route_enhancer->enhance($defaults, $request); - $this->assertEquals('controller.page:content', $defaults['_controller']); $this->assertEquals('\Drupal\Core\Entity\Controller\EntityViewController::view', $defaults['_content'], 'The entity view controller was not set.'); $this->assertEquals($defaults['_entity'], 'Mock entity'); $this->assertEquals($defaults['view_mode'], 'full'); @@ -105,7 +107,6 @@ public function testEnhancer() { $defaults['_entity_view'] = 'entity_test'; $defaults['entity_test'] = 'Mock entity'; $defaults = $route_enhancer->enhance($defaults, $request); - $this->assertEquals('controller.page:content', $defaults['_controller']); $this->assertEquals('\Drupal\Core\Entity\Controller\EntityViewController::view', $defaults['_content'], 'The entity view controller was not set.'); $this->assertEquals($defaults['_entity'], 'Mock entity'); $this->assertTrue(empty($defaults['view_mode']));