diff --git a/composer.json b/composer.json index 4ec1fd2..fb0c366 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,8 @@ "php": "^8.1", "justbetter/laravel-akeneo-client": "^1.1", "justbetter/laravel-error-logger": "^2.3", - "laravel/framework": "^10.0" + "laravel/framework": "^10.0", + "spatie/laravel-activitylog": "^4.7" }, "require-dev": { "laravel/pint": "^1.10", diff --git a/src/Jobs/UpdateProductJob.php b/src/Jobs/UpdateProductJob.php index c51786b..6672b8f 100644 --- a/src/Jobs/UpdateProductJob.php +++ b/src/Jobs/UpdateProductJob.php @@ -10,6 +10,7 @@ use Illuminate\Queue\SerializesModels; use JustBetter\AkeneoProducts\Contracts\UpdatesProduct; use JustBetter\AkeneoProducts\Models\Product; +use Throwable; class UpdateProductJob implements ShouldQueue, ShouldBeUnique { @@ -41,8 +42,19 @@ public function tags(): array ]; } - public function failed(): void + public function failed(Throwable $throwable): void { $this->product->failed(); + + activity() + ->on($this->product) + ->withProperties([ + 'message' => $throwable->getMessage(), + 'code' => $throwable->getCode(), + 'metadata' => [ + 'level' => 'error', + ], + ]) + ->log('Failed to update product in Akeneo'); } } diff --git a/tests/Jobs/UpdateProductJobTest.php b/tests/Jobs/UpdateProductJobTest.php index fe7869a..4c71f4d 100644 --- a/tests/Jobs/UpdateProductJobTest.php +++ b/tests/Jobs/UpdateProductJobTest.php @@ -2,6 +2,7 @@ namespace JustBetter\AkeneoProducts\Tests\Jobs; +use Exception; use JustBetter\AkeneoProducts\Contracts\UpdatesProduct; use JustBetter\AkeneoProducts\Jobs\UpdateProductJob; use JustBetter\AkeneoProducts\Models\Product; @@ -39,7 +40,7 @@ public function it_can_fail(): void ]); $job = new UpdateProductJob($product); - $job->failed(); + $job->failed(new Exception); $this->assertNotNull($product->failed_at); } diff --git a/tests/TestCase.php b/tests/TestCase.php index f3ad352..db7cee8 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -6,6 +6,7 @@ use JustBetter\AkeneoClient\ServiceProvider as AkeneoServiceProvider; use JustBetter\AkeneoProducts\ServiceProvider; use Orchestra\Testbench\TestCase as BaseTestCase; +use Spatie\Activitylog\ActivitylogServiceProvider; abstract class TestCase extends BaseTestCase { @@ -16,6 +17,7 @@ protected function getPackageProviders($app): array return [ ServiceProvider::class, AkeneoServiceProvider::class, + ActivitylogServiceProvider::class, ]; } @@ -27,5 +29,7 @@ protected function defineEnvironment($app): void 'database' => ':memory:', 'prefix' => '', ]); + + activity()->disableLogging(); } }