package cluster

import (
	"github.com/tidbcloud/pkgv2/db"

	clusterrepo "github.com/tidbcloud/tidb-management-service/nextgen-global-service/domain/repository/cluster"
	reservedcapacitytemplaterepo "github.com/tidbcloud/tidb-management-service/nextgen-global-service/domain/repository/reservedcapacitytemplate"
	resourcepoolrepo "github.com/tidbcloud/tidb-management-service/nextgen-global-service/domain/repository/resourcepool"
	"github.com/tidbcloud/tidb-management-service/utilities/workflow"
)

// NewServiceForTest creates a serviceImpl with only the dependencies needed for
// Update-related unit tests. This avoids the full NewService constructor which
// registers DAGs and requires many more dependencies.
func NewServiceForTest(
	wf workflow.Workflow,
	transaction db.Transactioner,
	clusterRepo clusterrepo.Repo,
	resourcePoolRepo resourcepoolrepo.Repo,
	reservedCapacityTemplateRepo ...reservedcapacitytemplaterepo.Repo,
) Service {
	var templateRepo reservedcapacitytemplaterepo.Repo
	if len(reservedCapacityTemplateRepo) > 0 {
		templateRepo = reservedCapacityTemplateRepo[0]
	}

	return &serviceImpl{
		workflow:                     wf,
		transaction:                  transaction,
		clusterRepo:                  clusterRepo,
		resourcePoolRepo:             resourcePoolRepo,
		reservedCapacityTemplateRepo: templateRepo,
	}
}
