Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / serialization / tests / src / Unit / Normalizer / ContentEntityNormalizerTest.php
index 4beecf420dbb8a7a156eda4cbe3b468fb268fc5d..e5d02fae74d87bb5a0833d8c9a2fb4e5b954ba0c 100644 (file)
@@ -2,6 +2,9 @@
 
 namespace Drupal\Tests\serialization\Unit\Normalizer;
 
+use Drupal\Core\Session\AccountInterface;
+use Drupal\Core\TypedData\ComplexDataInterface;
+use Drupal\Core\TypedData\DataDefinitionInterface;
 use Drupal\serialization\Normalizer\ContentEntityNormalizer;
 use Drupal\Tests\UnitTestCase;
 
@@ -67,16 +70,20 @@ class ContentEntityNormalizerTest extends UnitTestCase {
       ->will($this->returnValue('test'));
 
     $definitions = [
-      'field_1' => $this->createMockFieldListItem(),
-      'field_2' => $this->createMockFieldListItem(FALSE),
+      'field_accessible_external' => $this->createMockFieldListItem(TRUE, FALSE),
+      'field_non-accessible_external' => $this->createMockFieldListItem(FALSE, FALSE),
+      'field_accessible_internal' => $this->createMockFieldListItem(TRUE, TRUE),
+      'field_non-accessible_internal' => $this->createMockFieldListItem(FALSE, TRUE),
     ];
     $content_entity_mock = $this->createMockForContentEntity($definitions);
 
     $normalized = $this->contentEntityNormalizer->normalize($content_entity_mock, 'test_format');
 
-    $this->assertArrayHasKey('field_1', $normalized);
-    $this->assertEquals('test', $normalized['field_1']);
-    $this->assertArrayNotHasKey('field_2', $normalized);
+    $this->assertArrayHasKey('field_accessible_external', $normalized);
+    $this->assertEquals('test', $normalized['field_accessible_external']);
+    $this->assertArrayNotHasKey('field_non-accessible_external', $normalized);
+    $this->assertArrayNotHasKey('field_accessible_internal', $normalized);
+    $this->assertArrayNotHasKey('field_non-accessible_internal', $normalized);
   }
 
   /**
@@ -99,8 +106,8 @@ class ContentEntityNormalizerTest extends UnitTestCase {
     // The mock account should get passed directly into the access() method on
     // field items from $context['account'].
     $definitions = [
-      'field_1' => $this->createMockFieldListItem(TRUE, $mock_account),
-      'field_2' => $this->createMockFieldListItem(FALSE, $mock_account),
+      'field_1' => $this->createMockFieldListItem(TRUE, FALSE, $mock_account),
+      'field_2' => $this->createMockFieldListItem(FALSE, FALSE, $mock_account),
     ];
     $content_entity_mock = $this->createMockForContentEntity($definitions);
 
@@ -121,11 +128,15 @@ class ContentEntityNormalizerTest extends UnitTestCase {
   public function createMockForContentEntity($definitions) {
     $content_entity_mock = $this->getMockBuilder('Drupal\Core\Entity\ContentEntityBase')
       ->disableOriginalConstructor()
-      ->setMethods(['getFields'])
+      ->setMethods(['getTypedData'])
       ->getMockForAbstractClass();
-    $content_entity_mock->expects($this->once())
-      ->method('getFields')
-      ->will($this->returnValue($definitions));
+    $typed_data = $this->prophesize(ComplexDataInterface::class);
+    $typed_data->getProperties(TRUE)
+      ->willReturn($definitions)
+      ->shouldBeCalled();
+    $content_entity_mock->expects($this->any())
+      ->method('getTypedData')
+      ->will($this->returnValue($typed_data->reveal()));
 
     return $content_entity_mock;
   }
@@ -134,16 +145,26 @@ class ContentEntityNormalizerTest extends UnitTestCase {
    * Creates a mock field list item.
    *
    * @param bool $access
+   * @param bool $internal
+   * @param \Drupal\Core\Session\AccountInterface $user_context
    *
    * @return \Drupal\Core\Field\FieldItemListInterface|\PHPUnit_Framework_MockObject_MockObject
    */
-  protected function createMockFieldListItem($access = TRUE, $user_context = NULL) {
+  protected function createMockFieldListItem($access, $internal, AccountInterface $user_context = NULL) {
+    $data_definition = $this->prophesize(DataDefinitionInterface::class);
     $mock = $this->getMock('Drupal\Core\Field\FieldItemListInterface');
     $mock->expects($this->once())
-      ->method('access')
-      ->with('view', $user_context)
-      ->will($this->returnValue($access));
-
+      ->method('getDataDefinition')
+      ->will($this->returnValue($data_definition->reveal()));
+    $data_definition->isInternal()
+      ->willReturn($internal)
+      ->shouldBeCalled();
+    if (!$internal) {
+      $mock->expects($this->once())
+        ->method('access')
+        ->with('view', $user_context)
+        ->will($this->returnValue($access));
+    }
     return $mock;
   }