Mercurial > hg > isophonics-drupal-site
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 } |