package hook

import (
	"context"
	"testing"

	"github.com/stretchr/testify/assert"

	"github.com/tidbcloud/pov-service/internal/model"
	"github.com/tidbcloud/pov-service/internal/service/workload/task"
)

func TestSendEmailAtClusterComplete_MatchAndDo(t *testing.T) {
	fcli := &fakeEmailClient{}
	h := NewSendEmailAtClusterComplete(fcli, "tmpl-cluster-complete", "noreply@example.com")

	test := baseTest()
	test.IsAuto = false
	test.Phase = model.WorkloadTestPhasePrepareData
	test.Tasks = []model.WorkloadTask[any]{
		{WorkloadTaskBase: model.WorkloadTaskBase{
			Typ:      model.WorkloadTaskTypeCreateCluster,
			Phase:    model.WorkloadTaskPhaseCompleted,
			ExecBase: model.ExecBase{Status: model.ExecStatusCompleted}}},
	}

	proc := task.CreateClusterRunningProcessor{}
	matched := h.Match(&proc, test)
	assert.True(t, matched)

	err := h.Do(context.Background(), test)
	assert.NoError(t, err)
	assert.Equal(t, 1, fcli.called)
	assert.Equal(t, "tmpl-cluster-complete", fcli.lastReq.TemplateID)
}
