You are here

public function PathautoPersistTestCase::testNodeAPI in Pathauto Persistent State 7

File

./pathauto_persist.test, line 65

Class

PathautoPersistTestCase
Tests for the pathauto_persist module.

Code

public function testNodeAPI() {
  $node = $this
    ->drupalCreateNode(array(
    'title' => 'Node version one',
    'type' => 'article',
    'path' => array(
      'pathauto' => FALSE,
    ),
  ));
  $this
    ->assertNoEntityAlias('node', $node);

  // Set a manual path alias for the node.
  $node->path['alias'] = 'test-alias';
  node_save($node);

  // Ensure that the pathauto field was saved to the database.
  $node = node_load($node->nid, NULL, TRUE);
  $this
    ->assertFalse($node->path['pathauto']);

  // Ensure that the manual path alias was saved and an automatic alias was not generated.
  $this
    ->assertEntityAlias('node', $node, 'test-alias');
  $this
    ->assertNoEntityAliasExists('node', $node, 'content/node-version-one');

  // Save the node as a user who does not have access to path fieldset.
  $this
    ->drupalLogin($this->nodeNoAliasUser);
  $this
    ->drupalGet('node/' . $node->nid . '/edit');
  $this
    ->assertNoFieldByName('path[pathauto]');
  $edit = array(
    'title' => 'Node version two',
  );
  $this
    ->drupalPost(NULL, $edit, 'Save');
  $this
    ->assertText('Article Node version two has been updated.');
  $this
    ->assertEntityAlias('node', $node, 'test-alias');
  $this
    ->assertNoEntityAliasExists('node', $node, 'content/node-version-one');
  $this
    ->assertNoEntityAliasExists('node', $node, 'content/node-version-two');

  // Load the edit node page and check that the Pathauto checkbox is unchecked.
  $this
    ->drupalLogin($this->nodeAliasUser);
  $this
    ->drupalGet('node/' . $node->nid . '/edit');
  $this
    ->assertNoFieldChecked('edit-path-pathauto');

  // Edit the manual alias and save the node.
  $edit = array(
    'title' => 'Node version three',
    'path[alias]' => 'manually-edited-alias',
  );
  $this
    ->drupalPost(NULL, $edit, 'Save');
  $this
    ->assertText('Article Node version three has been updated.');
  $this
    ->assertEntityAlias('node', $node, 'manually-edited-alias');
  $this
    ->assertNoEntityAliasExists('node', $node, 'test-alias');
  $this
    ->assertNoEntityAliasExists('node', $node, 'content/node-version-one');
  $this
    ->assertNoEntityAliasExists('node', $node, 'content/node-version-two');
  $this
    ->assertNoEntityAliasExists('node', $node, 'content/node-version-three');

  // Programatically save the node with an automatic alias.
  $node = node_load($node->nid, NULL, TRUE);
  $node->path['pathauto'] = TRUE;
  node_save($node);

  // Ensure that the pathauto field was saved to the database.
  $node = node_load($node->nid, NULL, TRUE);
  $this
    ->assertTrue($node->path['pathauto']);
  $this
    ->assertEntityAlias('node', $node, 'content/node-version-three');
  $this
    ->assertNoEntityAliasExists('node', $node, 'manually-edited-alias');
  $this
    ->assertNoEntityAliasExists('node', $node, 'test-alias');
  $this
    ->assertNoEntityAliasExists('node', $node, 'content/node-version-one');
  $this
    ->assertNoEntityAliasExists('node', $node, 'content/node-version-two');
}