package metrics

import (
	"testing"

	redis "github.com/go-redis/redis/v8"
	"go.opencensus.io/metric/metricdata"
)

func Test_AddRedisMetrics(t *testing.T) {
	t.Parallel()

	tests := []struct {
		name string
		stat redis.PoolStats
		want int64
	}{
		{"redis_conns", redis.PoolStats{TotalConns: 7}, 7},
		{"redis_idle_conns", redis.PoolStats{IdleConns: 3}, 3},
		{"redis_miss_count_total", redis.PoolStats{Misses: 2}, 2},
	}

	labelValues := []metricdata.LabelValue{
		metricdata.NewLabelValue("redis"),
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			AddRedisMetrics(func() *redis.PoolStats { return &tt.stat })
			testMetricRetrieval(registry.registry.Read(), t, labelValues, tt.want, tt.name)
		})
	}
}