Chris@0: 'moderated', 'type' => 'moderated']); Chris@0: $node_type->save(); Chris@0: Chris@0: // Set the content type as moderated. Chris@0: $workflow = Workflow::load('editorial'); Chris@0: $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'moderated'); Chris@0: $workflow->save(); Chris@0: Chris@0: $this->drupalLogin($this->rootUser); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests node path aliases on a moderated content type. Chris@0: */ Chris@0: public function testNodePathAlias() { Chris@0: // Create some moderated content with a path alias. Chris@0: $this->drupalGet('node/add/moderated'); Chris@0: $this->assertSession()->fieldValueEquals('path[0][alias]', ''); Chris@0: $this->drupalPostForm(NULL, [ Chris@0: 'title[0][value]' => 'moderated content', Chris@0: 'path[0][alias]' => '/moderated-content', Chris@0: 'moderation_state[0][state]' => 'published', Chris@0: ], t('Save')); Chris@0: $node = $this->getNodeByTitle('moderated content'); Chris@0: Chris@0: // Add a pending revision with the same alias. Chris@0: $this->drupalGet('node/' . $node->id() . '/edit'); Chris@0: $this->assertSession()->fieldValueEquals('path[0][alias]', '/moderated-content'); Chris@0: $this->drupalPostForm(NULL, [ Chris@0: 'title[0][value]' => 'pending revision', Chris@0: 'path[0][alias]' => '/moderated-content', Chris@0: 'moderation_state[0][state]' => 'draft', Chris@0: ], t('Save')); Chris@0: $this->assertSession()->pageTextNotContains('You can only change the URL alias for the published version of this content.'); Chris@0: Chris@0: // Create some moderated content with no path alias. Chris@0: $this->drupalGet('node/add/moderated'); Chris@0: $this->assertSession()->fieldValueEquals('path[0][alias]', ''); Chris@0: $this->drupalPostForm(NULL, [ Chris@0: 'title[0][value]' => 'moderated content 2', Chris@0: 'path[0][alias]' => '', Chris@0: 'moderation_state[0][state]' => 'published', Chris@0: ], t('Save')); Chris@0: $node = $this->getNodeByTitle('moderated content 2'); Chris@0: Chris@0: // Add a pending revision with a new alias. Chris@0: $this->drupalGet('node/' . $node->id() . '/edit'); Chris@0: $this->assertSession()->fieldValueEquals('path[0][alias]', ''); Chris@0: $this->drupalPostForm(NULL, [ Chris@0: 'title[0][value]' => 'pending revision', Chris@0: 'path[0][alias]' => '/pending-revision', Chris@0: 'moderation_state[0][state]' => 'draft', Chris@0: ], t('Save')); Chris@0: $this->assertSession()->pageTextContains('You can only change the URL alias for the published version of this content.'); Chris@0: Chris@0: // Create some moderated content with no path alias. Chris@0: $this->drupalGet('node/add/moderated'); Chris@0: $this->assertSession()->fieldValueEquals('path[0][alias]', ''); Chris@0: $this->drupalPostForm(NULL, [ Chris@0: 'title[0][value]' => 'moderated content 3', Chris@0: 'path[0][alias]' => '', Chris@0: 'moderation_state[0][state]' => 'published', Chris@0: ], t('Save')); Chris@0: $node = $this->getNodeByTitle('moderated content 3'); Chris@0: Chris@0: // Add a pending revision with no path alias. Chris@0: $this->drupalGet('node/' . $node->id() . '/edit'); Chris@0: $this->assertSession()->fieldValueEquals('path[0][alias]', ''); Chris@0: $this->drupalPostForm(NULL, [ Chris@0: 'title[0][value]' => 'pending revision', Chris@0: 'path[0][alias]' => '', Chris@0: 'moderation_state[0][state]' => 'draft', Chris@0: ], t('Save')); Chris@0: $this->assertSession()->pageTextNotContains('You can only change the URL alias for the published version of this content.'); Chris@0: } Chris@0: Chris@0: }