package exchangerates import ( "testing" "github.com/stretchr/testify/assert" "github.com/mayswind/ezbookkeeping/pkg/core" "github.com/mayswind/ezbookkeeping/pkg/models" ) const norgesBankOfRomaniaMinimumRequiredContent = "\n" + "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "" func TestNorgesBankDataSource_StandardDataExtractBaseCurrency(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(norgesBankOfRomaniaMinimumRequiredContent)) assert.Equal(t, nil, err) assert.Equal(t, "NOK", actualLatestExchangeRateResponse.BaseCurrency) } func TestNorgesBankDataSource_StandardDataExtractUpdateTime(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(norgesBankOfRomaniaMinimumRequiredContent)) assert.Equal(t, nil, err) assert.Equal(t, int64(1731682800), actualLatestExchangeRateResponse.UpdateTime) } func TestNorgesBankDataSource_StandardDataExtractExchangeRates(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(norgesBankOfRomaniaMinimumRequiredContent)) assert.Equal(t, nil, err) assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ Currency: "JPY", Rate: "14.049087511766112", }) assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ Currency: "USD", Rate: "0.09046089827671988", }) } func TestNorgesBankDataSource_BlankContent(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() _, err := dataSource.Parse(context, []byte("")) assert.NotEqual(t, nil, err) } func TestNorgesBankDataSource_OnlyXMLHeader(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() _, err := dataSource.Parse(context, []byte("")) assert.NotEqual(t, nil, err) } func TestNorgesBankDataSource_MissingExchangeRatesDataset(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() _, err := dataSource.Parse(context, []byte(""+ ""+ "")) assert.NotEqual(t, nil, err) } func TestNorgesBankDataSource_EmptyExchangeRatesDataset(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() _, err := dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ "")) assert.NotEqual(t, nil, err) } func TestNorgesBankDataSource_EmptyExchangeRateObservations(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestNorgesBankDataSource_InvalidCurrency(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestNorgesBankDataSource_InvalidTargetCurrency(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestNorgesBankDataSource_EmptyRate(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestNorgesBankDataSource_InvalidRate(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) actualLatestExchangeRateResponse, err = dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestNorgesBankDataSource_InvalidUnit(t *testing.T) { dataSource := &NorgesBankDataSource{} context := core.NewNullContext() actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) actualLatestExchangeRateResponse, err = dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) actualLatestExchangeRateResponse, err = dataSource.Parse(context, []byte(""+ ""+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) }