...
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