package application import ( "context" "errors" "testing" ) type systemRepositoryStub struct { healthErr error ownerExists bool ownerErr error } func (s systemRepositoryStub) DatabaseHealth(context.Context) error { return s.healthErr } func (s systemRepositoryStub) OwnerExists(context.Context) (bool, error) { return s.ownerExists, s.ownerErr } func TestSystemServiceReadinessPropagatesDatabaseFailure(t *testing.T) { t.Parallel() want := errors.New("database unavailable") service := NewSystemService(systemRepositoryStub{healthErr: want}, "test") if err := service.Readiness(context.Background()); !errors.Is(err, want) { t.Fatalf("Readiness error = %v, want wrapped %v", err, want) } } func TestSystemServiceSetupStatusUsesPersistentOwnerState(t *testing.T) { t.Parallel() service := NewSystemService(systemRepositoryStub{ownerExists: true}, "test") status, err := service.SetupStatus(context.Background()) if err != nil { t.Fatalf("SetupStatus returned an error: %v", err) } if !status.Initialized || status.Phase != "phase-1" || status.Version != "test" { t.Fatalf("unexpected setup status: %#v", status) } }