Skip to content

Commit 3e2272c

Browse files
committed
Restore DataTableComponent, Adjust Column Tests to use ColumnTestCase
1 parent 842d707 commit 3e2272c

18 files changed

+236
-254
lines changed

src/Views/Columns/Traits/HasDataTableComponent.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ public function setComponent(DataTableComponent $component): self
1515
return $this;
1616
}
1717

18+
public function hasComponent(): bool
19+
{
20+
return (isset($this->component) && !is_null($this->component));
21+
}
22+
1823
public function getComponent(): ?DataTableComponent
1924
{
2025
return $this->component;

tests/Unit/Views/Columns/ArrayColumnTest.php

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,38 +5,32 @@
55
use PHPUnit\Framework\Attributes\Group;
66
use Rappasoft\LaravelLivewireTables\Exceptions\DataTableConfigurationException;
77
use Rappasoft\LaravelLivewireTables\Tests\Models\Pet;
8-
use Rappasoft\LaravelLivewireTables\Tests\TestCase;
98
use Rappasoft\LaravelLivewireTables\Views\Columns\ArrayColumn;
109

1110
#[Group('Columns')]
12-
final class ArrayColumnTest extends TestCase
11+
final class ArrayColumnTest extends ColumnTestCase
1312
{
14-
public function test_can_set_the_column_title(): void
13+
protected function setUp(): void
1514
{
16-
$column = ArrayColumn::make('Array Col');
17-
18-
$this->assertSame('Array Col', $column->getTitle());
15+
parent::setUp();
16+
self::$columnInstance = ArrayColumn::make('Name');
1917
}
2018

2119
public function test_can_set_the_separator(): void
2220
{
23-
$column = ArrayColumn::make('Array Col');
24-
25-
$this->assertSame('<br />', $column->getSeparator());
26-
$column->separator('<br /><br />');
27-
$this->assertTrue($column->hasSeparator());
21+
$this->assertSame('<br />', self::$columnInstance->getSeparator());
22+
self::$columnInstance->separator('<br /><br />');
23+
$this->assertTrue(self::$columnInstance->hasSeparator());
2824

29-
$this->assertSame('<br /><br />', $column->getSeparator());
25+
$this->assertSame('<br /><br />', self::$columnInstance->getSeparator());
3026
}
3127

3228
public function test_can_set_the_output_format(): void
3329
{
34-
$column = ArrayColumn::make('Array Col');
35-
36-
$this->assertNull($column->getOutputFormatCallback());
37-
$this->assertFalse($column->hasOutputFormatCallback());
38-
$column->outputFormat(fn ($index, $value) => "<a href='".$value->id."'>".$value->name.'</a>');
39-
$this->assertTrue($column->hasOutputFormatCallback());
30+
$this->assertNull(self::$columnInstance->getOutputFormatCallback());
31+
$this->assertFalse(self::$columnInstance->hasOutputFormatCallback());
32+
self::$columnInstance->outputFormat(fn ($index, $value) => "<a href='".$value->id."'>".$value->name.'</a>');
33+
$this->assertTrue(self::$columnInstance->hasOutputFormatCallback());
4034
}
4135

4236
public function test_requires_the_data_callback(): void
@@ -52,38 +46,40 @@ public function test_requires_the_data_callback(): void
5246
public function test_can_get_the_output_format_callback(): void
5347
{
5448
$this->expectException(DataTableConfigurationException::class);
55-
$column = ArrayColumn::make('Average Age')
49+
self::$columnInstance
5650
->separator('<br /><br />')
5751
->data(fn ($value, $row) => ($row->pets))
5852
->sortable();
59-
$this->assertNotNull($column->getDataCallback());
53+
$this->assertNotNull(self::$columnInstance->getDataCallback());
6054

61-
$contents = $column->getContents(Pet::find(1));
55+
$contents = self::$columnInstance->getContents(Pet::find(1));
6256
$this->assertNull($contents);
6357
}
6458

6559
public function test_requires_the_output_format_callback(): void
6660
{
6761
$this->expectException(DataTableConfigurationException::class);
68-
$column = ArrayColumn::make('Average Age')
62+
self::$columnInstance
6963
->separator('<br /><br />')
7064
->data(fn ($value, $row) => ($row->pets))
7165
->sortable();
7266

73-
$contents = $column->getContents(Pet::find(1));
67+
$contents = self::$columnInstance->getContents(Pet::find(1));
7468
$this->assertNull($contents);
7569
}
7670

7771
public function test_can_get_empty_value(): void
7872
{
79-
$column = ArrayColumn::make('Average Age')
73+
self::$columnInstance
8074
->separator('<br /><br />')
8175
->data(fn ($value, $row) => ($row->pets))
8276
->sortable();
8377

84-
$this->assertSame('', $column->getEmptyValue());
85-
$column->emptyValue('Unknown');
86-
$this->assertSame('Unknown', $column->getEmptyValue());
78+
$this->assertSame('', self::$columnInstance->getEmptyValue());
79+
self::$columnInstance->emptyValue('Unknown');
80+
$this->assertSame('Unknown', self::$columnInstance->getEmptyValue());
8781

8882
}
83+
84+
8985
}

tests/Unit/Views/Columns/AvgColumnTest.php

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,114 +6,109 @@
66
use PHPUnit\Framework\Attributes\Group;
77
use Rappasoft\LaravelLivewireTables\Exceptions\DataTableConfigurationException;
88
use Rappasoft\LaravelLivewireTables\Tests\Models\Pet;
9-
use Rappasoft\LaravelLivewireTables\Tests\TestCase;
109
use Rappasoft\LaravelLivewireTables\Tests\Unit\Attributes\AggregateColumnProvider;
1110
use Rappasoft\LaravelLivewireTables\Views\Columns\AvgColumn;
1211

1312
#[Group('Columns')]
14-
final class AvgColumnTest extends TestCase
13+
final class AvgColumnTest extends ColumnTestCase
1514
{
1615
protected function setUp(): void
1716
{
1817
parent::setUp();
18+
self::$columnInstance = AvgColumn::make('Name');
19+
1920
parent::setupSpeciesTable();
2021
}
2122

22-
public function test_can_set_the_column_title(): void
23-
{
24-
$column = AvgColumn::make('Average Age');
25-
26-
$this->assertSame('Average Age', $column->getTitle());
27-
}
2823

2924
#[DataProviderExternal(AggregateColumnProvider::class, 'relationshipProvider')]
3025
public function test_can_setup_column_correctly(string $relation_name, string $foreign_field): void
3126
{
32-
$column = AvgColumn::make('Average Age')
27+
self::$columnInstance
3328
->setDataSource($relation_name, $foreign_field)
3429
->sortable();
3530

36-
$this->assertNotEmpty($column);
31+
$this->assertNotEmpty(self::$columnInstance);
3732
}
3833

3934
#[DataProviderExternal(AggregateColumnProvider::class, 'relationshipProvider')]
4035
public function test_can_not_skip_set_data_source(string $relation_name, string $foreign_field): void
4136
{
4237
$this->expectException(DataTableConfigurationException::class);
4338

44-
$column = AvgColumn::make('Average Age')
39+
self::$columnInstance
4540
->sortable();
46-
$contents = $column->getContents(Pet::find(1));
47-
$this->assertNull($contents);
41+
$contents = self::$columnInstance->getContents(Pet::find(1));
42+
$this->assertNull(self::$columnInstance);
4843

4944
}
5045

5146
#[DataProviderExternal(AggregateColumnProvider::class, 'relationshipProvider')]
5247
public function test_can_get_data_source(string $relation_name, string $foreign_field): void
5348
{
54-
$column = AvgColumn::make('Average Age')
49+
self::$columnInstance
5550
->setDataSource($relation_name, $foreign_field)
5651
->sortable();
57-
$this->assertTrue($column->hasDataSource());
58-
$this->assertSame($relation_name, $column->getDataSource());
52+
$this->assertTrue(self::$columnInstance->hasDataSource());
53+
$this->assertSame($relation_name, self::$columnInstance->getDataSource());
5954
}
6055

6156
#[DataProviderExternal(AggregateColumnProvider::class, 'relationshipProvider')]
6257
public function test_can_get_foreign_column(string $relation_name, string $foreign_field): void
6358
{
64-
$column = AvgColumn::make('Average Age')
59+
self::$columnInstance
6560
->setDataSource($relation_name, $foreign_field)
6661
->sortable();
67-
$this->assertTrue($column->hasForeignColumn());
68-
$this->assertSame($foreign_field, $column->getForeignColumn());
62+
$this->assertTrue(self::$columnInstance->hasForeignColumn());
63+
$this->assertSame($foreign_field, self::$columnInstance->getForeignColumn());
6964
}
7065

7166
#[DataProviderExternal(AggregateColumnProvider::class, 'relationshipProvider')]
7267
public function test_can_set_foreign_column(string $relation_name, string $foreign_field): void
7368
{
74-
$column = AvgColumn::make('Average Age')
69+
self::$columnInstance
7570
->setDataSource($relation_name, $foreign_field)
7671
->sortable();
77-
$this->assertTrue($column->hasForeignColumn());
78-
$this->assertSame($foreign_field, $column->getForeignColumn());
79-
$column->setForeignColumn('test');
80-
$this->assertTrue($column->hasForeignColumn());
81-
$this->assertSame('test', $column->getForeignColumn());
72+
$this->assertTrue(self::$columnInstance->hasForeignColumn());
73+
$this->assertSame($foreign_field, self::$columnInstance->getForeignColumn());
74+
self::$columnInstance->setForeignColumn('test');
75+
$this->assertTrue(self::$columnInstance->hasForeignColumn());
76+
$this->assertSame('test', self::$columnInstance->getForeignColumn());
8277

8378
}
8479

8580
#[DataProviderExternal(AggregateColumnProvider::class, 'relationshipProvider')]
8681
public function test_can_get_data_source_fields(string $relation_name, string $foreign_field): void
8782
{
88-
$column = AvgColumn::make('Average Age')
83+
self::$columnInstance
8984
->setDataSource($relation_name, $foreign_field)
9085
->sortable();
91-
$this->assertTrue($column->hasDataSource());
92-
$this->assertSame($relation_name, $column->getDataSource());
93-
$this->assertTrue($column->hasForeignColumn());
94-
$this->assertSame($foreign_field, $column->getForeignColumn());
86+
$this->assertTrue(self::$columnInstance->hasDataSource());
87+
$this->assertSame($relation_name, self::$columnInstance->getDataSource());
88+
$this->assertTrue(self::$columnInstance->hasForeignColumn());
89+
$this->assertSame($foreign_field, self::$columnInstance->getForeignColumn());
9590
}
9691

9792
#[DataProviderExternal(AggregateColumnProvider::class, 'relationshipProvider')]
9893
public function test_can_get_aggregate_method(string $relation_name, string $foreign_field): void
9994
{
100-
$column = AvgColumn::make('Average Age')
95+
self::$columnInstance
10196
->setDataSource($relation_name, $foreign_field)
10297
->sortable();
103-
$this->assertSame('avg', $column->getAggregateMethod());
104-
$column->setAggregateMethod('test_avg');
105-
$this->assertSame('test_avg', $column->getAggregateMethod());
98+
$this->assertSame('avg', self::$columnInstance->getAggregateMethod());
99+
self::$columnInstance->setAggregateMethod('test_avg');
100+
$this->assertSame('test_avg', self::$columnInstance->getAggregateMethod());
106101
}
107102

108103
#[DataProviderExternal(AggregateColumnProvider::class, 'relationshipProvider')]
109104
public function test_renders_correctly(string $relation_name, string $foreign_field): void
110105
{
111106
$rows = $this->speciesTable->getRows();
112-
$column = AvgColumn::make('Average Age')
107+
self::$columnInstance
113108
->setDataSource('pets', 'age');
114-
$contents = $column->getContents($rows->first());
109+
$contents = self::$columnInstance->getContents($rows->first());
115110
$this->assertSame('15', $contents);
116-
$contents = $column->getContents($rows[2]);
111+
$contents = self::$columnInstance->getContents($rows[2]);
117112
$this->assertSame('6', $contents);
118113
}
119114
}

tests/Unit/Views/Columns/BooleanColumnTest.php

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,15 @@
44

55
use PHPUnit\Framework\Attributes\Group;
66
use Rappasoft\LaravelLivewireTables\Tests\Models\Pet;
7-
use Rappasoft\LaravelLivewireTables\Tests\TestCase;
87
use Rappasoft\LaravelLivewireTables\Views\Columns\BooleanColumn;
98

109
#[Group('Columns')]
11-
final class BooleanColumnTest extends TestCase
10+
final class BooleanColumnTest extends ColumnTestCase
1211
{
13-
public function test_can_set_the_column_title(): void
12+
protected function setUp(): void
1413
{
15-
$column = BooleanColumn::make('Name', 'name');
16-
17-
$this->assertSame('Name', $column->getTitle());
14+
parent::setUp();
15+
self::$columnInstance = BooleanColumn::make('Name', 'name');
1816
}
1917

2018
public function test_can_render_field(): void
@@ -84,28 +82,27 @@ public function test_can_set_toggleable(): void
8482
{
8583
$column = BooleanColumn::make('Name', 'name');
8684

87-
$this->assertFalse($column->getIsToggleable());
88-
$this->assertNull($column->getToggleMethod());
89-
$column->toggleable('changeStatus');
90-
$this->assertTrue($column->getIsToggleable());
91-
$this->assertSame('changeStatus', $column->getToggleMethod());
85+
$this->assertFalse(self::$columnInstance->getIsToggleable());
86+
$this->assertNull(self::$columnInstance->getToggleMethod());
87+
self::$columnInstance->toggleable('changeStatus');
88+
$this->assertTrue(self::$columnInstance->getIsToggleable());
89+
$this->assertSame('changeStatus', self::$columnInstance->getToggleMethod());
9290
}
9391

9492
public function test_can_set_toggleable_with_confirm_message(): void
9593
{
96-
$column = BooleanColumn::make('Name', 'name')
97-
->toggleable('changeStatus');
94+
self::$columnInstance->toggleable('changeStatus');
9895

99-
$this->assertTrue($column->getIsToggleable());
100-
$this->assertSame('changeStatus', $column->getToggleMethod());
96+
$this->assertTrue(self::$columnInstance->getIsToggleable());
97+
$this->assertSame('changeStatus', self::$columnInstance->getToggleMethod());
10198

102-
$this->assertFalse($column->hasConfirmMessage());
99+
$this->assertFalse(self::$columnInstance->hasConfirmMessage());
103100

104-
$column->confirmMessage('Are you sure?');
101+
self::$columnInstance->confirmMessage('Are you sure?');
105102

106-
$this->assertTrue($column->hasConfirmMessage());
103+
$this->assertTrue(self::$columnInstance->hasConfirmMessage());
107104

108-
$this->assertSame('Are you sure?', $column->getConfirmMessage());
105+
$this->assertSame('Are you sure?', self::$columnInstance->getConfirmMessage());
109106
}
110107

111108
public function test_can_get_value(): void

tests/Unit/Views/Columns/ButtonGroupColumnTest.php

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,18 @@
44

55
use PHPUnit\Framework\Attributes\Group;
66
use Rappasoft\LaravelLivewireTables\Tests\Models\Pet;
7-
use Rappasoft\LaravelLivewireTables\Tests\TestCase;
87
use Rappasoft\LaravelLivewireTables\Views\Columns\ButtonGroupColumn;
98

109
#[Group('Columns')]
11-
final class ButtonGroupColumnTest extends TestCase
10+
final class ButtonGroupColumnTest extends ColumnTestCase
1211
{
13-
public function test_can_set_the_column_title(): void
12+
protected function setUp(): void
1413
{
15-
$column = ButtonGroupColumn::make('Name', 'name');
16-
17-
$this->assertSame('Name', $column->getTitle());
14+
parent::setUp();
15+
self::$columnInstance = ButtonGroupColumn::make('Name', 'name');
1816
}
1917

18+
2019
public function test_can_render_field(): void
2120
{
2221
$column = ButtonGroupColumn::make('Name')->getContents(Pet::find(1));

0 commit comments

Comments
 (0)