* * @group grid */ class ActionColumnTest extends \yiiunit\TestCase { public function testInit() { $column = new ActionColumn(); $this->assertEquals(['view', 'update', 'delete'], array_keys($column->buttons)); $column = new ActionColumn(['template' => '{show} {edit} {delete}']); $this->assertEquals(['delete'], array_keys($column->buttons)); $column = new ActionColumn(['template' => '{show} {edit} {remove}']); $this->assertEmpty($column->buttons); $column = new ActionColumn(['template' => '{view-items} {update-items} {delete-items}']); $this->assertEmpty($column->buttons); $column = new ActionColumn(['template' => '{view} {view-items}']); $this->assertEquals(['view'], array_keys($column->buttons)); } public function testRenderDataCell() { $column = new ActionColumn(); $column->urlCreator = function ($model, $key, $index) { return 'http://test.com'; }; $columnContents = $column->renderDataCell(['id' => 1], 1, 0); $viewButton = ''; $updateButton = ''; $deleteButton = ''; $expectedHtml = "$viewButton $updateButton $deleteButton"; $this->assertEquals($expectedHtml, $columnContents); $column = new ActionColumn(); $column->urlCreator = function ($model, $key, $index) { return 'http://test.com'; }; $column->template = '{update}'; $column->buttons = [ 'update' => function ($url, $model, $key) { return 'update_button'; }, ]; //test default visible button $columnContents = $column->renderDataCell(['id' => 1], 1, 0); $this->assertContains('update_button', $columnContents); //test visible button $column->visibleButtons = [ 'update' => true, ]; $columnContents = $column->renderDataCell(['id' => 1], 1, 0); $this->assertContains('update_button', $columnContents); //test visible button (condition is callback) $column->visibleButtons = [ 'update' => function ($model, $key, $index) {return $model['id'] == 1;}, ]; $columnContents = $column->renderDataCell(['id' => 1], 1, 0); $this->assertContains('update_button', $columnContents); //test invisible button $column->visibleButtons = [ 'update' => false, ]; $columnContents = $column->renderDataCell(['id' => 1], 1, 0); $this->assertNotContains('update_button', $columnContents); //test invisible button (condition is callback) $column->visibleButtons = [ 'update' => function ($model, $key, $index) {return $model['id'] != 1;}, ]; $columnContents = $column->renderDataCell(['id' => 1], 1, 0); $this->assertNotContains('update_button', $columnContents); } }