comparison core/modules/tour/tests/src/Functional/TourHelpPageTest.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\tour\Functional;
4
5 use Drupal\Tests\BrowserTestBase;
6
7 /**
8 * Verifies help page display of tours.
9 *
10 * @group help
11 */
12 class TourHelpPageTest extends BrowserTestBase {
13
14 /**
15 * Modules to enable, including some providing tours.
16 *
17 * @var array
18 */
19 public static $modules = ['help', 'tour', 'locale', 'language'];
20
21 /**
22 * User that can access tours and help.
23 *
24 * @var \Drupal\user\UserInterface
25 */
26 protected $tourUser;
27
28 /**
29 * A user who can access help but not tours.
30 *
31 * @var \Drupal\user\UserInterface
32 */
33 protected $noTourUser;
34
35 /**
36 * {@inheritdoc}
37 */
38 protected function setUp() {
39 parent::setUp();
40
41 // Create users. For the Tour user, include permissions for the language
42 // tours' parent pages, but not the translation tour's parent page. See
43 // self:getTourList().
44 $this->tourUser = $this->drupalCreateUser(['access administration pages', 'access tour', 'administer languages']);
45 $this->noTourUser = $this->drupalCreateUser(['access administration pages']);
46 }
47
48 /**
49 * Logs in users, tests help pages.
50 */
51 public function testHelp() {
52 $this->drupalLogin($this->tourUser);
53 $this->verifyHelp();
54
55 $this->drupalLogin($this->noTourUser);
56 $this->verifyHelp(FALSE);
57 }
58
59 /**
60 * Verifies the logged in user has access to the help properly.
61 *
62 * @param bool $tours_ok
63 * (optional) TRUE (default) if the user should see tours, FALSE if not.
64 */
65 protected function verifyHelp($tours_ok = TRUE) {
66 $this->drupalGet('admin/help');
67
68 // All users should be able to see the module section.
69 $this->assertText('Module overviews are provided by modules');
70 foreach ($this->getModuleList() as $name) {
71 $this->assertLink($name);
72 }
73
74 // Some users should be able to see the tour section.
75 if ($tours_ok) {
76 $this->assertText('Tours guide you through workflows');
77 }
78 else {
79 $this->assertNoText('Tours guide you through workflows');
80 }
81
82 $titles = $this->getTourList();
83
84 // Test the titles that should be links.
85 foreach ($titles[0] as $title) {
86 if ($tours_ok) {
87 $this->assertLink($title);
88 }
89 else {
90 $this->assertNoLink($title);
91 // Just test the first item in the list of links that should not
92 // be there, because the second matches the name of a module that is
93 // in the Module overviews section, so the link will be there and
94 // this test will fail. Testing one should be sufficient to verify
95 // the page is working correctly.
96 break;
97 }
98 }
99
100 // Test the titles that should not be links.
101 foreach ($titles[1] as $title) {
102 if ($tours_ok) {
103 $this->assertText($title);
104 $this->assertSession()->linkNotExistsExact($title);
105 }
106 else {
107 $this->assertNoText($title);
108 // Just test the first item in the list of text that should not
109 // be there, because the second matches part of the name of a module
110 // that is in the Module overviews section, so the text will be there
111 // and this test will fail. Testing one should be sufficient to verify
112 // the page is working correctly.
113 break;
114 }
115 }
116 }
117
118 /**
119 * Gets a list of modules to test for hook_help() pages.
120 *
121 * @return array
122 * A list of module names to test.
123 */
124 protected function getModuleList() {
125 return ['Help', 'Tour'];
126 }
127
128 /**
129 * Gets a list of tours to test.
130 *
131 * @return array
132 * A list of tour titles to test. The first array element is a list of tours
133 * with links, and the second is a list of tours without links. Assumes
134 * that the user being tested has 'administer languages' permission but
135 * not 'translate interface'.
136 */
137 protected function getTourList() {
138 return [['Adding languages', 'Language'], ['Editing languages', 'Translation']];
139 }
140
141 }