github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/healthz/db_indicator_test.go (about) 1 package healthz_test 2 3 import ( 4 "context" 5 "errors" 6 "testing" 7 8 "github.com/kyma-incubator/compass/components/director/internal/healthz/automock" 9 10 "github.com/kyma-incubator/compass/components/director/internal/healthz" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestNewDbIndicatorFunc(t *testing.T) { 15 t.Run("should return error when pinger fails", func(t *testing.T) { 16 // GIVEN 17 ctx := context.TODO() 18 pinger := &automock.Pinger{} 19 defer pinger.AssertExpectations(t) 20 pinger.On("PingContext", ctx).Return(errors.New("db error")) 21 22 // WHEN 23 dbIndFunc := healthz.NewDBIndicatorFunc(pinger) 24 status := dbIndFunc(ctx) 25 26 // THEN 27 require.NotNil(t, status) 28 require.Error(t, status.Error()) 29 require.Equal(t, "db error", status.Error().Error()) 30 require.Equal(t, "Error pinging database", status.Details()) 31 }) 32 33 t.Run("should return nil when pinger succeeds", func(t *testing.T) { 34 // GIVEN 35 ctx := context.TODO() 36 pinger := &automock.Pinger{} 37 defer pinger.AssertExpectations(t) 38 pinger.On("PingContext", ctx).Return(nil) 39 40 // WHEN 41 dbIndFunc := healthz.NewDBIndicatorFunc(pinger) 42 status := dbIndFunc(ctx) 43 44 // THEN 45 require.NotNil(t, status) 46 require.NoError(t, status.Error()) 47 require.Equal(t, "", status.Details()) 48 }) 49 }