3 namespace Drupal\entity_reference_revisions\Tests;
5 use Drupal\field_ui\Tests\FieldUiTestTrait;
6 use Drupal\simpletest\WebTestBase;
9 * Tests the entity_reference_revisions diff plugin.
11 * @group entity_reference_revisions
15 class EntityReferenceRevisionsDiffTest extends WebTestBase {
18 use EntityReferenceRevisionsCoreVersionUiTestTrait;
25 public static $modules = [
29 'entity_reference_revisions',
37 protected function setUp() {
39 // Create article content type.
40 $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']);
42 // Disable visual inline diff.
43 $config = $this->config('diff.settings')
44 ->set('general_settings.layout_plugins.visual_inline.enabled', FALSE);
47 $admin_user = $this->drupalCreateUser([
48 'administer site configuration',
50 'administer content types',
51 'administer node fields',
52 'administer node display',
53 'administer node form display',
55 'edit any article content',
57 $this->drupalLogin($admin_user);
58 $this->drupalPlaceBlock('system_breadcrumb_block');
62 * Test for diff plugin of ERR.
64 * Tests that the diff is displayed when changes are made in an ERR field.
66 public function testEntityReferenceRevisionsDiff() {
67 // Add an entity_reference_revisions field.
68 static::fieldUIAddNewField('admin/structure/types/manage/article', 'err_field', 'err_field', 'entity_reference_revisions', [
69 'settings[target_type]' => 'node',
70 'cardinality' => '-1',
72 'settings[handler_settings][target_bundles][article]' => TRUE,
75 // Create first referenced node.
76 $title_node_1 = 'referenced_node_1';
78 'title[0][value]' => $title_node_1,
79 'body[0][value]' => 'body_node_1',
81 $this->drupalPostNodeForm('node/add/article', $edit, t('Save and publish'));
83 // Create second referenced node.
84 $title_node_2 = 'referenced_node_2';
86 'title[0][value]' => $title_node_2,
87 'body[0][value]' => 'body_node_2',
89 $this->drupalPostNodeForm('node/add/article', $edit, t('Save and publish'));
91 // Create referencing node.
92 $title = 'referencing_node';
93 $node = $this->drupalGetNodeByTitle($title_node_1);
95 'title[0][value]' => $title,
96 'field_err_field[0][target_id]' => $title_node_1 . ' (' . $node->id() . ')',
98 $this->drupalPostNodeForm('node/add/article', $edit, t('Save and publish'));
100 // Check the plugin is set.
101 $this->drupalGet('admin/config/content/diff/fields');
102 $this->drupalPostForm(NULL, ['fields[node.field_err_field][plugin][type]' => 'entity_reference_revisions_field_diff_builder'], t('Save'));
104 // Update the referenced node of the err field and create a new revision.
105 $node = $this->drupalGetNodeByTitle($title);
106 $referenced_node_new = $this->drupalGetNodeByTitle($title_node_2);
108 'field_err_field[0][target_id]' => $title_node_2 . ' (' . $referenced_node_new->id() . ')',
111 $this->drupalPostNodeForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
113 // Compare the revisions of the referencing node.
114 $this->drupalPostForm('node/' . $node->id() . '/revisions', [], t('Compare selected revisions'));
116 // Assert the field changes.
117 $this->assertRaw('class="diff-context diff-deletedline">' . $title_node_1);
118 $this->assertRaw('class="diff-context diff-addedline">' . $title_node_2);