You are here

public function ModerationStateNodeTypeTest::testEnablingOnExistingContent in Workbench Moderation 8

A node type without moderation state enabled.

File

tests/src/Functional/ModerationStateNodeTypeTest.php, line 35

Class

ModerationStateNodeTypeTest
Tests moderation state node type integration.

Namespace

Drupal\Tests\workbench_moderation\Functional

Code

public function testEnablingOnExistingContent() {

  // Create a node type that is not moderated.
  $this
    ->drupalLogin($this->adminUser);
  $this
    ->createContentTypeFromUi('Not moderated', 'not_moderated');
  $this
    ->grantUserPermissionToCreateContentOfType($this->adminUser, 'not_moderated');

  // Create content.
  $this
    ->drupalGet('node/add/not_moderated');
  $this
    ->drupalPostForm(NULL, [
    'title[0][value]' => 'Test',
  ], t('Save and publish'));
  $this
    ->assertSession()
    ->pageTextContains('Not moderated Test has been created.');

  // Now enable moderation state.
  $this
    ->enableModerationThroughUi('not_moderated', [
    'draft',
    'needs_review',
    'published',
  ], 'draft');

  // And make sure it works.
  $nodes = \Drupal::entityTypeManager()
    ->getStorage('node')
    ->loadByProperties([
    'title' => 'Test',
  ]);
  if (empty($nodes)) {
    $this
      ->fail('Could not load node with title Test');
    return;
  }
  $node = reset($nodes);
  $this
    ->drupalGet('node/' . $node
    ->id());
  $this
    ->assertSession()
    ->statusCodeEquals(200);
  $this
    ->assertLinkByHref('node/' . $node
    ->id() . '/edit');
  $this
    ->drupalGet('node/' . $node
    ->id() . '/edit');
  $this
    ->assertSession()
    ->statusCodeEquals(200);
  $this
    ->assertRaw('Save and Create New Draft');
  $this
    ->assertNoRaw('Save and publish');
}