package e2e

import (
	. "github.com/onsi/gomega"

	cloudv1 "github.com/tidbcloud/infra-api/api/v1"

	"time"

	"k8s.io/apimachinery/pkg/api/errors"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func TiCDCNormalDeploy(networkName, clusterName string, timeout, interval time.Duration) *cloudv1.TiCDC {
	TiCDC := newTiCDC(networkName, clusterName)
	Expect(infraCli.Create(ctx, TiCDC)).Should(Succeed())
	waitTiCDCReady(ctx, TiCDC, timeout, interval)
	return TiCDC
}

func TiCDCNetworkIsWrong(clusterName string) {
	networkName := "e2e"
	TiCDC := newTiCDC(networkName, clusterName)

	err := infraCli.Create(ctx, TiCDC)
	Expect(err).NotTo(BeNil())
	statusErr, ok := err.(*errors.StatusError)
	Expect(ok).Should(BeTrue())
	Expect(statusErr.ErrStatus.Status).Should(Equal("Failure"))
	Expect(statusErr.ErrStatus.Reason).Should(Equal(metav1.StatusReasonInvalid))
}

func TiCDCClusterIsWrong(networkName string) {
	clusterName := "e2e"
	TiCDC := newTiCDC(networkName, clusterName)

	err := infraCli.Create(ctx, TiCDC)
	Expect(err).NotTo(BeNil())
	statusErr, ok := err.(*errors.StatusError)
	Expect(ok).Should(BeTrue())
	Expect(statusErr.ErrStatus.Status).Should(Equal("Failure"))
	Expect(statusErr.ErrStatus.Reason).Should(Equal(metav1.StatusReasonInvalid))
}
