diff --git a/conf/ezbookkeeping.ini b/conf/ezbookkeeping.ini index cb3a5025..c6d6966c 100644 --- a/conf/ezbookkeeping.ini +++ b/conf/ezbookkeeping.ini @@ -360,9 +360,9 @@ custom_map_tile_server_default_zoom_level = 14 # "national_bank_of_romania": https://www.bnr.ro/Exchange-rates-1224.aspx # "bank_of_russia": https://www.cbr.ru/eng/currency_base/daily/ # "swiss_national_bank": https://www.snb.ch/en/the-snb/mandates-goals/statistics/statistics-pub/current_interest_exchange_rates +# "national_bank_of_ukraine": https://bank.gov.ua/ua/markets/exchangerates # "central_bank_of_uzbekistan": https://cbu.uz/en/arkhiv-kursov-valyut/ # "international_monetary_fund": https://www.imf.org/external/np/fin/data/param_rms_mth.aspx -# "national_bank_of_ukraine": https://bank.gov.ua/ua/markets/exchangerates data_source = euro_central_bank # Requesting exchange rates data timeout (0 - 4294967295 milliseconds) diff --git a/pkg/api/exchange_rates_test.go b/pkg/api/exchange_rates_test.go index d7178298..8b913367 100644 --- a/pkg/api/exchange_rates_test.go +++ b/pkg/api/exchange_rates_test.go @@ -256,6 +256,24 @@ func TestExchangeRatesApiLatestExchangeRateHandler_SwissNationalBankDataSource(t checkExchangeRatesHaveSpecifiedCurrencies(t, exchangeRateResponse.BaseCurrency, supportedCurrencyCodes, exchangeRateResponse.ExchangeRates) } +func TestExchangeRatesApiLatestExchangeRateHandler_NationalBankOfUkraineDataSource(t *testing.T) { + exchangeRateResponse := executeLatestExchangeRateHandler(t, settings.NationalBankOfUkraineDataSource) + + if exchangeRateResponse == nil { + return + } + + assert.Equal(t, "UAH", exchangeRateResponse.BaseCurrency) + + supportedCurrencyCodes := []string{ + "AED", "AUD", "AZN", "BDT", "BGN", "CAD", "CHF", "CNY", "CZK", "DKK", + "DZD", "EGP", "EUR", "GBP", "GEL", "HKD", "HUF", "IDR", "ILS", "INR", + "JPY", "KRW", "KZT", "LBP", "MDL", "MXN", "MYR", "NOK", "NZD", "PLN", + "RON", "RSD", "SAR", "SEK", "SGD", "THB", "TND", "TRY", "USD", "VND", "ZAR"} + + checkExchangeRatesHaveSpecifiedCurrencies(t, exchangeRateResponse.BaseCurrency, supportedCurrencyCodes, exchangeRateResponse.ExchangeRates) +} + func TestExchangeRatesApiLatestExchangeRateHandler_CentralBankOfUzbekistanDataSource(t *testing.T) { exchangeRateResponse := executeLatestExchangeRateHandler(t, settings.CentralBankOfUzbekistanDataSource) @@ -292,24 +310,6 @@ func TestExchangeRatesApiLatestExchangeRateHandler_InternationalMonetaryFundData checkExchangeRatesHaveSpecifiedCurrencies(t, exchangeRateResponse.BaseCurrency, supportedCurrencyCodes, exchangeRateResponse.ExchangeRates) } -func TestExchangeRatesApiLatestExchangeRateHandler_NationalBankOfUkraineDataSource(t *testing.T) { - exchangeRateResponse := executeLatestExchangeRateHandler(t, settings.NationalBankOfUkraineDataSource) - - if exchangeRateResponse == nil { - return - } - - assert.Equal(t, "UAH", exchangeRateResponse.BaseCurrency) - - supportedCurrencyCodes := []string{ - "AED", "AUD", "AZN", "BDT", "BGN", "CAD", "CHF", "CNY", "CZK", "DKK", - "DZD", "EGP", "EUR", "GBP", "GEL", "HKD", "HUF", "IDR", "ILS", "INR", - "JPY", "KRW", "KZT", "LBP", "MDL", "MXN", "MYR", "NOK", "NZD", "PLN", - "RON", "RSD", "SAR", "SEK", "SGD", "THB", "TND", "TRY", "USD", "VND", "ZAR"} - - checkExchangeRatesHaveSpecifiedCurrencies(t, exchangeRateResponse.BaseCurrency, supportedCurrencyCodes, exchangeRateResponse.ExchangeRates) -} - func executeLatestExchangeRateHandler(t *testing.T, dataSourceType string) *models.LatestExchangeRateResponse { config := &settings.Config{ ExchangeRatesDataSource: dataSourceType, diff --git a/pkg/exchangerates/exchange_rates_datasource_container.go b/pkg/exchangerates/exchange_rates_datasource_container.go index ac9c6bd4..6efa0c2e 100644 --- a/pkg/exchangerates/exchange_rates_datasource_container.go +++ b/pkg/exchangerates/exchange_rates_datasource_container.go @@ -59,15 +59,15 @@ func InitializeExchangeRatesDataSource(config *settings.Config) error { } else if config.ExchangeRatesDataSource == settings.SwissNationalBankDataSource { Container.Current = &SwissNationalBankDataSource{} return nil + } else if config.ExchangeRatesDataSource == settings.NationalBankOfUkraineDataSource { + Container.Current = &NationalBankOfUkraineDataSource{} + return nil } else if config.ExchangeRatesDataSource == settings.CentralBankOfUzbekistanDataSource { Container.Current = &CentralBankOfUzbekistanDataSource{} return nil } else if config.ExchangeRatesDataSource == settings.InternationalMonetaryFundDataSource { Container.Current = &InternationalMonetaryFundDataSource{} return nil - } else if config.ExchangeRatesDataSource == settings.NationalBankOfUkraineDataSource { - Container.Current = &NationalBankOfUkraineDataSource{} - return nil } return errs.ErrInvalidExchangeRatesDataSource diff --git a/pkg/settings/setting.go b/pkg/settings/setting.go index b5107913..653da0e3 100644 --- a/pkg/settings/setting.go +++ b/pkg/settings/setting.go @@ -114,9 +114,9 @@ const ( NationalBankOfRomaniaDataSource string = "national_bank_of_romania" BankOfRussiaDataSource string = "bank_of_russia" SwissNationalBankDataSource string = "swiss_national_bank" + NationalBankOfUkraineDataSource string = "national_bank_of_ukraine" CentralBankOfUzbekistanDataSource string = "central_bank_of_uzbekistan" InternationalMonetaryFundDataSource string = "international_monetary_fund" - NationalBankOfUkraineDataSource string = "national_bank_of_ukraine" ) const ( @@ -910,9 +910,9 @@ func loadExchangeRatesConfiguration(config *Config, configFile *ini.File, sectio dataSource == NationalBankOfRomaniaDataSource || dataSource == BankOfRussiaDataSource || dataSource == SwissNationalBankDataSource || + dataSource == NationalBankOfUkraineDataSource || dataSource == CentralBankOfUzbekistanDataSource || - dataSource == InternationalMonetaryFundDataSource || - dataSource == NationalBankOfUkraineDataSource { + dataSource == InternationalMonetaryFundDataSource { config.ExchangeRatesDataSource = dataSource } else { return errs.ErrInvalidExchangeRatesDataSource