ScheduledTransitionModalFormJavascriptTest.php in Scheduled Transitions 2.x        
                          
                  
                        
  
  
  
  
  
File
  tests/src/FunctionalJavascript/ScheduledTransitionModalFormJavascriptTest.php
  
    View source  
  <?php
declare (strict_types=1);
namespace Drupal\Tests\scheduled_transitions\FunctionalJavascript;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
use Drupal\scheduled_transitions\Routing\ScheduledTransitionsRouteProvider;
use Drupal\scheduled_transitions_test\Entity\ScheduledTransitionsTestEntity;
use Drupal\scheduled_transitions\ScheduledTransitionsPermissions as Permissions;
use Drupal\Tests\content_moderation\Traits\ContentModerationTestTrait;
use Drupal\Tests\scheduled_transitions\Traits\ScheduledTransitionTestTrait;
class ScheduledTransitionModalFormJavascriptTest extends WebDriverTestBase {
  use ContentModerationTestTrait;
  use ScheduledTransitionTestTrait;
  
  protected static $modules = [
    'entity_test_revlog',
    'scheduled_transitions_target_revisions_test',
    'scheduled_transitions_test',
    'scheduled_transitions',
    'content_moderation',
    'workflows',
    'dynamic_entity_reference',
    'user',
    'system',
  ];
  
  protected $defaultTheme = 'classy';
  
  public function testRevisionLogOverride() {
    
    \Drupal::configFactory()
      ->getEditable('scheduled_transitions.settings')
      ->set('message_override', TRUE)
      ->save(TRUE);
    $this
      ->enabledBundles([
      [
        'st_entity_test',
        'st_entity_test',
      ],
    ]);
    $workflow = $this
      ->createEditorialWorkflow();
    $workflow
      ->getTypePlugin()
      ->addEntityTypeAndBundle('st_entity_test', 'st_entity_test');
    $workflow
      ->save();
    $currentUser = $this
      ->drupalCreateUser([
      'administer st_entity_test entities',
      'use editorial transition create_new_draft',
      'use editorial transition publish',
      'use editorial transition archive',
      Permissions::addScheduledTransitionsPermission('st_entity_test', 'st_entity_test'),
    ]);
    $this
      ->drupalLogin($currentUser);
    $entity = ScheduledTransitionsTestEntity::create([
      'type' => 'st_entity_test',
    ]);
    $entity->name = 'revision 1';
    $entity
      ->save();
    $entity->name = 'revision 2';
    $entity
      ->setNewRevision(TRUE);
    $entity
      ->save();
    $entity->name = 'revision 3';
    $entity
      ->setNewRevision(TRUE);
    $entity
      ->save();
    $this
      ->drupalGet($entity
      ->toUrl());
    
    $this
      ->drupalGet($entity
      ->toUrl(ScheduledTransitionsRouteProvider::LINK_TEMPLATE_ADD));
    
    $this
      ->getSession()
      ->getPage()
      ->find('css', '#edit-revision-metadata-revision-log > summary')
      ->click();
    
    $this
      ->assertSession()
      ->pageTextContains('Scheduled transition: transitioning latest revision from Draft to - Unknown state -');
    $this
      ->getSession()
      ->getPage()
      ->fillField('transition', 'archive');
    $this
      ->getSession()
      ->getPage()
      ->pressButton('Reload preview');
    $this
      ->assertSession()
      ->assertWaitOnAjaxRequest();
    $this
      ->assertSession()
      ->pageTextContains('Scheduled transition: transitioning latest revision from Draft to Archived');
    $this
      ->getSession()
      ->getPage()
      ->fillField('revision', 2);
    $this
      ->getSession()
      ->getPage()
      ->checkField('revision_metadata[revision_log][override]');
    $this
      ->assertSession()
      ->assertWaitOnAjaxRequest();
    $this
      ->getSession()
      ->getPage()
      ->fillField('revision_metadata[revision_log][custom][message]', 'Test message. Transitioning from revision #[scheduled-transitions:from-revision-id].');
    $this
      ->getSession()
      ->getPage()
      ->pressButton('Reload preview');
    $this
      ->assertSession()
      ->assertWaitOnAjaxRequest();
    $this
      ->assertSession()
      ->pageTextContains('Test message. Transitioning from revision #2');
  }
}