Skip to content

Commit c7ec9cf

Browse files
Merge pull request #334 from CodeWithDennis/can-update-record-test
Can update record test
2 parents 5e55a97 + 7505ace commit c7ec9cf

File tree

8 files changed

+85
-2
lines changed

8 files changed

+85
-2
lines changed

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ A package that creates PEST tests specifically tailored for your Filament compon
88
> [!CAUTION]
99
> This package is not ready yet, use it at your own risk. ⚠️
1010
11+
> [!NOTE]
12+
> This package requires that your models define model [factories](https://laravel.com/docs/master/database-testing#defining-model-factories).
13+
1114
## Installation
1215

1316
```bash
@@ -39,6 +42,11 @@ This package generates comprehensive PEST tests for your Filament resources. Her
3942
- [x] Max
4043
- [x] Min
4144
- [x] Required
45+
- **CanEditRecordTest** - Tests that a record can be edited
46+
- **CanValidateEditFormTest** - Tests that the edit form validates input correctly
47+
- [x] Max
48+
- [x] Min
49+
- [x] Required
4250

4351
### Page Rendering Tests
4452
- **CanRenderCreatePageTest** - Tests that the create page renders correctly

resources/views/resources/pages/create/can-create-record.blade.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
@php use Filament\Forms\Components\RichEditor; @endphp
21
it('can create a record', function (): void {
32
$record = {{ $getResourceModel() }}::factory()->make();
43

resources/views/resources/pages/create/can-validate-create-form-data.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
it('validates form data field :dataset', function (array $data, array $errors): void {
1+
it('validates create form data field :dataset', function (array $data, array $errors): void {
22
$record = {{ $getResourceModel() }}::factory()->make();
33

44
livewire({{ $getPageClass('create') }}::class)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
it('can update a record', function (): void {
2+
$record = {{ $getResourceModel() }}::factory()->create();
3+
$newRecord = {{ $getResourceModel() }}::factory()->make();
4+
5+
livewire({{ $getPageClass('edit') }}::class, ['record' => $record->getKey()])
6+
->fillForm([
7+
@foreach($getResourceFormFields() as $key => $field)
8+
'{{ $key }}' => $newRecord->{{ $key }},
9+
@endforeach
10+
])
11+
->call('save')
12+
->assertHasNoFormErrors()
13+
->assertNotified();
14+
15+
$this->assertDatabaseHas({{ $getResourceModel() }}::class, [
16+
@foreach($getResourceFormFields() as $key => $field)
17+
'{{ $key }}' => $newRecord->{{ $key }},
18+
@endforeach
19+
]);
20+
});
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
it('validates edit form data field :dataset', function (array $data, array $errors): void {
2+
$record = {{ $getResourceModel() }}::factory()->create();
3+
$newRecord = {{ $getResourceModel() }}::factory()->make();
4+
5+
livewire({{ $getPageClass('edit') }}::class, ['record' => $record->getKey()])
6+
->fillForm([
7+
...$data
8+
])
9+
->call('save')
10+
->assertHasFormErrors($errors)
11+
->assertNotified();
12+
})->with([
13+
@foreach($getResourceFormFieldsByRulePrefix('required') as $key => $field)
14+
'`{{ $key }}` is required' => [['{{ $key }}' => null], ['{{ $key }}' => 'required']],
15+
@endforeach
16+
@foreach($getResourceFormFieldsByRulePrefix('max') as $key => $field)
17+
'`{{ $key }}` is max {{ $getRuleValue($field, 'max') }} characters' => [['{{ $key }}' => Illuminate\Support\Str::random({{ $getRuleValue($field, 'max') + 1 }})], ['{{ $key }}' => 'max']],
18+
@endforeach
19+
@foreach($getResourceFormFieldsByRulePrefix('min') as $key => $field)
20+
'`{{ $key }}` is min {{ $getRuleValue($field, 'min') }} characters' => [['{{ $key }}' => Illuminate\Support\Str::random({{ $getRuleValue($field, 'min') - 1 }})], ['{{ $key }}' => 'min']],
21+
@endforeach
22+
]);

src/Commands/FilamentTestsCommand.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Create\CanValidateCreateFormData;
1212
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Edit\CanDeleteRecordTest;
1313
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Edit\CanRenderEditPageTest;
14+
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Edit\CanUpdateRecordTest;
15+
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Edit\CanValidateEditFormData;
1416
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Edit\HasHeaderActionTest;
1517
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Edit\HidesHeaderActionTest;
1618
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Edit\ShowsHeaderActionTest;
@@ -93,6 +95,8 @@ protected function getRenderers(): array
9395
HasFilterTest::class,
9496
CanCreateRecordTest::class,
9597
CanValidateCreateFormData::class,
98+
CanUpdateRecordTest::class,
99+
CanValidateEditFormData::class,
96100
];
97101
}
98102
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Edit;
4+
5+
use CodeWithDennis\FilamentTests\TestRenderers\BaseTest;
6+
7+
class CanUpdateRecordTest extends BaseTest
8+
{
9+
public ?string $view = 'filament-tests::resources.pages.edit.can-update-record';
10+
11+
public function getShouldRender(): bool
12+
{
13+
return $this->hasPage('edit');
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Edit;
4+
5+
use CodeWithDennis\FilamentTests\TestRenderers\BaseTest;
6+
7+
class CanValidateEditFormData extends BaseTest
8+
{
9+
public ?string $view = 'filament-tests::resources.pages.edit.can-validate-edit-form-data';
10+
11+
public function getShouldRender(): bool
12+
{
13+
return $this->hasPage('edit');
14+
}
15+
}

0 commit comments

Comments
 (0)