* @group grid */ class GridViewTest extends \yiiunit\TestCase { protected function setUp() { parent::setUp(); $this->mockApplication([ 'components' => [ 'assetManager' => [ 'bundles' => [ 'yii\grid\GridViewAsset' => false, 'yii\web\JqueryAsset' => false, ], ], ], ]); } /** * @return array */ public function emptyDataProvider() { return [ [null, 'No results found.'], ['Empty', 'Empty'], // https://github.com/yiisoft/yii2/issues/13352 [false, ''], ]; } /** * @dataProvider emptyDataProvider * @param mixed $emptyText * @param string $expectedText * @throws \Exception */ public function testEmpty($emptyText, $expectedText) { $html = GridView::widget([ 'id' => 'grid', 'dataProvider' => new ArrayDataProvider(['allModels' => []]), 'showHeader' => false, 'emptyText' => $emptyText, 'options' => [], 'tableOptions' => [], 'view' => new View(), 'filterUrl' => '/', ]); $html = preg_replace("/\r|\n/", '', $html); if ($expectedText) { $emptyRowHtml = "
{$expectedText}
"; } else { $emptyRowHtml = ''; } $expectedHtml = "
{$emptyRowHtml}
"; $this->assertEquals($expectedHtml, $html); } public function testGuessColumns() { $row = ['id' => 1, 'name' => 'Name1', 'value' => 'Value1', 'description' => 'Description1']; $grid = new GridView([ 'dataProvider' => new ArrayDataProvider( [ 'allModels' => [ $row, ], ] ), ]); $columns = $grid->columns; $this->assertCount(count($row), $columns); foreach ($columns as $index => $column) { $this->assertInstanceOf(DataColumn::className(), $column); $this->assertArrayHasKey($column->attribute, $row); } $row = array_merge($row, ['relation' => ['id' => 1, 'name' => 'RelationName']]); $row = array_merge($row, ['otherRelation' => (object) $row['relation']]); $grid = new GridView([ 'dataProvider' => new ArrayDataProvider( [ 'allModels' => [ $row, ], ] ), ]); $columns = $grid->columns; $this->assertCount(count($row) - 2, $columns); foreach ($columns as $index => $column) { $this->assertInstanceOf(DataColumn::className(), $column); $this->assertArrayHasKey($column->attribute, $row); $this->assertNotEquals('relation', $column->attribute); $this->assertNotEquals('otherRelation', $column->attribute); } } }