package tests

import (
	"testing"
	"time"

	"github.com/pingcap/dbaas/billing2/forms"
	"github.com/pingcap/dbaas/billing2/model/payment/paymentsub"
	"github.com/pingcap/dbaas/billing2/utils/tests"
	"github.com/shopspring/decimal"
	"github.com/stretchr/testify/suite"
)

type FXRateTestSuite struct {
	tests.BillingTestSuite
}

func TestFXRateTestSuite(t *testing.T) {
	suite.Run(t, new(FXRateTestSuite))
}

func (suite *FXRateTestSuite) TestDocs() {
	assert := suite.Assert()
	model := &paymentsub.FXRateModel{}
	in := &forms.InvoiceAppliedFXRate{
		Date:   time.Date(2024, 9, 30, 0, 0, 0, 0, time.UTC),
		Value:  decimal.RequireFromString("1.3555"),
		Base:   forms.CurrencyUSD,
		Target: forms.CurrencySGD,
	}
	fxRate, err := model.CreateInvoiceAppliedFX(in)
	assert.Nil(err)
	assert.Equal(in.Value, fxRate.Value)
	assert.Equal(in.Date, fxRate.Date)

	fxRate, err = model.GetInvoiceAppliedFX(forms.CurrencyUSD, forms.CurrencySGD)
	assert.Nil(err)
	assert.Equal(in.Value, fxRate.Value)
	assert.Equal(in.Date, fxRate.Date)
}
