feat: implement formatContainerStatus helper for human-readable status formatting and add unit tests

This commit is contained in:
Andras Bacsai
2025-11-21 09:12:56 +01:00
parent 840d25a729
commit 01609e7f8b
4 changed files with 247 additions and 72 deletions

View File

@@ -90,31 +90,7 @@
@endcan
</span>
@endif
@php
// Transform colon format to human-readable format
// running:healthy → Running (healthy)
// running:unhealthy:excluded → Running (unhealthy, excluded)
$appStatus = $application->status;
$isExcluded = str($appStatus)->endsWith(':excluded');
$parts = explode(':', $appStatus);
if ($isExcluded) {
if (count($parts) === 3) {
// Has health status: running:unhealthy:excluded → Running (unhealthy, excluded)
$appStatus = str($parts[0])->headline() . ' (' . $parts[1] . ', excluded)';
} else {
// No health status: exited:excluded → Exited (excluded)
$appStatus = str($parts[0])->headline() . ' (excluded)';
}
} elseif (count($parts) >= 2 && !str($appStatus)->startsWith('Proxy')) {
// Regular colon format: running:healthy → Running (healthy)
$appStatus = str($parts[0])->headline() . ' (' . $parts[1] . ')';
} else {
// Simple status or already in parentheses format
$appStatus = str($appStatus)->headline();
}
@endphp
<div class="pt-2 text-xs">{{ $appStatus }}</div>
<div class="pt-2 text-xs">{{ formatContainerStatus($application->status) }}</div>
</div>
<div class="flex items-center px-4">
<a class="mx-4 text-xs font-bold hover:underline"
@@ -163,31 +139,7 @@
@if ($database->description)
<span class="text-xs">{{ Str::limit($database->description, 60) }}</span>
@endif
@php
// Transform colon format to human-readable format
// running:healthy → Running (healthy)
// running:unhealthy:excluded → Running (unhealthy, excluded)
$dbStatus = $database->status;
$isExcluded = str($dbStatus)->endsWith(':excluded');
$parts = explode(':', $dbStatus);
if ($isExcluded) {
if (count($parts) === 3) {
// Has health status: running:unhealthy:excluded → Running (unhealthy, excluded)
$dbStatus = str($parts[0])->headline() . ' (' . $parts[1] . ', excluded)';
} else {
// No health status: exited:excluded → Exited (excluded)
$dbStatus = str($parts[0])->headline() . ' (excluded)';
}
} elseif (count($parts) >= 2 && !str($dbStatus)->startsWith('Proxy')) {
// Regular colon format: running:healthy → Running (healthy)
$dbStatus = str($parts[0])->headline() . ' (' . $parts[1] . ')';
} else {
// Simple status or already in parentheses format
$dbStatus = str($dbStatus)->headline();
}
@endphp
<div class="text-xs">{{ $dbStatus }}</div>
<div class="text-xs">{{ formatContainerStatus($database->status) }}</div>
</div>
<div class="flex items-center px-4">
@if ($database->isBackupSolutionAvailable() || $database->is_migrated)