...

Source file src/github.com/cybertec-postgresql/pgwatch/v3/internal/reaper/database_test.go

Documentation: github.com/cybertec-postgresql/pgwatch/v3/internal/reaper

     1  package reaper
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/cybertec-postgresql/pgwatch/v3/internal/metrics"
     8  	"github.com/cybertec-postgresql/pgwatch/v3/internal/sources"
     9  	pgxmock "github.com/pashagolub/pgxmock/v4"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestTryCreateMetricsFetchingHelpers(t *testing.T) {
    14  	ctx := context.Background()
    15  	mock, err := pgxmock.NewPool()
    16  	assert.NoError(t, err)
    17  	defer mock.Close()
    18  
    19  	metricDefs.MetricDefs["metric1"] = metrics.Metric{
    20  		InitSQL: "CREATE FUNCTION metric1",
    21  	}
    22  
    23  	md := &sources.SourceConn{
    24  		Conn: mock,
    25  		Source: sources.Source{
    26  			Name:           "testdb",
    27  			Metrics:        map[string]float64{"metric1": 42, "nonexistent": 0},
    28  			MetricsStandby: map[string]float64{"metric1": 42},
    29  		},
    30  	}
    31  
    32  	t.Run("success", func(t *testing.T) {
    33  		mock.ExpectExec("CREATE FUNCTION metric1").WillReturnResult(pgxmock.NewResult("CREATE", 1))
    34  
    35  		err = TryCreateMetricsFetchingHelpers(ctx, md)
    36  		assert.NoError(t, err)
    37  		assert.NoError(t, mock.ExpectationsWereMet())
    38  	})
    39  
    40  	t.Run("error on exec", func(t *testing.T) {
    41  		mock.ExpectExec("CREATE FUNCTION metric1").WillReturnError(assert.AnError)
    42  
    43  		err = TryCreateMetricsFetchingHelpers(ctx, md)
    44  		assert.Error(t, err)
    45  		assert.NoError(t, mock.ExpectationsWereMet())
    46  	})
    47  
    48  }
    49