mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-07 16:36:42 +08:00
Unit test for yii\data\ArrayDataProvider added
This commit is contained in:
153
tests/unit/framework/data/ArrayDataProviderTest.php
Normal file
153
tests/unit/framework/data/ArrayDataProviderTest.php
Normal file
@ -0,0 +1,153 @@
|
||||
<?php
|
||||
|
||||
namespace yiiunit\framework\data;
|
||||
|
||||
use yii\data\ArrayDataProvider;
|
||||
use yiiunit\TestCase;
|
||||
|
||||
/**
|
||||
* @group data
|
||||
*/
|
||||
class ArrayDataProviderTest extends TestCase
|
||||
{
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
$this->mockApplication();
|
||||
}
|
||||
|
||||
public function testGetModels()
|
||||
{
|
||||
$simpleArray = [
|
||||
['name' => 'zero'],
|
||||
['name' => 'one']
|
||||
];
|
||||
$dataProvider = new ArrayDataProvider(['allModels' => $simpleArray]);
|
||||
$this->assertEquals($simpleArray, $dataProvider->getModels());
|
||||
}
|
||||
|
||||
public function testGetSortedData()
|
||||
{
|
||||
$simpleArray = [['sortField' => 1], ['sortField' => 0]];
|
||||
$dataProvider = new ArrayDataProvider(
|
||||
[
|
||||
'allModels' => $simpleArray,
|
||||
'sort' => [
|
||||
'attributes' => [
|
||||
'sort' => [
|
||||
'asc' => ['sortField' => SORT_ASC],
|
||||
'desc' => ['sortField' => SORT_DESC],
|
||||
'label' => 'Sorting',
|
||||
'default' => 'asc',
|
||||
],
|
||||
],
|
||||
'defaultOrder' => [
|
||||
'sort' => SORT_ASC,
|
||||
]
|
||||
],
|
||||
]
|
||||
);
|
||||
$sortedArray = [['sortField' => 0], ['sortField' => 1]];
|
||||
$this->assertEquals($sortedArray, $dataProvider->getModels());
|
||||
}
|
||||
|
||||
public function testGetSortedDataByInnerArrayField()
|
||||
{
|
||||
$simpleArray = [
|
||||
['innerArray' => ['sortField' => 1]],
|
||||
['innerArray' => ['sortField' => 0]]
|
||||
];
|
||||
$dataProvider = new ArrayDataProvider(
|
||||
[
|
||||
'allModels' => $simpleArray,
|
||||
'sort' => [
|
||||
'attributes' => [
|
||||
'sort' => [
|
||||
'asc' => ['innerArray.sortField' => SORT_ASC],
|
||||
'desc' => ['innerArray.sortField' => SORT_DESC],
|
||||
'label' => 'Sorting',
|
||||
'default' => 'asc',
|
||||
],
|
||||
],
|
||||
'defaultOrder' => [
|
||||
'sort' => SORT_ASC,
|
||||
]
|
||||
],
|
||||
]
|
||||
);
|
||||
$sortedArray = [
|
||||
['innerArray' => ['sortField' => 0]],
|
||||
['innerArray' => ['sortField' => 1]]
|
||||
];
|
||||
$this->assertEquals($sortedArray, $dataProvider->getModels());
|
||||
}
|
||||
|
||||
public function testCaseSensitiveSort()
|
||||
{
|
||||
// source data
|
||||
$unsortedProjects = [
|
||||
['title'=>'Zabbix', 'license'=>'GPL'],
|
||||
['title'=>'munin', 'license'=>'GPL'],
|
||||
['title'=>'Arch Linux', 'license'=>'GPL'],
|
||||
['title'=>'Nagios', 'license'=>'GPL'],
|
||||
['title'=>'zend framework', 'license'=>'BSD'],
|
||||
['title'=>'Zope', 'license'=>'ZPL'],
|
||||
['title'=>'active-record', 'license'=>false],
|
||||
['title'=>'ActiveState', 'license'=>false],
|
||||
['title'=>'mach', 'license'=>false],
|
||||
['title'=>'MySQL', 'license'=>'GPL'],
|
||||
['title'=>'mssql', 'license'=>'EULA'],
|
||||
['title'=>'Master-Master', 'license'=>false],
|
||||
['title'=>'Zend Engine', 'license'=>false],
|
||||
['title'=>'Mageia Linux', 'license'=>'GNU GPL'],
|
||||
['title'=>'nginx', 'license'=>'BSD'],
|
||||
['title'=>'Mozilla Firefox', 'license'=>'MPL'],
|
||||
];
|
||||
|
||||
// expected data
|
||||
$sortedProjects = [
|
||||
// upper cased titles
|
||||
['title'=>'ActiveState', 'license'=>false],
|
||||
['title'=>'Arch Linux', 'license'=>'GPL'],
|
||||
['title'=>'Mageia Linux', 'license'=>'GNU GPL'],
|
||||
['title'=>'Master-Master', 'license'=>false],
|
||||
['title'=>'Mozilla Firefox', 'license'=>'MPL'],
|
||||
['title'=>'MySQL', 'license'=>'GPL'],
|
||||
['title'=>'Nagios', 'license'=>'GPL'],
|
||||
['title'=>'Zabbix', 'license'=>'GPL'],
|
||||
['title'=>'Zend Engine', 'license'=>false],
|
||||
['title'=>'Zope', 'license'=>'ZPL'],
|
||||
// lower cased titles
|
||||
['title'=>'active-record', 'license'=>false],
|
||||
['title'=>'mach', 'license'=>false],
|
||||
['title'=>'mssql', 'license'=>'EULA'],
|
||||
['title'=>'munin', 'license'=>'GPL'],
|
||||
['title'=>'nginx', 'license'=>'BSD'],
|
||||
['title'=>'zend framework', 'license'=>'BSD'],
|
||||
];
|
||||
|
||||
$dataProvider = new ArrayDataProvider(
|
||||
[
|
||||
'allModels' => $unsortedProjects,
|
||||
'sort' => [
|
||||
'attributes' => [
|
||||
'sort' => [
|
||||
'asc' => ['title' => SORT_ASC],
|
||||
'desc' => ['title' => SORT_DESC],
|
||||
'label' => 'Title',
|
||||
'default' => 'desc',
|
||||
],
|
||||
],
|
||||
'defaultOrder' => [
|
||||
'sort' => SORT_ASC,
|
||||
]
|
||||
],
|
||||
'pagination' => [
|
||||
'pageSize' => 100500,
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$this->assertEquals($sortedProjects, $dataProvider->getModels());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user