1 node.test NodeAdminTestCase::testContentAdminSort()

Tests that the table sorting works on the content admin pages.

File

core/modules/node/tests/node.test, line 2397
Tests for node.module.

Class

NodeAdminTestCase
Tests node administration page functionality.

Code

function testContentAdminSort() {
  $this->backdropLogin($this->admin_user);
  foreach (array('dd', 'aa', 'DD', 'bb', 'cc', 'CC', 'AA', 'BB') as $index => $prefix) {
    $node = $this->backdropCreateNode(array('title' => $prefix . $this->randomName(6)));
    db_update('node')
      ->fields(array(
        'changed' => REQUEST_TIME + $index
      ))
      ->condition('nid', $node->nid)
      ->execute();
  }

  // Test that the default sort by node.changed DESC actually fires properly.
  $nodes_query = db_select('node', 'n')
    ->fields('n', array('nid'))
    ->orderBy('changed', 'DESC')
    ->execute()
    ->fetchCol();

  $nodes_form = array();
  $this->backdropGet('admin/content');
  foreach ($this->xpath('//table/tbody/tr/td/div/input/@value') as $input) {
    $nodes_form[] = (string) $input;
  }
  $this->assertEqual($nodes_query, $nodes_form, 'Nodes are sorted in the form according to the default query.');

  // Compare the rendered HTML node list to a query for the nodes ordered by
  // title to account for possible database-dependent sort order.
  $nodes_query = db_select('node', 'n')
    ->fields('n', array('nid'))
    ->orderBy('title')
    ->execute()
    ->fetchCol();

  $nodes_form = array();
  $this->backdropGet('admin/content', array('query' => array('sort' => 'asc', 'order' => 'title')));
  foreach ($this->xpath('//table/tbody/tr/td/div/input/@value') as $input) {
    $nodes_form[] = $input;
  }
  $this->assertEqual($nodes_query, $nodes_form, 'Nodes are sorted in the form the same as they are in the query.');
}