package operation

import (
	"testing"

	clusterapi "github.com/tidbcloud/devops/api/cluster"
	opapi "github.com/tidbcloud/devops/api/operation"
	opent "github.com/tidbcloud/devops/entity/operation"
	"github.com/tidbcloud/devops/pkg/infra/utils/test"

	. "github.com/onsi/ginkgo/v2"
	. "github.com/onsi/gomega"
)

func TestOperationController(t *testing.T) {
	RegisterFailHandler(Fail)
	RunSpecs(t, "Operation Controller Suite", test.ReporterConfig())
}

var _ = Describe("[OperationController]", func() {
	Describe("BuildParamToCreateInstance", func() {
		It("passes execution window to service param", func() {
			param := BuildParamToCreateInstance(&opapi.CreateInstanceReq{
				Type:      opent.OperationTargetCluster,
				Operation: "test-operation",
				Reason:    "reason",
				Params: map[string]string{
					"cluster_id": "1001",
				},
				ExecutionWindow: &clusterapi.CreateOpsExecutionWindowReq{
					StartAt: 100,
					EndAt:   200,
				},
			}, "operator@pingcap.com")

			Expect(param.ExecutionWindow).ShouldNot(BeNil())
			Expect(param.ExecutionWindow.StartAt).To(Equal(int64(100)))
			Expect(param.ExecutionWindow.EndAt).To(Equal(int64(200)))
		})
	})
})
