Skip to content

Commit

Permalink
SortableHeader:
Browse files Browse the repository at this point in the history
- added Test
- removed now unused functions
  • Loading branch information
timopruesse committed Apr 18, 2017
1 parent dfe4bac commit 29feb01
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 42 deletions.
43 changes: 1 addition & 42 deletions src/Models/HeaderFormatters/SortableHeader.php
Original file line number Diff line number Diff line change
Expand Up @@ -128,52 +128,11 @@ public function format(Header $header, Request $request)
private function _extractSortFields(Request $request) : array
{
return \array_diff(
$this->_getSortFields($request) + $this->_getRememberedState($request) + $this->_getDefaultSorting($this->_sortableHeaders),
$this->_getRememberedState($request) + $this->_getDefaultSorting($this->_sortableHeaders),
$this->_getDefaultSorting($this->_dontSort)
);
}

/**
* Get the sorted fields from the request.
*
* @param Request $request
* @return array
*/
private function _getSortFields(Request $request) : array
{
$sortFields = $request->get('sort');
if ($sortFields === null)
{
return [];
}

$sorting = [];
foreach (\explode(self::COLUMN_SEPARATOR, $sortFields) as $field)
{
$sortParts = $this->_getSortParts($field);
$sorting[$sortParts[0]] = \mb_strtolower($sortParts[1]);
}

return $sorting;
}

/**
* Get the name of the field and the sorting direction (default: "asc").
*
* @param string $field
* @return array
*/
private function _getSortParts(string $field) : array
{
$sortParts = \explode(self::SORTING_SEPARATOR, $field);
if (\count($sortParts) === 1)
{
$sortParts[1] = $this->_defaultDirection;
}

return $sortParts;
}

/**
* @param Request $request
* @return array
Expand Down
20 changes: 20 additions & 0 deletions tests/SortableHeaderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -218,4 +218,24 @@ public function multiple_existing_parameters_are_considered()
\mb_substr($dataTable->render(), 0, 263)
);
}

/**
* @test
*/
public function parameters_added_to_existing()
{
UrlHelper::shouldReceive('queryParameters')->andReturn(['sort' => 'created_at~desc']);

$date = '1970-01-01 00:00:00';
TestModel::create(['name' => 'sort-request-test', 'created_at' => $date]);

$dataTable = DataTable::model(TestModel::class, ['created_at', 'name'])->formatHeaders(new SortableHeader(['created_at', 'name']));

$this->assertEquals(
'<table class="table"><tr><th><a class="sortable-header" href="' . $this->baseUrl .
'?sort=created_at%7Enone">created_at <span class="sort-symbol">&#x25BC;</span></a></th><th><a class="sortable-header" href="' . $this->baseUrl .
'?sort=created_at%7Edesc.name%7Easc',
\mb_substr($dataTable->render(), 0, 251)
);
}
}

0 comments on commit 29feb01

Please sign in to comment.