package handler

import (
	"context"
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/tidbcloud/observability/o11ymetering/pkg/common/constants"
	"github.com/tidbcloud/observability/o11ymetering/pkg/common/models"
	"github.com/tidbcloud/observability/pkg/common/configs"
	"github.com/tidbcloud/observability/pkg/common/structs"
)

func TestDryRun_Build(t *testing.T) {
	configs.Init(structs.ServiceInfo{
		Region: "us-east-1",
		Vendor: "aws",
	})
	h := &DryRun{Env: constants.Prod}
	task, err := h.Build(context.Background(), "2023-01-01 00:00:00")
	assert.NoError(t, err)
	assert.Equal(t, "us-east-1", task.Region)
	assert.Equal(t, constants.DryRunStatisticClass, task.StatisticClass)
}

func TestDryRun_Execute(t *testing.T) {
	configs.Init(structs.ServiceInfo{
		Region: "us-east-1",
		Vendor: "aws",
	})

	h := &DryRun{Env: constants.Dev}
	task := models.StatisticTask{
		ID: "123", Region: "us-east-1", StatisticClass: constants.DryRunStatisticClass,
		MeteringGroup: constants.DryRunMeteringGroup, Env: constants.Dev,
		Period: "2023-01-01 00:00:00", State: constants.StatePending,
	}
	records, err := h.Execute(context.Background(), task)
	assert.NoError(t, err)
	assert.Len(t, records, 1)
	assert.Equal(t, 1.0, records[0].Value)
	assert.Equal(t, constants.DryRunStatisticName, records[0].StatisticName)
}
