package scheduled

import (
	"testing"
	"time"

	"github.com/stretchr/testify/assert"

	"github.com/pingcap/test-infra/common/model"
	"github.com/pingcap/test-infra/services/tcms/service/common"
	"github.com/pingcap/test-infra/services/tcms/utils"
)

func TestDailyRunThrottle(t *testing.T) {
	db, svc := setup(t)
	defer shotdown(db, svc)

	var (
		// 2021-10-28 08:38:20
		timeStart = time.Date(2021, 10, 28, 0, 0, 0, 0, time.Local)
	)

	NewDailyRunThrottle(db).cancelRedundantExecs(&timeStart)

	planExecs, _, err := svc.PlanExec.List(utils.FakeCtx(), common.PlanExecQueryOpts{
		Count: 10,
	})
	assert.NoError(t, err)
	assert.Equal(t, model.ExecutionStatusRunning, planExecs[5].Status)
	assert.Equal(t, model.ExecutionStatusCancelling, planExecs[6].Status)
	assert.Equal(t, model.ExecutionStatusCancelling, planExecs[7].Status)
	assert.Equal(t, CancelledNote, planExecs[7].Note)
	assert.Equal(t, model.ExecutionStatusPending, planExecs[8].Status)
}
