package exchangerates import ( "testing" "github.com/stretchr/testify/assert" "github.com/mayswind/ezbookkeeping/pkg/core" "github.com/mayswind/ezbookkeeping/pkg/models" ) const danmarksNationalbankMinimumRequiredContent = "\n" + "\n" + " \n" + " \n" + " \n" + " \n" + "" func TestDanmarksNationalbankDataSource_StandardDataExtractBaseCurrency(t *testing.T) { dataSource := &DanmarksNationalbankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(danmarksNationalbankMinimumRequiredContent)) assert.Equal(t, nil, err) assert.Equal(t, "DKK", actualLatestExchangeRateResponse.BaseCurrency) } func TestDanmarksNationalbankDataSource_StandardDataExtractUpdateTime(t *testing.T) { dataSource := &DanmarksNationalbankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(danmarksNationalbankMinimumRequiredContent)) assert.Equal(t, nil, err) assert.Equal(t, int64(1731596400), actualLatestExchangeRateResponse.UpdateTime) } func TestDanmarksNationalbankDataSource_StandardDataExtractExchangeRates(t *testing.T) { dataSource := &DanmarksNationalbankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(danmarksNationalbankMinimumRequiredContent)) assert.Equal(t, nil, err) assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ Currency: "USD", Rate: "0.1412070377587619", }) assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ Currency: "CNY", Rate: "1.022390348635109", }) } func TestDanmarksNationalbankDataSource_BlankContent(t *testing.T) { dataSource := &DanmarksNationalbankDataSource{} context := core.NewNullContext() _, err := dataSource.Parse(context, []byte("")) assert.NotEqual(t, nil, err) } func TestDanmarksNationalbankDataSource_OnlyXMLHeader(t *testing.T) { dataSource := &DanmarksNationalbankDataSource{} context := core.NewNullContext() _, err := dataSource.Parse(context, []byte("")) assert.NotEqual(t, nil, err) } func TestDanmarksNationalbankDataSource_EmptyExchangeRatesContent(t *testing.T) { dataSource := &DanmarksNationalbankDataSource{} context := core.NewNullContext() _, err := dataSource.Parse(context, []byte(""+ ""+ "")) assert.NotEqual(t, nil, err) } func TestDanmarksNationalbankDataSource_EmptyDailyRatesContent(t *testing.T) { dataSource := &DanmarksNationalbankDataSource{} context := core.NewNullContext() _, err := dataSource.Parse(context, []byte(""+ ""+ ""+ ""+ "")) assert.NotEqual(t, nil, err) } func TestDanmarksNationalbankDataSource_InvalidCurrency(t *testing.T) { dataSource := &DanmarksNationalbankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestDanmarksNationalbankDataSource_EmptyRate(t *testing.T) { dataSource := &DanmarksNationalbankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestDanmarksNationalbankDataSource_InvalidRate(t *testing.T) { dataSource := &DanmarksNationalbankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) actualLatestExchangeRateResponse, err = dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) }