package br

import (
	"testing"
	"time"

	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"

	"github.com/tidbcloud/tidb-management-service/nextgen-global-service/domain/entity"
	"github.com/tidbcloud/tidb-management-service/nextgen-global-service/infra/repoimpl/schema"
)

func TestConvertBackupToProtoBackup_ManualNoExpirationFallback(t *testing.T) {
	createdAt := time.Date(2026, 3, 17, 7, 0, 0, 0, time.UTC)
	backup := &entity.Backup{Backup: &schema.Backup{
		ID:             17175,
		ClusterId:      10985242069873785663,
		TenantId:       60205,
		ServicePlan:    "Premium",
		DisplayName:    "manual-backup-test",
		Description:    "",
		CreatedAt:      createdAt,
		BackupTime:     time.Time{},
		BackupTs:       0,
		ExpirationTime: time.Time{},
		State:          schema.BackupStateSuccess,
		Type:           schema.BackupTypeSnapshot,
		TriggerType:    schema.BackupTriggerTypeManual,
		RegionId:       "AWS_US_EAST_1",
	}}

	protoBackup := convertBackupToProtoBackup(backup)
	require.NotNil(t, protoBackup)

	assert.Equal(t, "17175", protoBackup.GetId())
	assert.Equal(t, "10985242069873785663", protoBackup.GetClusterId())
	assert.Equal(t, createdAt, protoBackup.GetCreateTime().AsTime())
	assert.Nil(t, protoBackup.ExpirationTime)
	assert.Equal(t, "0", protoBackup.GetBackupTs())
}
