.*?)\n \}/s', $componentSource, $matches); expect($matches['body'] ?? '') ->toContain('$this->sentinelUpdatedAt = $this->server->sentinel_updated_at;') ->not->toContain('$this->syncData();'); }); it('dispatches a server navbar refresh after toggling sentinel', function () { $componentSource = file_get_contents(app_path('Livewire/Server/Sentinel.php')); preg_match('/public function toggleSentinel\([^)]*\).*?\{(?.*?) \}/s', $componentSource, $matches); expect($matches['body'] ?? '') ->toContain("\$this->dispatch('refreshServerShow');"); }); it('only marks sentinel enabled after startup succeeds', function () { $componentSource = file_get_contents(app_path('Livewire/Server/Sentinel.php')); preg_match('/public function toggleSentinel\([^)]*\).*?\{(?.*?)\n \}/s', $componentSource, $matches); $toggleBody = $matches['body'] ?? ''; expect(strpos($toggleBody, 'StartSentinel::run'))->toBeLessThan( strpos($toggleBody, '$this->isSentinelEnabled = true;') ); }); it('does not repeat a disabled status badge in the sentinel empty state', function () { $view = file_get_contents(resource_path('views/livewire/server/sentinel.blade.php')); expect($view)->not->toContain("? 'Disabled'"); });