diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f15c4f..4fd2769 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - **BREAKING**: Require Laravel 11. +- **BREAKING**: Add enum `ResultState`. ## [0.5.2] - 2023-12-29 ### Added diff --git a/src/Enums/ResultState.php b/src/Enums/ResultState.php new file mode 100644 index 0000000..ac7accd --- /dev/null +++ b/src/Enums/ResultState.php @@ -0,0 +1,22 @@ + 3, + self::WARNING => 2, + self::OK => 1, + self::UNKNOWN => 0, + default => 0, + }; + } +} diff --git a/src/Result.php b/src/Result.php index 4927274..dae3b6c 100644 --- a/src/Result.php +++ b/src/Result.php @@ -2,37 +2,34 @@ namespace Butler\Health; +use Butler\Health\Enums\ResultState; + class Result { - public const OK = 'ok'; - public const WARNING = 'warning'; - public const CRITICAL = 'critical'; - public const UNKNOWN = 'unknown'; - public $value = null; - private function __construct(public string $message, public string $state) + private function __construct(public string $message, public ResultState $state) { } public static function ok(string $message): static { - return new static($message, static::OK); + return new static($message, ResultState::OK); } public static function warning(string $message): static { - return new static($message, static::WARNING); + return new static($message, ResultState::WARNING); } public static function critical(string $message): static { - return new static($message, static::CRITICAL); + return new static($message, ResultState::CRITICAL); } public static function unknown(string $message): static { - return new static($message, static::UNKNOWN); + return new static($message, ResultState::UNKNOWN); } public function value() @@ -44,24 +41,13 @@ public function value() return $this->value; } - public function order(): int - { - return match ($this->state) { - static::CRITICAL => 3, - static::WARNING => 2, - static::OK => 1, - static::UNKNOWN => 0, - default => 0, - }; - } - public function toArray(): array { return [ 'value' => $this->value, 'message' => $this->message, - 'state' => $this->state, - 'order' => $this->order(), + 'state' => $this->state->value, + 'order' => $this->state->order(), ]; } } diff --git a/tests/Checks/DatabaseCheckTest.php b/tests/Checks/DatabaseCheckTest.php index bb56b62..d02a768 100644 --- a/tests/Checks/DatabaseCheckTest.php +++ b/tests/Checks/DatabaseCheckTest.php @@ -3,7 +3,7 @@ namespace Butler\Tests\Health; use Butler\Health\Checks\Database; -use Butler\Health\Result; +use Butler\Health\Enums\ResultState; use Butler\Health\Tests\AbstractTestCase; use Illuminate\Support\Facades\DB; @@ -16,7 +16,7 @@ public function test_unknown_when_no_database_connections_exist() $result = (new Database())->run(); $this->assertEquals('No database connections found.', $result->message); - $this->assertEquals(Result::UNKNOWN, $result->state); + $this->assertEquals(ResultState::UNKNOWN, $result->state); $this->assertNull($result->value()); } @@ -34,7 +34,7 @@ public function test_ok_when_single_database_connection_succeeds() $result = (new Database())->run(); $this->assertEquals('Connected to the database.', $result->message); - $this->assertEquals(Result::OK, $result->state); + $this->assertEquals(ResultState::OK, $result->state); $this->assertEquals(1, $result->value()); } @@ -56,7 +56,7 @@ public function test_ok_when_multiple_database_connections_succeeds() $result = (new Database())->run(); $this->assertEquals('Connected to all 2 databases.', $result->message); - $this->assertEquals(Result::OK, $result->state); + $this->assertEquals(ResultState::OK, $result->state); $this->assertEquals(1, $result->value()); } @@ -76,7 +76,7 @@ public function test_ok_when_connection_was_disconnected() $result = (new Database())->run(); $this->assertEquals('Connected to the database.', $result->message); - $this->assertEquals(Result::OK, $result->state); + $this->assertEquals(ResultState::OK, $result->state); $this->assertEquals(1, $result->value()); } @@ -87,7 +87,7 @@ public function test_critical_when_one_database_connection_fails() $result = (new Database())->run(); $this->assertEquals('Not connected to the database.', $result->message); - $this->assertEquals(Result::CRITICAL, $result->state); + $this->assertEquals(ResultState::CRITICAL, $result->state); $this->assertEquals(0, $result->value()); } @@ -106,7 +106,7 @@ public function test_critical_when_one_of_multiple_database_connections_fails() $result = (new Database())->run(); $this->assertEquals('Connected to 1 of 2 databases.', $result->message); - $this->assertEquals(Result::CRITICAL, $result->state); + $this->assertEquals(ResultState::CRITICAL, $result->state); $this->assertEquals(0.5, $result->value()); } } diff --git a/tests/Checks/FailedJobsCheckTest.php b/tests/Checks/FailedJobsCheckTest.php index dff300e..582c9e7 100644 --- a/tests/Checks/FailedJobsCheckTest.php +++ b/tests/Checks/FailedJobsCheckTest.php @@ -3,7 +3,7 @@ namespace Butler\Health\Tests; use Butler\Health\Checks\FailedJobs; -use Butler\Health\Result; +use Butler\Health\Enums\ResultState; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; @@ -23,7 +23,7 @@ public function test_ok_when_no_failed_jobs_exist() $result = (new FailedJobs())->run(); $this->assertEquals('No failed jobs.', $result->message); - $this->assertEquals(Result::OK, $result->state); + $this->assertEquals(ResultState::OK, $result->state); $this->assertEquals(0, $result->value()); } @@ -37,7 +37,7 @@ public function test_critical_when_multiple_failed_jobs_exist() $result = (new FailedJobs())->run(); $this->assertEquals('2 failed jobs.', $result->message); - $this->assertEquals(Result::CRITICAL, $result->state); + $this->assertEquals(ResultState::CRITICAL, $result->state); $this->assertEquals(2, $result->value()); } @@ -48,7 +48,7 @@ public function test_critical_when_one_failed_job_exist() $result = (new FailedJobs())->run(); $this->assertEquals('One failed job.', $result->message); - $this->assertEquals(Result::CRITICAL, $result->state); + $this->assertEquals(ResultState::CRITICAL, $result->state); $this->assertEquals(1, $result->value()); } @@ -59,7 +59,7 @@ public function test_unknown_when_table_dont_exist() $result = (new FailedJobs())->run(); $this->assertEquals('Table foobar not found.', $result->message); - $this->assertEquals(Result::UNKNOWN, $result->state); + $this->assertEquals(ResultState::UNKNOWN, $result->state); $this->assertNull($result->value()); } } diff --git a/tests/Checks/RedisCheckTest.php b/tests/Checks/RedisCheckTest.php index 562c73c..33ca72d 100644 --- a/tests/Checks/RedisCheckTest.php +++ b/tests/Checks/RedisCheckTest.php @@ -3,7 +3,7 @@ namespace Butler\Tests\Health; use Butler\Health\Checks\Redis; -use Butler\Health\Result; +use Butler\Health\Enums\ResultState; use Butler\Health\Tests\AbstractTestCase; use Illuminate\Support\Facades\Redis as RedisClient; @@ -18,7 +18,7 @@ public function test_unknown_when_redis_extension_is_not_loaded() $result = (new Redis())->run(); $this->assertEquals('Redis extension not enabled.', $result->message); - $this->assertEquals(Result::UNKNOWN, $result->state); + $this->assertEquals(ResultState::UNKNOWN, $result->state); $this->assertNull($result->value()); } @@ -33,7 +33,7 @@ public function test_unknown_when_redis_host_is_undefined() $result = (new Redis())->run(); $this->assertEquals('Redis host undefined.', $result->message); - $this->assertEquals(Result::UNKNOWN, $result->state); + $this->assertEquals(ResultState::UNKNOWN, $result->state); $this->assertNull($result->value()); } @@ -50,7 +50,7 @@ public function test_ok() $result = (new Redis())->run(); $this->assertEquals('Connected to redis on localhost.', $result->message); - $this->assertEquals(Result::OK, $result->state); + $this->assertEquals(ResultState::OK, $result->state); $this->assertNull($result->value()); } }