From 7b51584c7c6e611066d66277abcffd873503114a Mon Sep 17 00:00:00 2001 From: MaysWind Date: Mon, 5 Apr 2021 01:41:32 +0800 Subject: [PATCH] add exchange data source unit test --- .../bank_of_canada_datasource_test.go | 196 ++++++++++++ .../czech_national_bank_datasource_test.go | 141 +++++++++ .../euro_central_bank_datasource_test.go | 150 +++++++++ ...national_bank_of_poland_datasource_test.go | 120 ++++++++ ...serve_bank_of_australia_datasource_test.go | 284 ++++++++++++++++++ 5 files changed, 891 insertions(+) create mode 100644 pkg/exchangerates/bank_of_canada_datasource_test.go create mode 100644 pkg/exchangerates/czech_national_bank_datasource_test.go create mode 100644 pkg/exchangerates/euro_central_bank_datasource_test.go create mode 100644 pkg/exchangerates/national_bank_of_poland_datasource_test.go create mode 100644 pkg/exchangerates/reserve_bank_of_australia_datasource_test.go diff --git a/pkg/exchangerates/bank_of_canada_datasource_test.go b/pkg/exchangerates/bank_of_canada_datasource_test.go new file mode 100644 index 00000000..bbc5318b --- /dev/null +++ b/pkg/exchangerates/bank_of_canada_datasource_test.go @@ -0,0 +1,196 @@ +package exchangerates + +import ( + "testing" + + "github.com/gin-gonic/gin" + "github.com/stretchr/testify/assert" + + "github.com/mayswind/lab/pkg/core" + "github.com/mayswind/lab/pkg/models" +) + +const bankOfCanadaMinimumRequiredContent = "{\n" + + " \"observations\": [\n" + + " {\n" + + " \"d\": \"2019-12-31\",\n" + + " \"FXVNDCAD\": {\n" + + " \"v\": \"0.000056\"\n" + + " }\n" + + " },\n" + + " {\n" + + " \"d\": \"2021-04-01\",\n" + + " \"FXCNYCAD\": {\n" + + " \"v\": \"0.1913\"\n" + + " },\n" + + " \"FXUSDCAD\": {\n" + + " \"v\": \"1.2565\"\n" + + " }\n" + + " }\n" + + " ]\n" + + "}" + +func TestBankOfCanadaDataSource_StandardDataExtractBaseCurrency(t *testing.T) { + dataSource := &BankOfCanadaDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(bankOfCanadaMinimumRequiredContent)) + assert.Equal(t, nil, err) + assert.Equal(t, "CAD", actualLatestExchangeRateResponse.BaseCurrency) +} + +func TestBankOfCanadaDataSource_StandardDataExtractExchangeRates(t *testing.T) { + dataSource := &BankOfCanadaDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(bankOfCanadaMinimumRequiredContent)) + assert.Equal(t, nil, err) + assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ + Currency: "USD", + Rate: "0.7958615200955034", + }) + assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ + Currency: "CNY", + Rate: "5.2273915316257185", + }) + assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ + Currency: "VND", + Rate: "17857.14285714286", + }) +} + +func TestBankOfCanadaDataSource_BlankContent(t *testing.T) { + dataSource := &BankOfCanadaDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("")) + assert.NotEqual(t, nil, err) +} + +func TestBankOfCanadaDataSource_EmptyJsonObject(t *testing.T) { + dataSource := &BankOfCanadaDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("{}")) + assert.NotEqual(t, nil, err) +} + +func TestBankOfCanadaDataSource_EmptyObservationsContent(t *testing.T) { + dataSource := &BankOfCanadaDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("{"+ + " \"observations\": []"+ + "}")) + assert.NotEqual(t, nil, err) +} + +func TestBankOfCanadaDataSource_InvalidObservationFormat(t *testing.T) { + dataSource := &BankOfCanadaDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("{"+ + " \"observations\": [\n"+ + " {\n"+ + " \"d\": \"2021-04-01\",\n"+ + " \"CNYCAD\": {\n"+ + " \"v\": \"0.1913\"\n"+ + " }\n"+ + " }\n"+ + " ]\n"+ + "}")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} + +func TestBankOfCanadaDataSource_InvalidObservationFormat2(t *testing.T) { + dataSource := &BankOfCanadaDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("{"+ + " \"observations\": [\n"+ + " {\n"+ + " \"d\": \"2021-04-01\",\n"+ + " \"FXCADCNY\": {\n"+ + " \"v\": \"0.1913\"\n"+ + " }\n"+ + " }\n"+ + " ]\n"+ + "}")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} + +func TestBankOfCanadaDataSource_InvalidCurrency(t *testing.T) { + dataSource := &BankOfCanadaDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("{"+ + " \"observations\": [\n"+ + " {\n"+ + " \"d\": \"2021-04-01\",\n"+ + " \"FXXXXCAD\": {\n"+ + " \"v\": \"1\"\n"+ + " }\n"+ + " }\n"+ + " ]\n"+ + "}")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} + +func TestBankOfCanadaDataSource_EmptyRate(t *testing.T) { + dataSource := &BankOfCanadaDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("{"+ + " \"observations\": [\n"+ + " {\n"+ + " \"d\": \"2021-04-01\",\n"+ + " \"FXUSDCAD\": {\n"+ + " \"v\": \"\"\n"+ + " }\n"+ + " }\n"+ + " ]\n"+ + "}")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} + +func TestBankOfCanadaDataSource_InvalidRate(t *testing.T) { + dataSource := &BankOfCanadaDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("{"+ + " \"observations\": [\n"+ + " {\n"+ + " \"d\": \"2021-04-01\",\n"+ + " \"FXUSDCAD\": {\n"+ + " \"v\": null\n"+ + " }\n"+ + " }\n"+ + " ]\n"+ + "}")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} diff --git a/pkg/exchangerates/czech_national_bank_datasource_test.go b/pkg/exchangerates/czech_national_bank_datasource_test.go new file mode 100644 index 00000000..64d908f2 --- /dev/null +++ b/pkg/exchangerates/czech_national_bank_datasource_test.go @@ -0,0 +1,141 @@ +package exchangerates + +import ( + "testing" + + "github.com/gin-gonic/gin" + "github.com/stretchr/testify/assert" + + "github.com/mayswind/lab/pkg/core" + "github.com/mayswind/lab/pkg/models" +) + +const czechNationalBankMinimumRequiredContent = "01 Apr 2021 #64\n" + + "Country|Currency|Amount|Code|Rate\n" + + "China|renminbi|1|CNY|3.379\n" + + "USA|dollar|1|USD|22.206\n" + +func TestCzechNationalBankDataSource_StandardDataExtractBaseCurrency(t *testing.T) { + dataSource := &CzechNationalBankDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(czechNationalBankMinimumRequiredContent)) + assert.Equal(t, nil, err) + assert.Equal(t, "CZK", actualLatestExchangeRateResponse.BaseCurrency) +} + +func TestCzechNationalBankDataSource_StandardDataExtractExchangeRates(t *testing.T) { + dataSource := &CzechNationalBankDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(czechNationalBankMinimumRequiredContent)) + assert.Equal(t, nil, err) + assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ + Currency: "USD", + Rate: "0.04503287399801856", + }) + assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ + Currency: "CNY", + Rate: "0.2959455460195324", + }) +} + +func TestCzechNationalBankDataSource_BlankContent(t *testing.T) { + dataSource := &CzechNationalBankDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("")) + assert.NotEqual(t, nil, err) +} + +func TestCzechNationalBankDataSource_OnlyHeader(t *testing.T) { + dataSource := &CzechNationalBankDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("01 Apr 2021 #64")) + assert.NotEqual(t, nil, err) +} + +func TestCzechNationalBankDataSource_OnlyHeaderAndTitle(t *testing.T) { + dataSource := &CzechNationalBankDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("01 Apr 2021 #64\n"+ + "Country|Currency|Amount|Code|Rate")) + assert.NotEqual(t, nil, err) +} + +func TestCzechNationalBankDataSource_TitleMissingCode(t *testing.T) { + dataSource := &CzechNationalBankDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("01 Apr 2021 #64\n"+ + "Country|Currency|Amount|Rate\n"+ + "China|renminbi|1|3.379\n"+ + "USA|dollar|1|22.206\n")) + assert.NotEqual(t, nil, err) +} + +func TestCzechNationalBankDataSource_TitleMissingRate(t *testing.T) { + dataSource := &CzechNationalBankDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("01 Apr 2021 #64\n"+ + "Country|Currency|Amount|Code\n"+ + "China|renminbi|1|CNY\n"+ + "USA|dollar|1|USD\n")) + assert.NotEqual(t, nil, err) +} + +func TestCzechNationalBankDataSource_InvalidCurrency(t *testing.T) { + dataSource := &CzechNationalBankDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("01 Apr 2021 #64\n"+ + "Country|Currency|Amount|Code|Rate\n"+ + "XXX|xxx|1|XXX|1\n")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} + +func TestCzechNationalBankDataSource_EmptyRate(t *testing.T) { + dataSource := &CzechNationalBankDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("01 Apr 2021 #64\n"+ + "Country|Currency|Amount|Code|Rate\n"+ + "USA|dollar|1|USD|\n")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} + +func TestCzechNationalBankDataSource_InvalidRate(t *testing.T) { + dataSource := &CzechNationalBankDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("01 Apr 2021 #64\n"+ + "Country|Currency|Amount|Code|Rate\n"+ + "USA|dollar|1|USD|null\n")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} diff --git a/pkg/exchangerates/euro_central_bank_datasource_test.go b/pkg/exchangerates/euro_central_bank_datasource_test.go new file mode 100644 index 00000000..9abe84da --- /dev/null +++ b/pkg/exchangerates/euro_central_bank_datasource_test.go @@ -0,0 +1,150 @@ +package exchangerates + +import ( + "testing" + + "github.com/gin-gonic/gin" + "github.com/stretchr/testify/assert" + + "github.com/mayswind/lab/pkg/core" + "github.com/mayswind/lab/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) +} diff --git a/pkg/exchangerates/national_bank_of_poland_datasource_test.go b/pkg/exchangerates/national_bank_of_poland_datasource_test.go new file mode 100644 index 00000000..776fdda4 --- /dev/null +++ b/pkg/exchangerates/national_bank_of_poland_datasource_test.go @@ -0,0 +1,120 @@ +package exchangerates + +import ( + "testing" + + "github.com/gin-gonic/gin" + "github.com/stretchr/testify/assert" + + "github.com/mayswind/lab/pkg/core" + "github.com/mayswind/lab/pkg/models" +) + +const nationalBankOfPolandMinimumRequiredContent = "\n" + + "\n" + + " 3.8986\n" + + " 0.5941\n" + + "" + +func TestNationalBankOfPolandDataSource_StandardDataExtractBaseCurrency(t *testing.T) { + dataSource := &NationalBankOfPolandDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(nationalBankOfPolandMinimumRequiredContent)) + assert.Equal(t, nil, err) + assert.Equal(t, "PLN", actualLatestExchangeRateResponse.BaseCurrency) +} + +func TestNationalBankOfPolandDataSource_StandardDataExtractExchangeRates(t *testing.T) { + dataSource := &NationalBankOfPolandDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte(nationalBankOfPolandMinimumRequiredContent)) + assert.Equal(t, nil, err) + assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ + Currency: "USD", + Rate: "0.25650233417124096", + }) + assert.Contains(t, actualLatestExchangeRateResponse.ExchangeRates, &models.LatestExchangeRate{ + Currency: "CNY", + Rate: "1.68321831341525", + }) +} + +func TestNationalBankOfPolandDataSource_BlankContent(t *testing.T) { + dataSource := &NationalBankOfPolandDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("")) + assert.NotEqual(t, nil, err) +} + +func TestNationalBankOfPolandDataSource_OnlyXMLHeader(t *testing.T) { + dataSource := &NationalBankOfPolandDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("")) + assert.NotEqual(t, nil, err) +} + +func TestNationalBankOfPolandDataSource_EmptyExchangeRatesContent(t *testing.T) { + dataSource := &NationalBankOfPolandDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + _, err := dataSource.Parse(context, []byte("\n"+ + "\n"+ + "")) + assert.NotEqual(t, nil, err) +} + +func TestNationalBankOfPolandDataSource_InvalidCurrency(t *testing.T) { + dataSource := &NationalBankOfPolandDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("\n"+ + "\n"+ + " 1\n"+ + "")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} + +func TestNationalBankOfPolandDataSource_EmptyRate(t *testing.T) { + dataSource := &NationalBankOfPolandDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("\n"+ + "\n"+ + " \n"+ + "")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} + +func TestNationalBankOfPolandDataSource_InvalidRate(t *testing.T) { + dataSource := &NationalBankOfPolandDataSource{} + context := &core.Context{ + Context: &gin.Context{}, + } + + actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("\n"+ + "\n"+ + " null\n"+ + "")) + assert.Equal(t, nil, err) + assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0) +} diff --git a/pkg/exchangerates/reserve_bank_of_australia_datasource_test.go b/pkg/exchangerates/reserve_bank_of_australia_datasource_test.go new file mode 100644 index 00000000..96cb7132 --- /dev/null +++ b/pkg/exchangerates/reserve_bank_of_australia_datasource_test.go @@ -0,0 +1,284 @@ +package exchangerates + +import ( + "testing" + + "github.com/gin-gonic/gin" + "github.com/stretchr/testify/assert" + + "github.com/mayswind/lab/pkg/core" + "github.com/mayswind/lab/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) +}