RulesComponentListBuilderTest.php
Namespace
Drupal\Tests\rules\Functional
File
-
tests/src/Functional/RulesComponentListBuilderTest.php
View source
<?php
namespace Drupal\Tests\rules\Functional;
class RulesComponentListBuilderTest extends RulesBrowserTestBase {
protected static $modules = [
'rules',
'rules_test',
];
protected $profile = 'minimal';
protected $storage;
protected $adminUser;
protected function setUp() : void {
parent::setUp();
$this->storage = $this->container
->get('entity_type.manager')
->getStorage('rules_component');
$this->adminUser = $this->drupalCreateUser([
'administer rules',
]);
}
public function testRuleComponentPage() {
$this->drupalLogin($this->adminUser);
$this->drupalGet('admin/config/workflow/rules/components');
$assert = $this->assertSession();
$assert->statusCodeEquals(200);
$assert->pageTextContains('No rules components have been defined.');
}
public function testCreateRulesComponent() {
$this->drupalLogin($this->adminUser);
$this->drupalGet('admin/config/workflow/rules/components');
$this->clickLink('Add component');
$this->fillField('Label', 'Test component');
$this->fillField('Machine-readable name', 'test_component');
$this->fillField('Description', 'This is a test description for a test component.');
$this->pressButton('Save');
$assert = $this->assertSession();
$assert->statusCodeEquals(200);
$assert->pageTextContains('Component Test component has been created.');
$this->clickLink('Add condition');
$this->fillField('Condition', 'rules_user_is_blocked');
$this->pressButton('Continue');
$this->fillField('context_definitions[user][setting]', '@user:current_user_context:current_user');
$this->pressButton('Save');
$assert->statusCodeEquals(200);
$assert->pageTextContains('You have unsaved changes.');
$this->pressButton('Save');
$assert->pageTextContains('Rule component Test component has been updated. ');
}
public function testCancelExpressionInComponent() {
$this->testCreateRulesComponent();
$this->clickLink('Add condition');
$this->fillField('Condition', 'rules_user_is_blocked');
$this->pressButton('Continue');
$this->fillField('context_definitions[user][setting]', '@user:current_user_context:current_user');
$this->pressButton('Save');
$assert = $this->assertSession();
$assert->pageTextContains('You have unsaved changes.');
$this->pressButton('Cancel');
$assert->pageTextContains('Canceled.');
$this->assertEquals(1, preg_match('#/admin/config/workflow/rules/components$#', $this->getSession()
->getCurrentUrl()));
}
public function testDeleteExpressionInComponent() {
$this->testCreateRulesComponent();
$assert = $this->assertSession();
$this->clickLink('Delete');
$assert->pageTextContains('Are you sure you want to delete User is blocked from Test component?');
$this->pressButton('Delete');
$assert->pageTextContains('You have unsaved changes.');
$this->pressButton('Save');
$assert->pageTextContains('Rule component Test component has been updated. ');
}
public function testNoContextCondition() {
$this->testCreateRulesComponent();
$this->clickLink('Add condition');
$this->fillField('Condition', 'rules_test_true');
$this->pressButton('Continue');
$this->pressButton('Save');
}
public function testNegatedCondition() {
$this->testCreateRulesComponent();
$assert = $this->assertSession();
$assert->pageTextContains('User is blocked');
$this->clickLink('Edit');
$this->fillField('Negate', 1);
$this->pressButton('Save');
$assert->pageTextContains('NOT User is blocked');
}
public function testMultipleContextAction() {
$this->drupalLogin($this->adminUser);
$this->drupalGet('admin/config/workflow/rules/components');
$this->clickLink('Add component');
$this->fillField('Label', 'Test component');
$this->fillField('Machine-readable name', 'test_component');
$this->fillField('Description', 'This is a test description for a test component.');
$this->pressButton('Save');
$this->clickLink('Add action');
$this->fillField('Action', 'rules_send_email');
$this->pressButton('Continue');
$this->pressButton('Switch to data selection');
$this->pressButton('Switch to the direct input mode');
$this->fillField('context_definitions[to][setting]', 'klausi@example.com');
$this->fillField('context_definitions[subject][setting]', 'subject');
$this->fillField('context_definitions[message][setting]', 'message');
$this->pressButton('Save');
$assert = $this->assertSession();
$assert->statusCodeEquals(200);
}
}
Classes