Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\node\Kernel;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
|
Chris@0
|
6 use Drupal\language\Entity\ConfigurableLanguage;
|
Chris@0
|
7 use Drupal\node\Entity\Node;
|
Chris@0
|
8 use Drupal\node\Entity\NodeType;
|
Chris@0
|
9
|
Chris@0
|
10 /**
|
Chris@0
|
11 * Tests node owner functionality.
|
Chris@0
|
12 *
|
Chris@0
|
13 * @group Entity
|
Chris@0
|
14 */
|
Chris@0
|
15 class NodeOwnerTest extends EntityKernelTestBase {
|
Chris@0
|
16
|
Chris@0
|
17 /**
|
Chris@0
|
18 * Modules to enable.
|
Chris@0
|
19 *
|
Chris@0
|
20 * @var array
|
Chris@0
|
21 */
|
Chris@0
|
22 public static $modules = ['node', 'language'];
|
Chris@0
|
23
|
Chris@0
|
24 protected function setUp() {
|
Chris@0
|
25 parent::setUp();
|
Chris@0
|
26
|
Chris@0
|
27 // Create the node bundles required for testing.
|
Chris@0
|
28 $type = NodeType::create([
|
Chris@0
|
29 'type' => 'page',
|
Chris@0
|
30 'name' => 'page',
|
Chris@0
|
31 ]);
|
Chris@0
|
32 $type->save();
|
Chris@0
|
33
|
Chris@0
|
34 // Enable two additional languages.
|
Chris@0
|
35 ConfigurableLanguage::createFromLangcode('de')->save();
|
Chris@0
|
36 ConfigurableLanguage::createFromLangcode('it')->save();
|
Chris@0
|
37
|
Chris@0
|
38 $this->installSchema('node', 'node_access');
|
Chris@0
|
39 }
|
Chris@0
|
40
|
Chris@0
|
41 /**
|
Chris@0
|
42 * Tests node owner functionality.
|
Chris@0
|
43 */
|
Chris@0
|
44 public function testOwner() {
|
Chris@0
|
45 $user = $this->createUser();
|
Chris@0
|
46
|
Chris@0
|
47 $container = \Drupal::getContainer();
|
Chris@0
|
48 $container->get('current_user')->setAccount($user);
|
Chris@0
|
49
|
Chris@0
|
50 // Create a test node.
|
Chris@0
|
51 $english = Node::create([
|
Chris@0
|
52 'type' => 'page',
|
Chris@0
|
53 'title' => $this->randomMachineName(),
|
Chris@0
|
54 'language' => 'en',
|
Chris@0
|
55 ]);
|
Chris@0
|
56 $english->save();
|
Chris@0
|
57
|
Chris@0
|
58 $this->assertEqual($user->id(), $english->getOwnerId());
|
Chris@0
|
59
|
Chris@0
|
60 $german = $english->addTranslation('de');
|
Chris@0
|
61 $german->title = $this->randomString();
|
Chris@0
|
62 $italian = $english->addTranslation('it');
|
Chris@0
|
63 $italian->title = $this->randomString();
|
Chris@0
|
64
|
Chris@0
|
65 // Node::preSave() sets owner to anonymous user if owner is nor set.
|
Chris@0
|
66 $english->set('uid', ['target_id' => NULL]);
|
Chris@0
|
67 $german->set('uid', ['target_id' => NULL]);
|
Chris@0
|
68 $italian->set('uid', ['target_id' => NULL]);
|
Chris@0
|
69
|
Chris@0
|
70 // Entity::save() saves all translations!
|
Chris@0
|
71 $italian->save();
|
Chris@0
|
72
|
Chris@0
|
73 $this->assertEqual(0, $english->getOwnerId());
|
Chris@0
|
74 $this->assertEqual(0, $german->getOwnerId());
|
Chris@0
|
75 $this->assertEqual(0, $italian->getOwnerId());
|
Chris@0
|
76 }
|
Chris@0
|
77
|
Chris@0
|
78 }
|