-
Notifications
You must be signed in to change notification settings - Fork 118
Expand file tree
/
Copy pathUiPageTest.php
More file actions
165 lines (126 loc) · 4.95 KB
/
UiPageTest.php
File metadata and controls
165 lines (126 loc) · 4.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?php
namespace Drupal\Tests\rules\Functional;
/**
* Tests that the Rules UI pages are reachable.
*
* @group rules_ui
*/
class UiPageTest extends RulesBrowserTestBase {
/**
* Modules to enable.
*
* @var array
*/
public static $modules = ['rules'];
/**
* We use the minimal profile because we want to test local action links.
*
* @var string
*/
protected $profile = 'minimal';
/**
* Tests that the reaction rule listing page works.
*/
public function testReactionRulePage() {
$account = $this->drupalCreateUser(['administer rules']);
$this->drupalLogin($account);
$this->drupalGet('admin/config/workflow/rules');
$this->assertSession()->statusCodeEquals(200);
// Test that there is an empty reaction rule listing.
$this->assertSession()->pageTextContains('There is no Reaction Rule yet.');
}
/**
* Tests that creating a reaction rule works.
*/
public function testCreateReactionRule() {
$account = $this->drupalCreateUser(['administer rules']);
$this->drupalLogin($account);
$this->drupalGet('admin/config/workflow/rules');
$this->clickLink('Add reaction rule');
$this->fillField('Label', 'Test rule');
$this->fillField('Machine-readable name', 'test_rule');
$this->fillField('React on event', 'rules_entity_insert:node');
$this->pressButton('Save');
$this->assertSession()->statusCodeEquals(200);
$this->assertSession()->pageTextContains('Reaction rule Test rule has been created.');
$this->clickLink('Add condition');
$this->fillField('Condition', 'rules_node_is_promoted');
$this->pressButton('Continue');
$this->fillField('context[node][setting]', '1');
$this->pressButton('Save');
$this->assertSession()->statusCodeEquals(200);
$this->assertSession()->pageTextContains('You have unsaved changes.');
$this->pressButton('Save');
$this->assertSession()->pageTextContains('Reaction rule Test rule has been updated. ');
}
/**
* Tests that cancelling an expression from a rule works.
*/
public function testCancelExpressionInRule() {
// Setup a rule with one condition.
$this->testCreateReactionRule();
$this->clickLink('Add condition');
$this->fillField('Condition', 'rules_node_is_promoted');
$this->pressButton('Continue');
$this->fillField('context[node][setting]', '1');
$this->pressButton('Save');
$this->assertSession()->pageTextContains('You have unsaved changes.');
// Edit and cancel.
$this->pressButton('Cancel');
$this->assertSession()->pageTextContains('Canceled.');
// Make sure that we are back at the overview listing page.
$this->assertEquals(1, preg_match('#/admin/config/workflow/rules$#', $this->getSession()->getCurrentUrl()));
}
/**
* Tests that enabling and disabling a rule works.
*/
public function testRuleStatusOperations() {
// Setup an active rule.
$this->testCreateReactionRule();
$this->drupalGet('admin/config/workflow/rules');
// Test disabling.
$this->clickLink('Disable');
$this->assertSession()->pageTextContains('The Test rule rule has been disabled.');
// Test enabling.
$this->clickLink('Enable');
$this->assertSession()->pageTextContains('The Test rule rule has been enabled.');
}
/**
* Tests that deleting an expression from a rule works.
*/
public function testDeleteExpressionInRule() {
// Setup a rule with one condition.
$this->testCreateReactionRule();
$this->clickLink('Delete');
$this->assertSession()->pageTextContains('Are you sure you want to delete Condition: Node is promoted from Test rule?');
$this->pressButton('Delete');
$this->assertSession()->pageTextContains('You have unsaved changes.');
$this->pressButton('Save');
$this->assertSession()->pageTextContains('Reaction rule Test rule has been updated. ');
}
/**
* Tests that an action with a multiple context can be confugured.
*/
public function testMultipleContextAction() {
$account = $this->drupalCreateUser(['administer rules']);
$this->drupalLogin($account);
$this->drupalGet('admin/config/workflow/rules');
$this->clickLink('Add reaction rule');
$this->fillField('Label', 'Test rule');
$this->fillField('Machine-readable name', 'test_rule');
$this->fillField('React on event', 'rules_entity_insert:node');
$this->pressButton('Save');
$this->clickLink('Add action');
$this->fillField('Action', 'rules_send_email');
$this->pressButton('Continue');
// Push the data selection switch 2 times to make sure that also works and
// does not throw PHP notices.
$this->pressButton('Switch to data selection');
$this->pressButton('Switch to data selection');
$this->fillField('context[to][setting]', 'klausi@example.com');
$this->fillField('context[subject][setting]', 'subject');
$this->fillField('context[message][setting]', 'message');
$this->pressButton('Save');
$this->assertSession()->statusCodeEquals(200);
}
}