assertNotFalse($contents, "Could not read {$rel}"); $this->assertStringNotContainsString('docker-compose.prod.yml', $contents, "{$rel} still shows docker-compose.prod.yml"); } } public function test_operator_update_instructions_use_the_short_command(): void { foreach (self::UPDATE_COMMAND_SURFACES as $rel) { $contents = file_get_contents(base_path($rel)); $this->assertNotFalse($contents, "Could not read {$rel}"); $this->assertStringNotContainsString('sudo ./update.sh', $contents, "{$rel} still shows the long update command"); } } public function test_versions_panel_shows_the_short_update_command(): void { $blade = file_get_contents(base_path('resources/views/livewire/versions/index.blade.php')); $this->assertStringContainsString('sudo clusev update', $blade); $this->assertStringNotContainsString('docker compose -f', $blade); } public function test_reset_hints_use_the_short_host_command(): void { foreach (['de', 'en'] as $locale) { $settings = require base_path("lang/{$locale}/settings.php"); $system = require base_path("lang/{$locale}/system.php"); $this->assertStringContainsString('clusev reset-admin', $settings['recovery_note']); $this->assertStringContainsString('clusev reset-admin', $system['ssh_reset_hint']); } } public function test_motd_uses_short_commands(): void { $motd = file_get_contents(base_path('docker/motd/00-clusev')); $this->assertStringContainsString('clusev ps | logs | restart', $motd); $this->assertStringContainsString('sudo clusev update', $motd); $this->assertStringContainsString('clusev reset-admin', $motd); } }