Fix sortDir() to read default params.

sortDir() also did not reflect the default paging parameters.
This would result in initial links not matching the query used.

Fixes #2640
This commit is contained in:
mark_story 2012-03-03 23:19:50 -05:00
parent 8f72b696a0
commit dde19f97c7
2 changed files with 37 additions and 0 deletions

View file

@ -384,6 +384,15 @@ class PaginatorHelperTest extends CakeTestCase {
$result = $this->Paginator->sortKey('Article');
$this->assertEquals('Article.body', $result);
$this->Paginator->request->params['paging']['Article']['order'] = array(
'Article.body' => 'DESC'
);
$result = $this->Paginator->sortKey();
$this->assertEquals('Article.body', $result);
$result = $this->Paginator->sortKey('Article');
$this->assertEquals('Article.body', $result);
}
/**
@ -455,6 +464,32 @@ class PaginatorHelperTest extends CakeTestCase {
$this->assertEquals($expected, $result);
}
/**
* Test that sortDir falls back to the default sorting options set
* in the $params which are the default pagination options.
*
* @return void
*/
public function testSortDirFallbackToParams() {
$this->Paginator->request->params['paging']['Article']['order'] = array(
'Article.body' => 'ASC'
);
$result = $this->Paginator->sortDir();
$this->assertEquals('asc', $result);
$result = $this->Paginator->sortDir('Article');
$this->assertEquals('asc', $result);
$this->Paginator->request->params['paging']['Article']['order'] = array(
'Article.body' => 'DESC'
);
$result = $this->Paginator->sortDir();
$this->assertEquals('desc', $result);
$result = $this->Paginator->sortDir('Article');
$this->assertEquals('desc', $result);
}
/**
* testSortAdminLinks method
*

View file

@ -232,6 +232,8 @@ class PaginatorHelper extends AppHelper {
$dir = strtolower($options['direction']);
} elseif (isset($options['order']) && is_array($options['order'])) {
$dir = strtolower(current($options['order']));
} elseif (isset($params['order']) && is_array($params['order'])) {
$dir = strtolower(current($params['order']));
}
if ($dir == 'desc') {