package service

import (
	"testing"

	"github.com/stretchr/testify/require"
	"github.com/tidbcloud/serverless-service/internal/domain/constant"
	"github.com/tidbcloud/serverless-service/internal/domain/entity"
)

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

	imp := &entity.Import{
		SourceURL:  "s3://bucket/",
		DataFormat: constant.ImportDataFormatCsv,
		TargetTableInfos: entity.TargetTableInfos{
			Infos: []entity.TargetTableInfo{
				{
					Schema:     "$hyper-prod",
					Table:      "$redirect",
					CustomFile: "s3://bucket/product_categories.csv",
				},
			},
		},
	}

	patterns := setFilePatternWithTargetTable(imp)
	require.Equal(t, []map[string]string{
		{
			"pattern": genCustomNamingRuleRegexp("product_categories.csv"),
			"schema":  "$$hyper-prod",
			"table":   "$$redirect",
			"type":    constant.ConvertDataFormat2Str(constant.ImportDataFormatCsv),
		},
	}, patterns)
}
