package blocking

import (
	"context"
	"testing"

	"github.com/jackc/pgconn"
	"github.com/spf13/afero"
	"github.com/stretchr/testify/assert"
	"github.com/supabase/cli/pkg/pgtest"
)

var dbConfig = pgconn.Config{
	Host:     "127.0.0.1",
	Port:     5432,
	User:     "admin",
	Password: "password",
	Database: "postgres",
}

func TestBloatCommand(t *testing.T) {
	t.Run("inspects blocking", func(t *testing.T) {
		// Setup in-memory fs
		fsys := afero.NewMemMapFs()
		// Setup mock postgres
		conn := pgtest.NewConn()
		defer conn.Close(t)
		conn.Query(BlockingQuery).
			Reply("SELECT 1", Result{
				Blocked_pid:        1,
				Blocking_statement: "select 1",
				Blocking_duration:  "2s",
				Blocking_pid:       1,
				Blocked_statement:  "select 1",
				Blocked_duration:   "2s",
			})
		// Run test
		err := Run(context.Background(), dbConfig, fsys, conn.Intercept)
		// Check error
		assert.NoError(t, err)
	})
}
