3 namespace Drupal\Tests\hal\Kernel;
6 use Drupal\field\Entity\FieldConfig;
7 use Drupal\field\Entity\FieldStorageConfig;
8 use Drupal\KernelTests\KernelTestBase;
9 use Drupal\node\Entity\NodeType;
12 * @coversDefaultClass \Drupal\hal\LinkManager\LinkManager
15 class HalLinkManagerTest extends KernelTestBase {
20 public static $modules = [ 'hal', 'hal_test', 'serialization', 'system', 'node', 'user', 'field'];
25 protected function setUp() {
28 $this->installEntitySchema('node');
33 FieldStorageConfig::create([
34 'entity_type' => 'node',
35 'type' => 'entity_reference',
36 'field_name' => 'field_ref',
39 'entity_type' => 'node',
41 'field_name' => 'field_ref',
44 \Drupal::service('router.builder')->rebuild();
48 * @covers ::getTypeUri
50 public function testGetTypeUri() {
51 /* @var \Drupal\rest\LinkManager\TypeLinkManagerInterface $type_manager */
52 $type_manager = \Drupal::service('hal.link_manager.type');
53 $base = Url::fromRoute('<front>', [], ['absolute' => TRUE])->toString();
54 $link = $type_manager->getTypeUri('node', 'page');
55 $this->assertSame($link, $base . 'rest/type/node/page');
56 // Now with optional context.
57 $link = $type_manager->getTypeUri('node', 'page', ['hal_test' => TRUE]);
58 $this->assertSame($link, 'hal_test_type');
59 // Test BC: hook_rest_type_uri_alter().
60 $link = $type_manager->getTypeUri('node', 'page', ['rest_test' => TRUE]);
61 $this->assertSame($link, 'rest_test_type');
65 * @covers ::getRelationUri
67 public function testGetRelationUri() {
68 /* @var \Drupal\rest\LinkManager\RelationLinkManagerInterface $relation_manager */
69 $relation_manager = \Drupal::service('hal.link_manager.relation');
70 $base = Url::fromRoute('<front>', [], ['absolute' => TRUE])->toString();
71 $link = $relation_manager->getRelationUri('node', 'page', 'field_ref');
72 $this->assertSame($link, $base . 'rest/relation/node/page/field_ref');
73 // Now with optional context.
74 $link = $relation_manager->getRelationUri('node', 'page', 'foobar', ['hal_test' => TRUE]);
75 $this->assertSame($link, 'hal_test_relation');
76 // Test BC: hook_rest_relation_uri_alter().
77 $link = $relation_manager->getRelationUri('node', 'page', 'foobar', ['rest_test' => TRUE]);
78 $this->assertSame($link, 'rest_test_relation');
82 * @covers ::getRelationInternalIds
84 public function testGetRelationInternalIds() {
85 /* @var \Drupal\rest\LinkManager\RelationLinkManagerInterface $relation_manager */
86 $relation_manager = \Drupal::service('hal.link_manager.relation');
87 $link = $relation_manager->getRelationUri('node', 'page', 'field_ref');
88 $internal_ids = $relation_manager->getRelationInternalIds($link);
91 'entity_type_id' => 'node',
92 'entity_type' => \Drupal::entityTypeManager()->getDefinition('node'),
94 'field_name' => 'field_ref'
99 * @covers ::setLinkDomain
101 public function testHalLinkManagersSetLinkDomain() {
102 /* @var \Drupal\rest\LinkManager\LinkManager $link_manager */
103 $link_manager = \Drupal::service('hal.link_manager');
104 $link_manager->setLinkDomain('http://example.com/');
105 $link = $link_manager->getTypeUri('node', 'page');
106 $this->assertEqual($link, 'http://example.com/rest/type/node/page');
107 $link = $link_manager->getRelationUri('node', 'page', 'field_ref');
108 $this->assertEqual($link, 'http://example.com/rest/relation/node/page/field_ref');