Skip to content

Commit

Permalink
Merge pull request #19 from techenby/amn/actions
Browse files Browse the repository at this point in the history
Update approve action to redirect and add to edit page
  • Loading branch information
mattstauffer authored Nov 25, 2024
2 parents 459727d + 8eeb2f5 commit 2484d06
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 0 deletions.
2 changes: 2 additions & 0 deletions app/Filament/Resources/SuggestedOrganizationResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ public static function table(Table $table): Table
->icon('heroicon-m-check-badge')
->action(function (SuggestedOrganization $record) {
(new ApproveSuggestedOrganization)($record);

return to_route('filament.bts.resources.organizations.edit', ['record' => str($record->name)->slug()]);
}),
Action::make('reject')
->requiresConfirmation()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

namespace App\Filament\Resources\SuggestedOrganizationResource\Pages;

use App\Actions\ApproveSuggestedOrganization;
use App\Filament\Resources\SuggestedOrganizationResource;
use App\Models\SuggestedOrganization;
use Filament\Actions\Action;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;

Expand All @@ -13,6 +16,15 @@ class EditSuggestedOrganization extends EditRecord
protected function getHeaderActions(): array
{
return [
Action::make('approve')
->visible($this->record->approved_at === null)
->requiresConfirmation()
->icon('heroicon-m-check-badge')
->action(function (SuggestedOrganization $record) {
(new ApproveSuggestedOrganization)($record);

return to_route('filament.bts.resources.organizations.edit', ['record' => str($record->name)->slug()]);
}),
DeleteAction::make(),
];
}
Expand Down
33 changes: 33 additions & 0 deletions tests/Feature/Filament/SuggestedOrganizationTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

use App\Filament\Resources\SuggestedOrganizationResource\Pages\EditSuggestedOrganization;
use App\Filament\Resources\SuggestedOrganizationResource\Pages\ListSuggestedOrganizations;
use App\Models\SuggestedOrganization;
use Livewire\Livewire;

it('can approve suggestion from table', function () {
$suggested = SuggestedOrganization::factory()->create(['name' => 'Shiz University']);

Livewire::test(ListSuggestedOrganizations::class, ['record' => $suggested->id])
->callTableAction('approve', $suggested->id)
->assertRedirect(route('filament.bts.resources.organizations.edit', ['record' => 'shiz-university']));

expect($suggested->fresh()->approved_at)->not->toBeNull();
});

it('can approve suggestion from edit page', function () {
$suggested = SuggestedOrganization::factory()->create(['name' => 'Shiz']);

Livewire::test(EditSuggestedOrganization::class, ['record' => $suggested->id])
->callAction('approve')
->assertRedirect(route('filament.bts.resources.organizations.edit', ['record' => 'shiz']));

expect($suggested->fresh()->approved_at)->not->toBeNull();
});

it('can hide approval button if already approved', function () {
$suggested = SuggestedOrganization::factory()->create(['approved_at' => now()]);

Livewire::test(EditSuggestedOrganization::class, ['record' => $suggested->id])
->assertActionHidden('approve');
});

0 comments on commit 2484d06

Please sign in to comment.