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 reserveBankOfAustraliaMinimumRequiredContent = "\n" + "\n" + " \n" + " 2021-04-01T16:45:00+11:00\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " 0.7543\n" + " AUD\n" + " \n" + " AUD\n" + " USD\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " 4.9577\n" + " AUD\n" + " \n" + " AUD\n" + " CNY\n" + " \n" + " \n" + " \n" + "" func TestReserveBankOfAustraliaDataSource_StandardDataExtractBaseCurrency(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(reserveBankOfAustraliaMinimumRequiredContent)) assert.Equal(t, nil, err) assert.Equal(t, "AUD", actualLatestExchangeRateResponse.BaseCurrency) } func TestReserveBankOfAustraliaDataSource_StandardDataExtractExchangeRates(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(reserveBankOfAustraliaMinimumRequiredContent)) assert.Equal(t, nil, err) assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ Currency: "USD", Rate: "0.7543", }) assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ Currency: "CNY", Rate: "4.9577", }) } func TestReserveBankOfAustraliaDataSource_BlankContent(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } _, err := dataSource.Parse(context, []byte("")) assert.NotEqual(t, nil, err) } func TestReserveBankOfAustraliaDataSource_OnlyXMLHeader(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } _, err := dataSource.Parse(context, []byte("")) assert.NotEqual(t, nil, err) } func TestReserveBankOfAustraliaDataSource_EmptyRDFContent(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } _, err := dataSource.Parse(context, []byte("\n"+ "\n"+ "")) assert.NotEqual(t, nil, err) } func TestReserveBankOfAustraliaDataSource_EmptyChannelContent(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } _, err := dataSource.Parse(context, []byte("\n"+ "\n"+ " \n"+ " "+ " \n"+ " \n"+ " \n"+ " \n"+ " 0.7543\n"+ " AUD\n"+ " \n"+ " AUD\n"+ " USD\n"+ " \n"+ " \n"+ " \n"+ "")) assert.NotEqual(t, nil, err) } func TestReserveBankOfAustraliaDataSource_NoItem(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } _, err := dataSource.Parse(context, []byte("\n"+ "\n"+ " \n"+ " 2021-04-01T16:45:00+11:00\n"+ " \n"+ "")) assert.NotEqual(t, nil, err) } func TestReserveBankOfAustraliaDataSource_BaseCurrencyNotEqualPreset(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("\n"+ "\n"+ " \n"+ " 2021-04-01T16:45:00+11:00\n"+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ " 0.7543\n"+ " AUD\n"+ " \n"+ " USD\n"+ " USD\n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestReserveBankOfAustraliaDataSource_UnitCurrencyNotEqualPreset(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("\n"+ "\n"+ " \n"+ " 2021-04-01T16:45:00+11:00\n"+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ " 0.7543\n"+ " USD\n"+ " \n"+ " AUD\n"+ " USD\n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestReserveBankOfAustraliaDataSource_InvalidCurrency(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("\n"+ "\n"+ " \n"+ " 2021-04-01T16:45:00+11:00\n"+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ " 1\n"+ " AUD\n"+ " \n"+ " AUD\n"+ " XXX\n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestReserveBankOfAustraliaDataSource_EmptyRate(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("\n"+ "\n"+ " \n"+ " 2021-04-01T16:45:00+11:00\n"+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ " AUD\n"+ " \n"+ " AUD\n"+ " USD\n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) } func TestReserveBankOfAustraliaDataSource_InvalidRate(t *testing.T) { dataSource := &ReserveBankOfAustraliaDataSource{} context := &core.Context{ Context: &gin.Context{}, } actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("\n"+ "\n"+ " \n"+ " 2021-04-01T16:45:00+11:00\n"+ " \n"+ " \n"+ " \n"+ " \n"+ " \n"+ " null\n"+ " AUD\n"+ " \n"+ " AUD\n"+ " USD\n"+ " \n"+ " \n"+ " \n"+ "")) assert.Equal(t, nil, err) assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) }