mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-21 02:04:26 +08:00
add unit tests
This commit is contained in:
@@ -181,4 +181,17 @@ func TestBankOfCanadaDataSource_InvalidRate(t *testing.T) {
|
|||||||
"}"))
|
"}"))
|
||||||
assert.Equal(t, nil, err)
|
assert.Equal(t, nil, err)
|
||||||
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0)
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0)
|
||||||
|
|
||||||
|
actualLatestExchangeRateResponse, err = dataSource.Parse(context, []byte("{"+
|
||||||
|
" \"observations\": [\n"+
|
||||||
|
" {\n"+
|
||||||
|
" \"d\": \"2021-04-01\",\n"+
|
||||||
|
" \"FXUSDCAD\": {\n"+
|
||||||
|
" \"v\": \"0\"\n"+
|
||||||
|
" }\n"+
|
||||||
|
" }\n"+
|
||||||
|
" ]\n"+
|
||||||
|
"}"))
|
||||||
|
assert.Equal(t, nil, err)
|
||||||
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,6 +104,20 @@ func TestInternationalMonetaryFundDataSource_MissingDefaultCurrencyData(t *testi
|
|||||||
assert.NotEqual(t, nil, err)
|
assert.NotEqual(t, nil, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInternationalMonetaryFundDataSource_DefaultCurrencyDataInvalid(t *testing.T) {
|
||||||
|
dataSource := &InternationalMonetaryFundDataSource{}
|
||||||
|
context := core.NewNullContext()
|
||||||
|
|
||||||
|
_, err := dataSource.Parse(context, []byte("SDRs per Currency unit and Currency units per SDR (1)\n"+
|
||||||
|
"last five days\n"+
|
||||||
|
"SDRs per Currency unit (2)\n"+
|
||||||
|
"\n"+
|
||||||
|
"Currency\tAugust 28, 2024\tAugust 27, 2024\tAugust 26, 2024\tAugust 23, 2024\tAugust 22, 2024\n"+
|
||||||
|
"Chinese yuan\t0.1040520000\t0.1039250000\t0.1040370000\t0.1040850000\t0.1040570000\n"+
|
||||||
|
"U.S. dollar\t0\t0\t0\t0\t0\n"))
|
||||||
|
assert.NotEqual(t, nil, err)
|
||||||
|
}
|
||||||
|
|
||||||
func TestInternationalMonetaryFundDataSource_InvalidCurrency(t *testing.T) {
|
func TestInternationalMonetaryFundDataSource_InvalidCurrency(t *testing.T) {
|
||||||
dataSource := &InternationalMonetaryFundDataSource{}
|
dataSource := &InternationalMonetaryFundDataSource{}
|
||||||
context := core.NewNullContext()
|
context := core.NewNullContext()
|
||||||
@@ -119,6 +133,41 @@ func TestInternationalMonetaryFundDataSource_InvalidCurrency(t *testing.T) {
|
|||||||
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 1)
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInternationalMonetaryFundDataSource_InvalidRate(t *testing.T) {
|
||||||
|
dataSource := &InternationalMonetaryFundDataSource{}
|
||||||
|
context := core.NewNullContext()
|
||||||
|
|
||||||
|
actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("SDRs per Currency unit and Currency units per SDR (1)\n"+
|
||||||
|
"last five days\n"+
|
||||||
|
"SDRs per Currency unit (2)\n"+
|
||||||
|
"\n"+
|
||||||
|
"Currency\tAugust 28, 2024\tAugust 27, 2024\tAugust 26, 2024\tAugust 23, 2024\tAugust 22, 2024\n"+
|
||||||
|
"Chinese yuan\tnull\tnull\tnull\tnull\tnull\n"+
|
||||||
|
"U.S. dollar\t0.7417320000\t0.7410250000\t0.7408270000\t0.7429280000\t0.7423020000\n"))
|
||||||
|
assert.Equal(t, nil, err)
|
||||||
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 1)
|
||||||
|
|
||||||
|
actualLatestExchangeRateResponse, err = dataSource.Parse(context, []byte("SDRs per Currency unit and Currency units per SDR (1)\n"+
|
||||||
|
"last five days\n"+
|
||||||
|
"SDRs per Currency unit (2)\n"+
|
||||||
|
"\n"+
|
||||||
|
"Currency\tAugust 28, 2024\tAugust 27, 2024\tAugust 26, 2024\tAugust 23, 2024\tAugust 22, 2024\n"+
|
||||||
|
"Chinese yuan\t0\t0\t0\t0\t0\n"+
|
||||||
|
"U.S. dollar\t0.7417320000\t0.7410250000\t0.7408270000\t0.7429280000\t0.7423020000\n"))
|
||||||
|
assert.Equal(t, nil, err)
|
||||||
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 1)
|
||||||
|
|
||||||
|
actualLatestExchangeRateResponse, err = dataSource.Parse(context, []byte("SDRs per Currency unit and Currency units per SDR (1)\n"+
|
||||||
|
"last five days\n"+
|
||||||
|
"SDRs per Currency unit (2)\n"+
|
||||||
|
"\n"+
|
||||||
|
"Currency\tAugust 28, 2024\tAugust 27, 2024\tAugust 26, 2024\tAugust 23, 2024\tAugust 22, 2024\n"+
|
||||||
|
"Chinese yuan\t\t\t\t\t\n"+
|
||||||
|
"U.S. dollar\t0.7417320000\t0.7410250000\t0.7408270000\t0.7429280000\t0.7423020000\n"))
|
||||||
|
assert.Equal(t, nil, err)
|
||||||
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 1)
|
||||||
|
}
|
||||||
|
|
||||||
func TestInternationalMonetaryFundDataSource_LatestDateNotHasRate(t *testing.T) {
|
func TestInternationalMonetaryFundDataSource_LatestDateNotHasRate(t *testing.T) {
|
||||||
dataSource := &InternationalMonetaryFundDataSource{}
|
dataSource := &InternationalMonetaryFundDataSource{}
|
||||||
context := core.NewNullContext()
|
context := core.NewNullContext()
|
||||||
|
|||||||
@@ -171,4 +171,19 @@ func TestNationalBankOfPolandDataSource_InvalidRate(t *testing.T) {
|
|||||||
"</ArrayOfExchangeRatesTable>"))
|
"</ArrayOfExchangeRatesTable>"))
|
||||||
assert.Equal(t, nil, err)
|
assert.Equal(t, nil, err)
|
||||||
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0)
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0)
|
||||||
|
|
||||||
|
actualLatestExchangeRateResponse, err = dataSource.Parse(context, []byte("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+
|
||||||
|
"<ArrayOfExchangeRatesTable xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n"+
|
||||||
|
" <ExchangeRatesTable>\n"+
|
||||||
|
" <EffectiveDate>2024-02-28</EffectiveDate>\n"+
|
||||||
|
" <Rates>\n"+
|
||||||
|
" <Rate>\n"+
|
||||||
|
" <Code>USD</Code>\n"+
|
||||||
|
" <Mid>0</Mid>\n"+
|
||||||
|
" </Rate>\n"+
|
||||||
|
" </Rates>\n"+
|
||||||
|
" </ExchangeRatesTable>\n"+
|
||||||
|
"</ArrayOfExchangeRatesTable>"))
|
||||||
|
assert.Equal(t, nil, err)
|
||||||
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -330,4 +330,59 @@ func TestSwissNationalBankDataSource_InvalidRate(t *testing.T) {
|
|||||||
"</rss>"))
|
"</rss>"))
|
||||||
assert.Equal(t, nil, err)
|
assert.Equal(t, nil, err)
|
||||||
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0)
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0)
|
||||||
|
|
||||||
|
actualLatestExchangeRateResponse, err = dataSource.Parse(context, []byte("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+
|
||||||
|
"<rss xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:cb=\"http://www.cbwiki.net/wiki/index.php/Specification_1.2/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" version=\"2.0\">\n"+
|
||||||
|
" <channel>\n"+
|
||||||
|
" <pubDate>Tue, 12 Nov 2024 11:00:50 GMT</pubDate>\n"+
|
||||||
|
" <item>\n"+
|
||||||
|
" <cb:statistics rdf:parseType=\"Resource\">\n"+
|
||||||
|
" <cb:exchangeRate rdf:parseType=\"Resource\">\n"+
|
||||||
|
" <cb:observation rdf:parseType=\"Resource\">\n"+
|
||||||
|
" <cb:value>0</cb:value>\n"+
|
||||||
|
" <cb:unit>CHF</cb:unit>\n"+
|
||||||
|
" <cb:unit_mult>1</cb:unit_mult>\n"+
|
||||||
|
" </cb:observation>\n"+
|
||||||
|
" <cb:baseCurrency>CHF</cb:baseCurrency>\n"+
|
||||||
|
" <cb:targetCurrency>EUR</cb:targetCurrency>\n"+
|
||||||
|
" <cb:observationPeriod rdf:parseType=\"Resource\">\n"+
|
||||||
|
" <cb:period>2024-11-12</cb:period>\n"+
|
||||||
|
" </cb:observationPeriod>\n"+
|
||||||
|
" </cb:exchangeRate>\n"+
|
||||||
|
" </cb:statistics>\n"+
|
||||||
|
" </item>\n"+
|
||||||
|
" </channel>\n"+
|
||||||
|
"</rss>"))
|
||||||
|
assert.Equal(t, nil, err)
|
||||||
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSwissNationalBankDataSource_InvalidUnit(t *testing.T) {
|
||||||
|
dataSource := &SwissNationalBankDataSource{}
|
||||||
|
context := core.NewNullContext()
|
||||||
|
|
||||||
|
actualLatestExchangeRateResponse, err := dataSource.Parse(context, []byte("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+
|
||||||
|
"<rss xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:cb=\"http://www.cbwiki.net/wiki/index.php/Specification_1.2/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" version=\"2.0\">\n"+
|
||||||
|
" <channel>\n"+
|
||||||
|
" <pubDate>Tue, 12 Nov 2024 11:00:50 GMT</pubDate>\n"+
|
||||||
|
" <item>\n"+
|
||||||
|
" <cb:statistics rdf:parseType=\"Resource\">\n"+
|
||||||
|
" <cb:exchangeRate rdf:parseType=\"Resource\">\n"+
|
||||||
|
" <cb:observation rdf:parseType=\"Resource\">\n"+
|
||||||
|
" <cb:value>0.9378</cb:value>\n"+
|
||||||
|
" <cb:unit>CHF</cb:unit>\n"+
|
||||||
|
" <cb:unit_mult>null</cb:unit_mult>\n"+
|
||||||
|
" </cb:observation>\n"+
|
||||||
|
" <cb:baseCurrency>CHF</cb:baseCurrency>\n"+
|
||||||
|
" <cb:targetCurrency>EUR</cb:targetCurrency>\n"+
|
||||||
|
" <cb:observationPeriod rdf:parseType=\"Resource\">\n"+
|
||||||
|
" <cb:period>2024-11-12</cb:period>\n"+
|
||||||
|
" </cb:observationPeriod>\n"+
|
||||||
|
" </cb:exchangeRate>\n"+
|
||||||
|
" </cb:statistics>\n"+
|
||||||
|
" </item>\n"+
|
||||||
|
" </channel>\n"+
|
||||||
|
"</rss>"))
|
||||||
|
assert.Equal(t, nil, err)
|
||||||
|
assert.Len(t, actualLatestExchangeRateResponse.ExchangeRates, 0)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user