package dm

import (
	"context"
	"testing"

	"github.com/stretchr/testify/require"
	commonpb "github.com/tidbcloud/dataflow-service/idl/pbgen/proto/common"
	dmpb "github.com/tidbcloud/dataflow-service/idl/pbgen/proto/dm"
)

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

	s := &dmService{}
	require.False(t, s.isEmptyBARules(&dmpb.BlockAllowRules{
		DoDbs: []string{"a"},
	}))
	require.False(t, s.isEmptyBARules(&dmpb.BlockAllowRules{
		DoTables: []*commonpb.Table{
			{Schema: "a", Table: "a"},
		},
	}))
	require.False(t, s.isEmptyBARules(&dmpb.BlockAllowRules{
		IgnoreDbs: []string{"a"},
	}))
	require.False(t, s.isEmptyBARules(&dmpb.BlockAllowRules{
		IgnoreTables: []*commonpb.Table{
			{Schema: "a", Table: "a"},
		},
	}))
	require.True(t, s.isEmptyBARules(&dmpb.BlockAllowRules{}))
}

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

	s := &dmService{}
	ctx := context.Background()
	_, err := s.GetSupportedSources(ctx, &dmpb.GetSupportedSourcesReq{Vendor: "other"})
	require.NoError(t, err)
	_, err = s.GetSupportedSources(ctx, &dmpb.GetSupportedSourcesReq{Vendor: "aws"})
	require.NoError(t, err)
	_, err = s.GetSupportedSources(ctx, &dmpb.GetSupportedSourcesReq{Vendor: "gcp"})
	require.NoError(t, err)
}
