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  }