From 0d5800221fb52127b701256c918d24c2fc37824f Mon Sep 17 00:00:00 2001 From: Mitch Schwenk Date: Sat, 11 Apr 2026 14:59:56 -0700 Subject: [PATCH] Names for attribute groups we being listed twice. The names would be listed twice for both the attribute groups and the attribute names within a group. This fixes that. Includes testing for this fix too. --- .../Tables/Columns/TranslatedTextColumn.php | 4 +-- .../Pages/ListAttributeGroupsTest.php | 28 +++++++++++++++++++ .../AttributesRelationManagerTest.php | 18 ++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 tests/admin/Feature/Filament/Resources/AttributeGroupResource/Pages/ListAttributeGroupsTest.php diff --git a/packages/admin/src/Support/Tables/Columns/TranslatedTextColumn.php b/packages/admin/src/Support/Tables/Columns/TranslatedTextColumn.php index 473afbdb48..b8e5eed2e0 100644 --- a/packages/admin/src/Support/Tables/Columns/TranslatedTextColumn.php +++ b/packages/admin/src/Support/Tables/Columns/TranslatedTextColumn.php @@ -18,7 +18,7 @@ protected function setUp(): void $name = $this->getName(); - $this->formatStateUsing(static function (Model $record) use ($name) { + $this->state(static function (Model $record) use ($name) { return $record->translate($name); }); } @@ -58,7 +58,7 @@ public function attributeData(): static $name = $this->getFieldHydrated(); - $this->formatStateUsing(static function (Model $record) use ($name) { + $this->state(static function (Model $record) use ($name) { return $record->translateAttribute($name); }); diff --git a/tests/admin/Feature/Filament/Resources/AttributeGroupResource/Pages/ListAttributeGroupsTest.php b/tests/admin/Feature/Filament/Resources/AttributeGroupResource/Pages/ListAttributeGroupsTest.php new file mode 100644 index 0000000000..b0031bbaad --- /dev/null +++ b/tests/admin/Feature/Filament/Resources/AttributeGroupResource/Pages/ListAttributeGroupsTest.php @@ -0,0 +1,28 @@ +group('resource.attribute-group'); + +it('can render attribute group index page', function () { + $this->asStaff(admin: true) + ->get(AttributeGroupResource::getUrl('index')) + ->assertSuccessful(); +}); + +it('shows translated attribute group names as a single state', function () { + $this->asStaff(); + + $attributeGroup = AttributeGroup::factory()->create([ + 'name' => ['en' => 'Details'], + ]); + + Livewire::test(ListAttributeGroups::class) + ->assertCountTableRecords(1) + ->assertTableColumnStateSet('name', 'Details', $attributeGroup); +}); diff --git a/tests/admin/Feature/Filament/Resources/AttributeGroupResource/RelationManagers/AttributesRelationManagerTest.php b/tests/admin/Feature/Filament/Resources/AttributeGroupResource/RelationManagers/AttributesRelationManagerTest.php index 3139ff0394..eae310cc8a 100644 --- a/tests/admin/Feature/Filament/Resources/AttributeGroupResource/RelationManagers/AttributesRelationManagerTest.php +++ b/tests/admin/Feature/Filament/Resources/AttributeGroupResource/RelationManagers/AttributesRelationManagerTest.php @@ -27,6 +27,24 @@ ])->assertSuccessful(); }); +it('shows translated attribute names as a single state', function () { + $this->asStaff(); + + $attributeGroup = AttributeGroup::factory()->create(); + + $attribute = Attribute::factory()->create([ + 'attribute_group_id' => $attributeGroup->id, + 'name' => ['en' => 'Details'], + ]); + + Livewire::test(AttributesRelationManager::class, [ + 'ownerRecord' => $attributeGroup, + 'pageClass' => EditAttributeGroup::class, + ]) + ->assertCountTableRecords(1) + ->assertTableColumnStateSet('name', 'Details', $attribute); +}); + it('can create attributes', function ($type, $configuration = [], $expectedData = []) { $lang = Language::factory()->create([