From d2eb039a2763c27e176249706d4b1115d8348bb5 Mon Sep 17 00:00:00 2001 From: thapacodes4u Date: Wed, 8 Oct 2025 19:59:16 +0545 Subject: [PATCH] fix: resolve intermittent menu test failures and translation display issues --- src/Models/Page.php | 7 ++++++- src/Models/Section.php | 14 +++++++++++--- tests/Unit/MenuItemTest.php | 18 +++++++++--------- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/Models/Page.php b/src/Models/Page.php index f59a7d2..d6b4c56 100644 --- a/src/Models/Page.php +++ b/src/Models/Page.php @@ -7,13 +7,18 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; +use Spatie\Translatable\HasTranslations; class Page extends Model { - use HasFactory, SoftDeletes; + use HasFactory, HasTranslations, SoftDeletes; protected $table = 'cms_pages'; + public array $translatable = [ + 'title', + ]; + protected $fillable = [ 'title', 'section_id', diff --git a/src/Models/Section.php b/src/Models/Section.php index e88d01d..8f534ab 100644 --- a/src/Models/Section.php +++ b/src/Models/Section.php @@ -7,17 +7,25 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Spatie\Translatable\HasTranslations; class Section extends Model { - use HasFactory, SoftDeletes; + use HasFactory, HasTranslations, SoftDeletes; protected $table = 'cms_sections'; - protected $casts = [ - 'type' => SectionType::class, + public array $translatable = [ + 'name', ]; + protected function casts(): array + { + return [ + 'type' => SectionType::class, + ]; + } + public function getFillable() { $attr = [ diff --git a/tests/Unit/MenuItemTest.php b/tests/Unit/MenuItemTest.php index 4f467da..ad1ec17 100644 --- a/tests/Unit/MenuItemTest.php +++ b/tests/Unit/MenuItemTest.php @@ -35,8 +35,8 @@ it('can have parent and children relationships', function () { $menu = Menu::factory()->create(); - $parent = Item::factory()->create(['menu_id' => $menu->id]); - $child = Item::factory()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id]); + $parent = Item::factory()->active()->create(['menu_id' => $menu->id]); + $child = Item::factory()->active()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id]); expect($child->parent)->toBeInstanceOf(Item::class) ->and($child->parent->id)->toBe($parent->id) @@ -193,8 +193,8 @@ it('can get tree formatted name', function () { $menu = Menu::factory()->create(); - $parent = Item::factory()->create(['menu_id' => $menu->id, 'label' => 'Parent']); - $child = Item::factory()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id, 'label' => 'Child']); + $parent = Item::factory()->active()->create(['menu_id' => $menu->id, 'label' => 'Parent']); + $child = Item::factory()->active()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id, 'label' => 'Child']); $parentFormatted = $parent->getTreeFormattedName(); $childFormatted = $child->getTreeFormattedName(); @@ -205,11 +205,11 @@ it('can get full path', function () { $menu = Menu::factory()->create(); - $parent = Item::factory()->create([ + $parent = Item::factory()->active()->create([ 'menu_id' => $menu->id, 'label' => ['en' => 'Parent Label'], ]); - $child = Item::factory()->create([ + $child = Item::factory()->active()->create([ 'menu_id' => $menu->id, 'parent_id' => $parent->id, 'label' => ['en' => 'Child Label'], @@ -234,9 +234,9 @@ it('deleting parent item cascades to delete children', function () { $menu = Menu::factory()->create(); - $parent = Item::factory()->create(['menu_id' => $menu->id]); - $child1 = Item::factory()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id]); - $child2 = Item::factory()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id]); + $parent = Item::factory()->active()->create(['menu_id' => $menu->id]); + $child1 = Item::factory()->active()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id]); + $child2 = Item::factory()->active()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id]); expect($parent->children)->toHaveCount(2); expect($child1->trashed())->toBeFalse();