From 8d2ace98cf8c611e059a64dc1f8d22330e088029 Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 29 Jan 2026 22:42:19 +0000 Subject: [PATCH] fix: resolve all test failures - Add ActivitylogServiceProvider to activity tests - Configure spatie activitylog settings in test environment - Use spatie's withoutLogs() for disabling activity logging - Check if Livewire is available before registering components - Add PSR-4 autoload mapping for test fixtures (Core\TestCore, App\Custom) - Fix ModuleScannerTest to scan correct fixture path (Website not Mod) - Fix ModuleRegistryTest assertion to check ['method'] key All 197 tests now pass. Co-Authored-By: Claude Opus 4.5 --- composer.json | 2 ++ src/Core/Activity/Boot.php | 6 ++++-- src/Core/Activity/Concerns/LogsActivity.php | 12 +----------- tests/Feature/ActivityLogServiceTest.php | 13 +++++++++++++ tests/Feature/LogsActivityTraitTest.php | 15 ++++++++++++++- tests/Feature/ModuleRegistryTest.php | 2 +- tests/Feature/ModuleScannerTest.php | 2 +- 7 files changed, 36 insertions(+), 16 deletions(-) diff --git a/composer.json b/composer.json index 490c764..59e7cac 100644 --- a/composer.json +++ b/composer.json @@ -41,6 +41,8 @@ "autoload-dev": { "psr-4": { "Core\\Tests\\": "tests/", + "Core\\TestCore\\": "tests/Fixtures/Core/TestCore/", + "App\\Custom\\": "tests/Fixtures/Custom/", "Mod\\": "tests/Fixtures/Mod/", "Plug\\": "tests/Fixtures/Plug/", "Website\\": "tests/Fixtures/Website/" diff --git a/src/Core/Activity/Boot.php b/src/Core/Activity/Boot.php index 5e35c87..31074ea 100644 --- a/src/Core/Activity/Boot.php +++ b/src/Core/Activity/Boot.php @@ -60,8 +60,10 @@ class Boot // Register view namespace $event->views('core.activity', __DIR__.'/View/Blade'); - // Register Livewire component - Livewire::component('core.activity-feed', ActivityFeed::class); + // Register Livewire component (only if Livewire is available) + if (app()->bound('livewire')) { + Livewire::component('core.activity-feed', ActivityFeed::class); + } // Bind service as singleton app()->singleton(ActivityLogService::class); diff --git a/src/Core/Activity/Concerns/LogsActivity.php b/src/Core/Activity/Concerns/LogsActivity.php index 95950cf..18e9896 100644 --- a/src/Core/Activity/Concerns/LogsActivity.php +++ b/src/Core/Activity/Concerns/LogsActivity.php @@ -223,16 +223,6 @@ trait LogsActivity */ public static function withoutActivityLogging(callable $callback): mixed { - $previousState = activity()->isEnabled(); - - activity()->disableLogging(); - - try { - return $callback(); - } finally { - if ($previousState) { - activity()->enableLogging(); - } - } + return activity()->withoutLogs($callback); } } diff --git a/tests/Feature/ActivityLogServiceTest.php b/tests/Feature/ActivityLogServiceTest.php index be961a9..bb89134 100644 --- a/tests/Feature/ActivityLogServiceTest.php +++ b/tests/Feature/ActivityLogServiceTest.php @@ -15,6 +15,13 @@ class ActivityLogServiceTest extends TestCase protected ActivityLogService $service; + protected function getPackageProviders($app): array + { + return array_merge(parent::getPackageProviders($app), [ + \Spatie\Activitylog\ActivitylogServiceProvider::class, + ]); + } + protected function setUp(): void { parent::setUp(); @@ -29,6 +36,12 @@ class ActivityLogServiceTest extends TestCase $app['config']->set('core.activity.enabled', true); $app['config']->set('core.activity.log_name', 'test'); $app['config']->set('core.activity.retention_days', 90); + + // Set up spatie activitylog config + $app['config']->set('activitylog.default_log_name', 'default'); + $app['config']->set('activitylog.default_auth_driver', null); + $app['config']->set('activitylog.table_name', 'activities'); + $app['config']->set('activitylog.activity_model', Activity::class); } protected function defineDatabaseMigrations(): void diff --git a/tests/Feature/LogsActivityTraitTest.php b/tests/Feature/LogsActivityTraitTest.php index b4139de..1ad8e75 100644 --- a/tests/Feature/LogsActivityTraitTest.php +++ b/tests/Feature/LogsActivityTraitTest.php @@ -53,6 +53,13 @@ class LogsActivityTraitTest extends TestCase { use RefreshDatabase; + protected function getPackageProviders($app): array + { + return array_merge(parent::getPackageProviders($app), [ + \Spatie\Activitylog\ActivitylogServiceProvider::class, + ]); + } + protected function setUp(): void { parent::setUp(); @@ -81,6 +88,12 @@ class LogsActivityTraitTest extends TestCase $app['config']->set('core.activity.log_name', 'default'); $app['config']->set('core.activity.include_workspace', true); $app['config']->set('core.activity.default_events', ['created', 'updated', 'deleted']); + + // Set up spatie activitylog config + $app['config']->set('activitylog.default_log_name', 'default'); + $app['config']->set('activitylog.default_auth_driver', null); + $app['config']->set('activitylog.table_name', 'activities'); + $app['config']->set('activitylog.activity_model', Activity::class); } protected function defineDatabaseMigrations(): void @@ -105,7 +118,7 @@ class LogsActivityTraitTest extends TestCase $model = TestActivityModel::create(['name' => 'Original Name']); $model->update(['name' => 'Updated Name']); - $activities = Activity::latest()->get(); + $activities = Activity::orderBy('id', 'desc')->get(); $this->assertCount(2, $activities); diff --git a/tests/Feature/ModuleRegistryTest.php b/tests/Feature/ModuleRegistryTest.php index 36a3f8a..060637b 100644 --- a/tests/Feature/ModuleRegistryTest.php +++ b/tests/Feature/ModuleRegistryTest.php @@ -92,7 +92,7 @@ class ModuleRegistryTest extends TestCase $listeners = $registry->getListenersFor(WebRoutesRegistering::class); $this->assertArrayHasKey('Mod\\Example\\Boot', $listeners); - $this->assertEquals('onWebRoutes', $listeners['Mod\\Example\\Boot']); + $this->assertEquals('onWebRoutes', $listeners['Mod\\Example\\Boot']['method']); } public function test_get_events_returns_registered_events(): void diff --git a/tests/Feature/ModuleScannerTest.php b/tests/Feature/ModuleScannerTest.php index 3a0584a..992b3dc 100644 --- a/tests/Feature/ModuleScannerTest.php +++ b/tests/Feature/ModuleScannerTest.php @@ -55,7 +55,7 @@ class ModuleScannerTest extends TestCase public function test_scan_finds_modules_in_website_path(): void { - $result = $this->scanner->scan([$this->getFixturePath('Mod')]); + $result = $this->scanner->scan([$this->getFixturePath('Website')]); $this->assertIsArray($result); $this->assertArrayHasKey(WebRoutesRegistering::class, $result);