From d253ec68e195848da7e555f1e25fa178d685e88a Mon Sep 17 00:00:00 2001 From: Bahman026 Date: Fri, 15 Aug 2025 16:06:21 +0330 Subject: [PATCH] feat(attribute): add color property to attributes - Add color field to Attribute model - Update AttributeResource to include color in form and table - Modify AttributeFactory to generate optional color - Update migration to add color column to attributes table - Adjust tests to include color in attribute creation and updates --- admin/app/Filament/Resources/AttributeResource.php | 7 +++++-- admin/app/Models/Attribute.php | 2 ++ admin/database/factories/AttributeFactory.php | 1 + .../2024_12_24_145428_create_attributes_table.php | 1 + .../Feature/Filament/Resource/AttributeResourceTest.php | 6 +++++- 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/admin/app/Filament/Resources/AttributeResource.php b/admin/app/Filament/Resources/AttributeResource.php index 3fd8668d..bee0152d 100644 --- a/admin/app/Filament/Resources/AttributeResource.php +++ b/admin/app/Filament/Resources/AttributeResource.php @@ -30,6 +30,9 @@ public static function form(Form $form): Form Forms\Components\TextInput::make('value') ->required() ->maxLength(255), + Forms\Components\TextInput::make('color') + ->nullable() + ->maxLength(31), ]); } @@ -40,8 +43,8 @@ public static function table(Table $table): Table Tables\Columns\TextColumn::make('attributeGroup.name') ->numeric() ->sortable(), - Tables\Columns\TextColumn::make('value') - ->searchable(), + Tables\Columns\TextColumn::make('value'), + Tables\Columns\TextColumn::make('color'), Tables\Columns\TextColumn::make('created_at') ->dateTime() ->sortable() diff --git a/admin/app/Models/Attribute.php b/admin/app/Models/Attribute.php index 2dd250f1..6af920d1 100644 --- a/admin/app/Models/Attribute.php +++ b/admin/app/Models/Attribute.php @@ -13,6 +13,7 @@ * * @property positive-int $id * @property positive-int $attribute_group_id + * @property string|null $color * @property string $value * @property AttributeGroup $attributeGroup */ @@ -23,6 +24,7 @@ class Attribute extends Model protected $fillable = [ 'attribute_group_id', 'value', + 'color', ]; public function attributeGroup(): BelongsTo diff --git a/admin/database/factories/AttributeFactory.php b/admin/database/factories/AttributeFactory.php index ceb8a4d7..bbfa1246 100644 --- a/admin/database/factories/AttributeFactory.php +++ b/admin/database/factories/AttributeFactory.php @@ -20,6 +20,7 @@ public function definition(): array return [ 'attribute_group_id' => AttributeGroup::factory(), 'value' => $this->faker->word, + 'color' => $this->faker->optional()->hexColor, ]; } } diff --git a/admin/database/migrations/2024_12_24_145428_create_attributes_table.php b/admin/database/migrations/2024_12_24_145428_create_attributes_table.php index 7cb5a3db..5bbdaf55 100644 --- a/admin/database/migrations/2024_12_24_145428_create_attributes_table.php +++ b/admin/database/migrations/2024_12_24_145428_create_attributes_table.php @@ -18,6 +18,7 @@ public function up(): void $table->id(); $table->foreignIdFor(AttributeGroup::class); $table->string('value'); + $table->string('color')->nullable(); $table->timestamps(); }); } diff --git a/admin/tests/Feature/Filament/Resource/AttributeResourceTest.php b/admin/tests/Feature/Filament/Resource/AttributeResourceTest.php index ec75f822..087333be 100644 --- a/admin/tests/Feature/Filament/Resource/AttributeResourceTest.php +++ b/admin/tests/Feature/Filament/Resource/AttributeResourceTest.php @@ -47,13 +47,15 @@ ->fillForm([ 'attribute_group_id' => $newAttribute->attribute_group_id, 'value' => $newAttribute->value, + 'color' => $newAttribute->color, ]) ->call('save') ->assertHasNoFormErrors(); expect($attribute->refresh()) ->attribute_group_id->toBe($newAttribute->attribute_group_id) - ->value->toBe($newAttribute->value); + ->value->toBe($newAttribute->value) + ->color->toBe($newAttribute->color); }); it('can create attribute model.', function () { @@ -64,6 +66,7 @@ ->fillForm([ 'attribute_group_id' => $newAttribute->attribute_group_id, 'value' => $newAttribute->value, + 'color' => $newAttribute->color, ]) ->call('create') ->assertHasNoFormErrors(); @@ -72,6 +75,7 @@ $this->assertDatabaseHas(Attribute::class, [ 'attribute_group_id' => $newAttribute->attribute_group_id, 'value' => $newAttribute->value, + 'color' => $newAttribute->color, ]); });