comparison core/modules/node/tests/src/Kernel/NodeValidationTest.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4c8ae668cc8c
1 <?php
2
3 namespace Drupal\Tests\node\Kernel;
4
5 use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
6 use Drupal\node\Entity\Node;
7 use Drupal\node\Entity\NodeType;
8
9 /**
10 * Tests node validation constraints.
11 *
12 * @group node
13 */
14 class NodeValidationTest extends EntityKernelTestBase {
15
16 /**
17 * Modules to enable.
18 *
19 * @var array
20 */
21 public static $modules = ['node'];
22
23 /**
24 * Set the default field storage backend for fields created during tests.
25 */
26 protected function setUp() {
27 parent::setUp();
28
29 // Create a node type for testing.
30 $type = NodeType::create(['type' => 'page', 'name' => 'page']);
31 $type->save();
32 }
33
34 /**
35 * Tests the node validation constraints.
36 */
37 public function testValidation() {
38 $this->createUser();
39 $node = Node::create(['type' => 'page', 'title' => 'test', 'uid' => 1]);
40 $violations = $node->validate();
41 $this->assertEqual(count($violations), 0, 'No violations when validating a default node.');
42
43 $node->set('title', $this->randomString(256));
44 $violations = $node->validate();
45 $this->assertEqual(count($violations), 1, 'Violation found when title is too long.');
46 $this->assertEqual($violations[0]->getPropertyPath(), 'title.0.value');
47 $this->assertEqual($violations[0]->getMessage(), '<em class="placeholder">Title</em>: may not be longer than 255 characters.');
48
49 $node->set('title', NULL);
50 $violations = $node->validate();
51 $this->assertEqual(count($violations), 1, 'Violation found when title is not set.');
52 $this->assertEqual($violations[0]->getPropertyPath(), 'title');
53 $this->assertEqual($violations[0]->getMessage(), 'This value should not be null.');
54
55 $node->set('title', '');
56 $violations = $node->validate();
57 $this->assertEqual(count($violations), 1, 'Violation found when title is set to an empty string.');
58 $this->assertEqual($violations[0]->getPropertyPath(), 'title');
59
60 // Make the title valid again.
61 $node->set('title', $this->randomString());
62 // Save the node so that it gets an ID and a changed date.
63 $node->save();
64 // Set the changed date to something in the far past.
65 $node->set('changed', 433918800);
66 $violations = $node->validate();
67 $this->assertEqual(count($violations), 1, 'Violation found when changed date is before the last changed date.');
68 $this->assertEqual($violations[0]->getPropertyPath(), '');
69 $this->assertEqual($violations[0]->getMessage(), 'The content has either been modified by another user, or you have already submitted modifications. As a result, your changes cannot be saved.');
70 }
71
72 }