Version 1
[yaffs-website] / web / core / modules / node / tests / src / Kernel / NodeOwnerTest.php
diff --git a/web/core/modules/node/tests/src/Kernel/NodeOwnerTest.php b/web/core/modules/node/tests/src/Kernel/NodeOwnerTest.php
new file mode 100644 (file)
index 0000000..c12f311
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+namespace Drupal\Tests\node\Kernel;
+
+use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
+use Drupal\language\Entity\ConfigurableLanguage;
+use Drupal\node\Entity\Node;
+use Drupal\node\Entity\NodeType;
+
+/**
+ * Tests node owner functionality.
+ *
+ * @group Entity
+ */
+class NodeOwnerTest extends EntityKernelTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['node', 'language'];
+
+  protected function setUp() {
+    parent::setUp();
+
+    // Create the node bundles required for testing.
+    $type = NodeType::create([
+      'type' => 'page',
+      'name' => 'page',
+    ]);
+    $type->save();
+
+    // Enable two additional languages.
+    ConfigurableLanguage::createFromLangcode('de')->save();
+    ConfigurableLanguage::createFromLangcode('it')->save();
+
+    $this->installSchema('node', 'node_access');
+  }
+
+  /**
+   * Tests node owner functionality.
+   */
+  public function testOwner() {
+    $user = $this->createUser();
+
+    $container = \Drupal::getContainer();
+    $container->get('current_user')->setAccount($user);
+
+    // Create a test node.
+    $english = Node::create([
+      'type' => 'page',
+      'title' => $this->randomMachineName(),
+      'language' => 'en',
+    ]);
+    $english->save();
+
+    $this->assertEqual($user->id(), $english->getOwnerId());
+
+    $german = $english->addTranslation('de');
+    $german->title = $this->randomString();
+    $italian = $english->addTranslation('it');
+    $italian->title = $this->randomString();
+
+    // Node::preSave() sets owner to anonymous user if owner is nor set.
+    $english->set('uid', ['target_id' => NULL]);
+    $german->set('uid', ['target_id' => NULL]);
+    $italian->set('uid', ['target_id' => NULL]);
+
+    // Entity::save() saves all translations!
+    $italian->save();
+
+    $this->assertEqual(0, $english->getOwnerId());
+    $this->assertEqual(0, $german->getOwnerId());
+    $this->assertEqual(0, $italian->getOwnerId());
+  }
+
+}