Security update for Core, with self-updated composer
[yaffs-website] / web / modules / contrib / entity_reference_revisions / src / Tests / EntityReferenceRevisionsDiffTest.php
1 <?php
2
3 namespace Drupal\entity_reference_revisions\Tests;
4
5 use Drupal\field_ui\Tests\FieldUiTestTrait;
6 use Drupal\simpletest\WebTestBase;
7
8 /**
9  * Tests the entity_reference_revisions diff plugin.
10  *
11  * @group entity_reference_revisions
12  *
13  * @dependencies diff
14  */
15 class EntityReferenceRevisionsDiffTest extends WebTestBase {
16
17   use FieldUiTestTrait;
18   /**
19    * Modules to enable.
20    *
21    * @var array
22    */
23   public static $modules = [
24     'block_content',
25     'node',
26     'field',
27     'entity_reference_revisions',
28     'field_ui',
29     'diff',
30   ];
31
32   /**
33    * {@inheritdoc}
34    */
35   protected function setUp() {
36     parent::setUp();
37     // Create article content type.
38     $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']);
39
40     // Disable visual inline diff.
41     $config = $this->config('diff.settings')
42       ->set('general_settings.layout_plugins.visual_inline.enabled', FALSE);
43     $config->save();
44
45     $admin_user = $this->drupalCreateUser([
46       'administer site configuration',
47       'administer nodes',
48       'administer content types',
49       'administer node fields',
50       'administer node display',
51       'administer node form display',
52       'view all revisions',
53       'edit any article content',
54     ]);
55     $this->drupalLogin($admin_user);
56     $this->drupalPlaceBlock('system_breadcrumb_block');
57   }
58
59   /**
60    * Test for diff plugin of ERR.
61    *
62    * Tests that the diff is displayed when changes are made in an ERR field.
63    */
64   public function testEntityReferenceRevisionsDiff() {
65     // Add an entity_reference_revisions field.
66     static::fieldUIAddNewField('admin/structure/types/manage/article', 'err_field', 'err_field', 'entity_reference_revisions', [
67       'settings[target_type]' => 'node',
68       'cardinality' => '-1',
69     ], [
70       'settings[handler_settings][target_bundles][article]' => TRUE,
71     ]);
72
73     // Create first referenced node.
74     $title_node_1 = 'referenced_node_1';
75     $edit = [
76       'title[0][value]' => $title_node_1,
77       'body[0][value]' => 'body_node_1',
78     ];
79     $this->drupalPostForm('node/add/article', $edit, t('Save and publish'));
80
81     // Create second referenced node.
82     $title_node_2 = 'referenced_node_2';
83     $edit = [
84       'title[0][value]' => $title_node_2,
85       'body[0][value]' => 'body_node_2',
86     ];
87     $this->drupalPostForm('node/add/article', $edit, t('Save and publish'));
88
89     // Create referencing node.
90     $title = 'referencing_node';
91     $node = $this->drupalGetNodeByTitle($title_node_1);
92     $edit = [
93       'title[0][value]' => $title,
94       'field_err_field[0][target_id]' => $title_node_1 . ' (' . $node->id() . ')',
95     ];
96     $this->drupalPostForm('node/add/article', $edit, t('Save and publish'));
97
98     // Check the plugin is set.
99     $this->drupalGet('admin/config/content/diff/fields');
100     $this->drupalPostForm(NULL, ['fields[node.field_err_field][plugin][type]' => 'entity_reference_revisions_field_diff_builder'], t('Save'));
101
102     // Update the referenced node of the err field and create a new revision.
103     $node = $this->drupalGetNodeByTitle($title);
104     $referenced_node_new = $this->drupalGetNodeByTitle($title_node_2);
105     $edit = [
106       'field_err_field[0][target_id]' => $title_node_2 . ' (' . $referenced_node_new->id() . ')',
107       'revision' => TRUE,
108     ];
109     $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
110
111     // Compare the revisions of the referencing node.
112     $this->drupalPostForm('node/' . $node->id() . '/revisions', [], t('Compare selected revisions'));
113
114     // Assert the field changes.
115     $this->assertRaw('class="diff-context diff-deletedline">' . $title_node_1);
116     $this->assertRaw('class="diff-context diff-addedline">' . $title_node_2);
117   }
118
119 }