Namespace
  Drupal\Tests\rules\Unit\Integration\RulesAction
File
  - 
              tests/src/Unit/Integration/RulesAction/SystemMessageTest.php
    
   
  
    View source
  
  <?php
namespace Drupal\Tests\rules\Unit\Integration\RulesAction;
use Drupal\Core\Messenger\MessengerInterface;
use Drupal\Tests\rules\Unit\Integration\RulesIntegrationTestBase;
class SystemMessageTest extends RulesIntegrationTestBase {
  
  protected $action;
  
  protected function setUp() : void {
    parent::setUp();
    $this->action = $this->actionManager
      ->createInstance('rules_system_message');
    
    $this->messenger
      ->deleteAll();
  }
  
  public function testSummary() {
    $this->assertEquals('Show a message on the site', $this->action
      ->summary());
  }
  
  public function testActionExecution() {
    $this->action
      ->setContextValue('message', 'test message')
      ->setContextValue('type', MessengerInterface::TYPE_STATUS)
      ->setContextValue('repeat', FALSE);
    
    
    $this->action
      ->execute();
    $this->action
      ->execute();
    $this->action
      ->execute();
    $messages = $this->getMessages(MessengerInterface::TYPE_STATUS);
    $this->assertNotNull($messages);
    $this->assertEquals([
      'test message',
    ], $messages);
    
    $this->action
      ->setContextValue('repeat', TRUE);
    $this->action
      ->execute();
    
    $messages = $this->getMessages(MessengerInterface::TYPE_STATUS);
    $this->assertNotNull($messages);
    $this->assertEquals([
      'test message',
      'test message',
    ], $messages);
  }
  
  public function testOptionalRepeat() {
    $this->action
      ->setContextValue('message', 'test message')
      ->setContextValue('type', MessengerInterface::TYPE_STATUS);
    $this->action
      ->execute();
    $messages = $this->getMessages(MessengerInterface::TYPE_STATUS);
    $this->assertNotNull($messages);
    $this->assertEquals([
      'test message',
    ], $messages);
  }
  
  protected function clearMessages($type = NULL) {
    if (isset($type)) {
      $this->messenger
        ->deleteByType($type);
    }
    else {
      $this->messenger
        ->deleteAll();
    }
    return $this;
  }
  
  protected function getMessages($type = NULL) {
    $messages = $this->messenger
      ->all();
    if (isset($type)) {
      return $messages[$type] ?? NULL;
    }
    return $messages;
  }
}
 
Classes
  
  
  
  
  
  
  
        
      
                                                  | Title | Deprecated | Summary | 
    
    
          
                                                                                        | SystemMessageTest |  | @coversDefaultClass \Drupal\rules\Plugin\RulesAction\SystemMessage[[api-linebreak]]
@group RulesAction |