44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
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)
|
|
}
|
|
}
|