Skip to content

Commit 2942dcd

Browse files
committed
Centralise tests on base classes
1 parent d1f6a2e commit 2942dcd

25 files changed

+137
-768
lines changed

tests/Http/Livewire/BaseTable.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Tests\Http\Livewire;
4+
5+
use Rappasoft\LaravelLivewireTables\DataTableComponent;
6+
7+
abstract class BaseTable extends DataTableComponent
8+
{
9+
10+
public string $paginationTest = 'standard';
11+
12+
public function enableDetailedPagination(string $type = 'standard')
13+
{
14+
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
15+
$this->setPaginationMethod($type);
16+
$this->setDisplayPaginationDetailsEnabled();
17+
18+
}
19+
20+
public function disableDetailedPagination(string $type = 'standard')
21+
{
22+
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
23+
$this->setPaginationMethod($type);
24+
$this->setDisplayPaginationDetailsDisabled();
25+
}
26+
27+
public function setPaginationTest(string $type)
28+
{
29+
$this->paginationTest = $type;
30+
}
31+
32+
public function bootAll()
33+
{
34+
$view = view('livewire-tables::datatable');
35+
36+
$this->boot();
37+
$this->bootedComponentUtilities();
38+
$this->bootedManagesFilters();
39+
$this->bootedWithColumns();
40+
$this->bootedWithColumnSelect();
41+
$this->booted();
42+
$this->mountManagesFilters();
43+
$this->mountComponentUtilities();
44+
$this->mountWithSorting();
45+
$this->renderAll($view);
46+
}
47+
public function renderAll($view = null)
48+
{
49+
if (is_null($view))
50+
{
51+
$view = view('livewire-tables::datatable');
52+
}
53+
$this->renderingWithColumns($view, $view->getData());
54+
$this->renderingWithColumnSelect($view, $view->getData());
55+
$this->renderingWithCustomisations($view, $view->getData());
56+
$this->renderingWithData($view, $view->getData());
57+
$this->renderingWithReordering($view, $view->getData());
58+
$this->renderingWithPagination($view, $view->getData());
59+
$this->render();
60+
return $view;
61+
}
62+
}

tests/Http/Livewire/BreedsTable.php

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace Rappasoft\LaravelLivewireTables\Tests\Http\Livewire;
44

55
use Illuminate\Database\Eloquent\Builder;
6-
use Rappasoft\LaravelLivewireTables\DataTableComponent;
76
use Rappasoft\LaravelLivewireTables\Tests\Models\Breed;
87
use Rappasoft\LaravelLivewireTables\Tests\Models\Pet;
98
use Rappasoft\LaravelLivewireTables\Tests\Models\Species;
@@ -18,32 +17,10 @@
1817
use Rappasoft\LaravelLivewireTables\Views\Filters\SelectFilter;
1918
use Rappasoft\LaravelLivewireTables\Views\Filters\TextFilter;
2019

21-
class BreedsTable extends DataTableComponent
20+
class BreedsTable extends BaseTable
2221
{
2322
public $model = Breed::class;
2423

25-
public string $paginationTest = 'standard';
26-
27-
public function enableDetailedPagination(string $type = 'standard')
28-
{
29-
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
30-
$this->setPaginationMethod($type);
31-
$this->setDisplayPaginationDetailsEnabled();
32-
33-
}
34-
35-
public function disableDetailedPagination(string $type = 'standard')
36-
{
37-
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
38-
$this->setPaginationMethod($type);
39-
$this->setDisplayPaginationDetailsDisabled();
40-
}
41-
42-
public function setPaginationTest(string $type)
43-
{
44-
$this->paginationTest = $type;
45-
}
46-
4724
public function configure(): void
4825
{
4926
$this->setPrimaryKey('id');

tests/Http/Livewire/FailingTables/BrokenSecondaryHeaderTable.php

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,12 @@
88
use Rappasoft\LaravelLivewireTables\Views\Column;
99
use Rappasoft\LaravelLivewireTables\Views\Columns\{ImageColumn,LinkColumn};
1010
use Rappasoft\LaravelLivewireTables\Views\Filters\{DateFilter,DateTimeFilter,MultiSelectDropdownFilter,MultiSelectFilter,NumberFilter,SelectFilter,TextFilter};
11+
use Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\BaseTable;
1112

12-
class BrokenSecondaryHeaderTable extends DataTableComponent
13+
class BrokenSecondaryHeaderTable extends BaseTable
1314
{
1415
public $model = Pet::class;
1516

16-
public string $paginationTest = 'standard';
17-
18-
public function enableDetailedPagination(string $type = 'standard')
19-
{
20-
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
21-
$this->setPaginationMethod($type);
22-
$this->setDisplayPaginationDetailsEnabled();
23-
24-
}
25-
26-
public function disableDetailedPagination(string $type = 'standard')
27-
{
28-
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
29-
$this->setPaginationMethod($type);
30-
$this->setDisplayPaginationDetailsDisabled();
31-
}
32-
33-
public function setPaginationTest(string $type)
34-
{
35-
$this->paginationTest = $type;
36-
}
3717

3818
public function configure(): void
3919
{

tests/Http/Livewire/FailingTables/NoBuildMethodTable.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
use Rappasoft\LaravelLivewireTables\Views\Filters\NumberFilter;
1717
use Rappasoft\LaravelLivewireTables\Views\Filters\SelectFilter;
1818
use Rappasoft\LaravelLivewireTables\Views\Filters\TextFilter;
19+
use Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\BaseTable;
1920

20-
class NoBuildMethodTable extends DataTableComponent
21+
class NoBuildMethodTable extends BaseTable
2122
{
2223
public function configure(): void
2324
{

tests/Http/Livewire/FailingTables/NoColumnsTable.php

Lines changed: 2 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -2,95 +2,17 @@
22

33
namespace Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\FailingTables;
44

5-
use Illuminate\Database\Eloquent\Builder;
6-
use Rappasoft\LaravelLivewireTables\DataTableComponent;
7-
use Rappasoft\LaravelLivewireTables\Tests\Models\Breed;
85
use Rappasoft\LaravelLivewireTables\Tests\Models\Pet;
9-
use Rappasoft\LaravelLivewireTables\Tests\Models\Species;
10-
use Rappasoft\LaravelLivewireTables\Views\Filters\DateFilter;
11-
use Rappasoft\LaravelLivewireTables\Views\Filters\DateTimeFilter;
12-
use Rappasoft\LaravelLivewireTables\Views\Filters\MultiSelectDropdownFilter;
13-
use Rappasoft\LaravelLivewireTables\Views\Filters\MultiSelectFilter;
14-
use Rappasoft\LaravelLivewireTables\Views\Filters\NumberFilter;
15-
use Rappasoft\LaravelLivewireTables\Views\Filters\SelectFilter;
16-
use Rappasoft\LaravelLivewireTables\Views\Filters\TextFilter;
6+
use Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\PetsTable;
177

18-
class NoColumnsTable extends DataTableComponent
8+
class NoColumnsTable extends PetsTable
199
{
2010
public $model = Pet::class;
2111

22-
public function configure(): void
23-
{
24-
$this->setPrimaryKey('id');
25-
}
26-
2712
public function columns(): array
2813
{
2914
return [
3015
];
3116
}
3217

33-
public function filters(): array
34-
{
35-
return [
36-
MultiSelectFilter::make('Breed')
37-
->options(
38-
Breed::query()
39-
->orderBy('name')
40-
->get()
41-
->keyBy('id')
42-
->map(fn ($breed) => $breed->name)
43-
->toArray()
44-
)
45-
->filter(function (Builder $builder, array $values) {
46-
return $builder->whereIn('breed_id', $values);
47-
}),
48-
MultiSelectDropdownFilter::make('Species')
49-
->options(
50-
Species::query()
51-
->orderBy('name')
52-
->get()
53-
->keyBy('id')
54-
->map(fn ($species) => $species->name)
55-
->toArray()
56-
)
57-
->filter(function (Builder $builder, array $values) {
58-
return $builder->whereIn('species_id', $values);
59-
}),
60-
NumberFilter::make('Breed ID', 'breed_id_filter')
61-
->filter(function (Builder $builder, string $value) {
62-
return $builder->where('breed_id', '=', $value);
63-
}),
64-
65-
TextFilter::make('Pet Name', 'pet_name_filter')
66-
->filter(function (Builder $builder, string $value) {
67-
return $builder->where('pets.name', '=', $value);
68-
}),
69-
70-
DateFilter::make('Last Visit After Date', 'last_visit_date_filter')
71-
->filter(function (Builder $builder, string $value) {
72-
return $builder->whereDate('pets.last_visit', '=>', $value);
73-
}),
74-
75-
DateTimeFilter::make('Last Visit Before DateTime', 'last_visit_datetime_filter')
76-
->filter(function (Builder $builder, string $value) {
77-
return $builder->whereDate('pets.last_visit', '<=', $value);
78-
}),
79-
80-
SelectFilter::make('Breed SelectFilter', 'breed_select_filter')
81-
->options(
82-
Breed::query()
83-
->orderBy('name')
84-
->get()
85-
->keyBy('id')
86-
->map(fn ($breed) => $breed->name)
87-
->toArray()
88-
)
89-
->filter(function (Builder $builder, string $value) {
90-
return $builder->where('breed_id', $value);
91-
})
92-
->setCustomFilterLabel('livewire-tables::tests.testFilterLabel')
93-
->setFilterPillBlade('livewire-tables::tests.testFilterPills'),
94-
];
95-
}
9618
}

tests/Http/Livewire/FailingTables/NoPrimaryKeyTable.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717
use Rappasoft\LaravelLivewireTables\Views\Filters\NumberFilter;
1818
use Rappasoft\LaravelLivewireTables\Views\Filters\SelectFilter;
1919
use Rappasoft\LaravelLivewireTables\Views\Filters\TextFilter;
20+
use Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\BaseTable;
2021

21-
class NoPrimaryKeyTable extends DataTableComponent
22+
class NoPrimaryKeyTable extends BaseTable
2223
{
2324
public $model = Pet::class;
2425

tests/Http/Livewire/PetsTable.php

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
use Illuminate\Database\Eloquent\Builder;
66
use Illuminate\Support\Facades\App;
77
use Livewire\Attributes\On;
8-
use Rappasoft\LaravelLivewireTables\DataTableComponent;
98
use Rappasoft\LaravelLivewireTables\Tests\Models\Breed;
109
use Rappasoft\LaravelLivewireTables\Tests\Models\Pet;
1110
use Rappasoft\LaravelLivewireTables\Tests\Models\Species;
@@ -20,36 +19,15 @@
2019
use Rappasoft\LaravelLivewireTables\Views\Filters\SelectFilter;
2120
use Rappasoft\LaravelLivewireTables\Views\Filters\TextFilter;
2221

23-
class PetsTable extends DataTableComponent
22+
class PetsTable extends BaseTable
2423
{
2524
public $model = Pet::class;
2625

27-
public string $paginationTest = 'standard';
28-
2926
public function changeLocale(string $locale)
3027
{
3128
App::setLocale($locale);
3229
}
3330

34-
public function enableDetailedPagination(string $type = 'standard')
35-
{
36-
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
37-
$this->setPaginationMethod($type);
38-
$this->setDisplayPaginationDetailsEnabled();
39-
40-
}
41-
42-
public function disableDetailedPagination(string $type = 'standard')
43-
{
44-
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
45-
$this->setPaginationMethod($type);
46-
$this->setDisplayPaginationDetailsDisabled();
47-
}
48-
49-
public function setPaginationTest(string $type)
50-
{
51-
$this->paginationTest = $type;
52-
}
5331

5432
public function configure(): void
5533
{
@@ -174,4 +152,6 @@ public function filters(): array
174152
->setFilterPillBlade('livewire-tables::tests.testFilterPills'),
175153
];
176154
}
155+
156+
177157
}

0 commit comments

Comments
 (0)