3 namespace Drupal\diff\Tests;
6 use Drupal\node\Entity\Node;
7 use Drupal\node\Entity\NodeType;
8 use Drupal\views\Tests\ViewTestBase;
11 * Tests the diff views integration.
13 * Loads optional config of views.
17 class DiffViewsTest extends ViewTestBase {
22 public static $modules = ['node', 'diff', 'user', 'views', 'diff_test'];
25 * Tests the behavior of a view that uses the diff_from and diff_to fields.
27 public function testDiffView() {
28 // Make sure HTML Diff is disabled.
29 $config = \Drupal::configFactory()->getEditable('diff.settings');
30 $config->set('general_settings.layout_plugins.visual_inline.enabled', FALSE)->save();
32 $node_type = NodeType::create([
37 $node = Node::create([
39 'title' => 'Test article: giraffe',
42 $revision1 = $node->getRevisionId();
44 $node->setNewRevision(TRUE);
45 $node->setTitle('Test article: llama');
47 $revision2 = $node->getRevisionId();
49 $this->drupalGet("node/{$node->id()}/diff-views");
50 $this->assertResponse(403);
52 $user = $this->createUser(['view all revisions']);
53 $this->drupalLogin($user);
55 $this->drupalGet("node/{$node->id()}/diff-views");
56 $this->assertResponse(200);
58 $from_first = (string) $this->cssSelect('#edit-diff-from--3')[0]->attributes()['value'];
59 $to_second = (string) $this->cssSelect('#edit-diff-to--2')[0]->attributes()['value'];
62 'diff_from' => $from_first,
63 'diff_to' => $to_second,
65 $this->drupalPostForm(NULL, $edit, t('Compare'));
66 $expected_url = Url::fromRoute(
67 'diff.revisions_diff',
70 'node' => $node->id(),
71 'left_revision' => $revision1,
72 'right_revision' => $revision2,
73 'filter' => 'split_fields',
75 // Additional route options.
78 'destination' => Url::fromUri("internal:/node/{$node->id()}/diff-views")->toString(),
82 $this->assertUrl($expected_url);
83 $this->assertRaw('<td class="diff-context diff-deletedline">Test article: <span class="diffchange">giraffe</span></td>');
84 $this->assertRaw('<td class="diff-context diff-addedline">Test article: <span class="diffchange">llama</span></td>');