package exchangerates import ( "testing" "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert" "github.com/mayswind/ezbookkeeping/pkg/core" "github.com/mayswind/ezbookkeeping/pkg/models" ) const euroCentralBankMinimumRequiredContent = "\n" + "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "" func TestEuroCentralBankDataSource_StandardDataExtractBaseCurrency(t *testing.T) { dataSource := &EuroCentralBankDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(euroCentralBankMinimumRequiredContent)) assert.Equal(t, nil, err) assert.Equal(t, "EUR", actualLatestExchangeRateResponse.BaseCurrency) } func TestEuroCentralBankDataSource_StandardDataExtractExchangeRates(t *testing.T) { dataSource := &EuroCentralBankDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(euroCentralBankMinimumRequiredContent)) assert.Equal(t, nil, err) assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ Currency: "USD", Rate: "1.1746", }) assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ Currency: "CNY", Rate: "7.7195", }) } func TestEuroCentralBankDataSource_BlankContent(t *testing.T) { dataSource := &EuroCentralBankDataSource{} context := &core.Context{ Context: &gin.Context{}, } _, err := dataSource.Parse(context, []byte("")) assert.NotEqual(t, nil, err) } func TestEuroCentralBankDataSource_OnlyXMLHeader(t *testing.T) { dataSource := &EuroCentralBankDataSource{} context := &core.Context{ Context: &gin.Context{}, } _, err := dataSource.Parse(context, []byte("")) assert.NotEqual(t, nil, err) } func TestEuroCentralBankDataSource_EmptyEnvelopeContent(t *testing.T) { dataSource := &EuroCentralBankDataSource{} context := &core.Context{ Context: &gin.Context{}, } _, err := dataSource.Parse(context, []byte(""+ ""+ "")) assert.NotEqual(t, nil, err) } func TestEuroCentralBankDataSource_EmptyCubeContent(t *testing.T) { dataSource := &EuroCentralBankDataSource{} context := &core.Context{ Context: &gin.Context{}, } _, err := dataSource.Parse(context, []byte(""+ ""+ ""+ ""+ "")) assert.NotEqual(t, nil, err) } func TestEuroCentralBankDataSource_InvalidCurrency(t *testing.T) { dataSource := &EuroCentralBankDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ ""+ ""+ ""+ ""+ ""+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestEuroCentralBankDataSource_EmptyRate(t *testing.T) { dataSource := &EuroCentralBankDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ ""+ ""+ ""+ ""+ ""+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestEuroCentralBankDataSource_InvalidRate(t *testing.T) { dataSource := &EuroCentralBankDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ ""+ ""+ ""+ ""+ ""+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) }