Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / tests / Drupal / Tests / Core / Entity / EntityUrlTest.php
index cf0f93f87f3c7dcc95110f4933f1f608ea9a31ad..335bf20a8da22d6109993e03f1b705d03b621597 100644 (file)
@@ -2,14 +2,18 @@
 
 namespace Drupal\Tests\Core\Entity;
 
+use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Entity\EntityMalformedException;
 use Drupal\Core\Entity\EntityTypeBundleInfoInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Entity\Exception\UndefinedLinkTemplateException;
 use Drupal\Core\Entity\RevisionableInterface;
+use Drupal\Core\GeneratedUrl;
+use Drupal\Core\Routing\UrlGeneratorInterface;
 use Drupal\Core\Url;
 use Drupal\Tests\UnitTestCase;
+use Symfony\Component\Routing\Exception\MissingMandatoryParametersException;
 
 /**
  * Tests URL handling of the \Drupal\Core\Entity\Entity class.
@@ -496,6 +500,38 @@ class EntityUrlTest extends UnitTestCase {
     return $test_cases;
   }
 
+  /**
+   * Tests the uriRelationships() method.
+   *
+   * @covers ::uriRelationships
+   */
+  public function testUriRelationships() {
+    $entity = $this->getEntity(Entity::class, ['id' => $this->entityId]);
+
+    $container_builder = new ContainerBuilder();
+    $url_generator = $this->createMock(UrlGeneratorInterface::class);
+    $container_builder->set('url_generator', $url_generator);
+    \Drupal::setContainer($container_builder);
+
+    // Test route with no mandatory parameters.
+    $this->registerLinkTemplate('canonical');
+    $route_name_0 = 'entity.' . $this->entityTypeId . '.canonical';
+    $url_generator->expects($this->at(0))
+      ->method('generateFromRoute')
+      ->with($route_name_0)
+      ->willReturn((new GeneratedUrl())->setGeneratedUrl('/entity_test'));
+    $this->assertEquals(['canonical'], $entity->uriRelationships());
+
+    // Test route with non-default mandatory parameters.
+    $this->registerLinkTemplate('{non_default_parameter}');
+    $route_name_1 = 'entity.' . $this->entityTypeId . '.{non_default_parameter}';
+    $url_generator->expects($this->at(0))
+      ->method('generateFromRoute')
+      ->with($route_name_1)
+      ->willThrowException(new MissingMandatoryParametersException());
+    $this->assertEquals([], $entity->uriRelationships());
+  }
+
   /**
    * Returns a mock entity for testing.
    *