From 3d0ff403825f9798a116aee5d6cdcf38c59f017b Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Sat, 3 Jan 2026 15:23:37 +0100 Subject: [PATCH] Fix coupon enum formatting in Filament table --- .../Resources/Coupons/Tables/CouponsTable.php | 21 +++++++++++++++++-- tests/Unit/CouponsTableTest.php | 19 +++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 tests/Unit/CouponsTableTest.php diff --git a/app/Filament/Resources/Coupons/Tables/CouponsTable.php b/app/Filament/Resources/Coupons/Tables/CouponsTable.php index 4f2aa21..99725cb 100644 --- a/app/Filament/Resources/Coupons/Tables/CouponsTable.php +++ b/app/Filament/Resources/Coupons/Tables/CouponsTable.php @@ -40,7 +40,7 @@ class CouponsTable TextColumn::make('type') ->label(__('Type')) ->badge() - ->formatStateUsing(fn ($state) => Str::headline($state)) + ->formatStateUsing(fn ($state) => static::formatEnumState($state)) ->sortable(), TextColumn::make('amount') ->label(__('Amount')) @@ -59,7 +59,7 @@ class CouponsTable ->label(__('Status')) ->badge() ->sortable() - ->formatStateUsing(fn ($state) => Str::headline($state)), + ->formatStateUsing(fn ($state) => static::formatEnumState($state)), TextColumn::make('starts_at') ->label(__('Starts')) ->date() @@ -151,4 +151,21 @@ class CouponsTable ]), ]); } + + public static function formatEnumState(mixed $state): string + { + if ($state instanceof CouponType || $state instanceof CouponStatus) { + return $state->label(); + } + + if ($state instanceof \BackedEnum) { + return Str::headline($state->value); + } + + if (is_string($state)) { + return Str::headline($state); + } + + return ''; + } } diff --git a/tests/Unit/CouponsTableTest.php b/tests/Unit/CouponsTableTest.php new file mode 100644 index 0000000..cd1163d --- /dev/null +++ b/tests/Unit/CouponsTableTest.php @@ -0,0 +1,19 @@ +assertSame(CouponType::FLAT->label(), CouponsTable::formatEnumState(CouponType::FLAT)); + $this->assertSame(CouponStatus::PAUSED->label(), CouponsTable::formatEnumState(CouponStatus::PAUSED)); + $this->assertSame('Flat Per Seat', CouponsTable::formatEnumState('flat_per_seat')); + $this->assertSame('', CouponsTable::formatEnumState(null)); + } +}