package options_test

import (
	"flag"
	"testing"

	"git.marketally.com/tutus-one/tutus-chain/cli/app"
	"git.marketally.com/tutus-one/tutus-chain/cli/options"
	"git.marketally.com/tutus-one/tutus-chain/internal/testcli"
	"github.com/stretchr/testify/require"
	"github.com/urfave/cli/v2"
)

func TestGetRPCClient(t *testing.T) {
	e := testcli.NewExecutor(t, true)

	t.Run("no endpoint", func(t *testing.T) {
		set := flag.NewFlagSet("flagSet", flag.ExitOnError)
		ctx := cli.NewContext(app.New(), set, nil)
		gctx, _ := options.GetTimeoutContext(ctx)
		_, ec := options.GetRPCClient(gctx, ctx)
		require.Equal(t, 1, ec.ExitCode())
	})

	t.Run("success", func(t *testing.T) {
		set := flag.NewFlagSet("flagSet", flag.ExitOnError)
		set.String(options.RPCEndpointFlag, "http://"+e.RPC.Addresses()[0], "")
		ctx := cli.NewContext(app.New(), set, nil)
		gctx, _ := options.GetTimeoutContext(ctx)
		_, ec := options.GetRPCClient(gctx, ctx)
		require.Nil(t, ec)
	})
}
