From 4c4649f46132812276ab805b724be7315bc74202 Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sun, 16 Apr 2023 22:16:50 +0200 Subject: [PATCH] Fix tests --- .../yahoo-finance.service.spec.ts | 32 +++++++++++++------ .../yahoo-finance/yahoo-finance.service.ts | 13 ++++++++ .../yahoo-finance/yahoo-finance.service.ts | 25 +++++---------- 3 files changed, 43 insertions(+), 27 deletions(-) rename apps/api/src/services/data-provider/{ => data-enhancer}/yahoo-finance/yahoo-finance.service.spec.ts (60%) diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.spec.ts b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.spec.ts similarity index 60% rename from apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.spec.ts rename to apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.spec.ts index e18b6b583..1dd7f0f0a 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.spec.ts +++ b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.spec.ts @@ -1,7 +1,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration.service'; import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; -import { YahooFinanceService } from './yahoo-finance.service'; +import { YahooFinanceDataEnhancerService } from './yahoo-finance.service'; jest.mock( '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service', @@ -25,16 +25,16 @@ jest.mock( } ); -describe('YahooFinanceService', () => { +describe('YahooFinanceDataEnhancerService', () => { let configurationService: ConfigurationService; let cryptocurrencyService: CryptocurrencyService; - let yahooFinanceService: YahooFinanceService; + let yahooFinanceDataEnhancerService: YahooFinanceDataEnhancerService; beforeAll(async () => { configurationService = new ConfigurationService(); cryptocurrencyService = new CryptocurrencyService(); - yahooFinanceService = new YahooFinanceService( + yahooFinanceDataEnhancerService = new YahooFinanceDataEnhancerService( configurationService, cryptocurrencyService ); @@ -42,25 +42,37 @@ describe('YahooFinanceService', () => { it('convertFromYahooFinanceSymbol', async () => { expect( - await yahooFinanceService.convertFromYahooFinanceSymbol('BRK-B') + await yahooFinanceDataEnhancerService.convertFromYahooFinanceSymbol( + 'BRK-B' + ) ).toEqual('BRK-B'); expect( - await yahooFinanceService.convertFromYahooFinanceSymbol('BTC-USD') + await yahooFinanceDataEnhancerService.convertFromYahooFinanceSymbol( + 'BTC-USD' + ) ).toEqual('BTCUSD'); expect( - await yahooFinanceService.convertFromYahooFinanceSymbol('EURUSD=X') + await yahooFinanceDataEnhancerService.convertFromYahooFinanceSymbol( + 'EURUSD=X' + ) ).toEqual('EURUSD'); }); it('convertToYahooFinanceSymbol', async () => { expect( - await yahooFinanceService.convertToYahooFinanceSymbol('BTCUSD') + await yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol( + 'BTCUSD' + ) ).toEqual('BTC-USD'); expect( - await yahooFinanceService.convertToYahooFinanceSymbol('DOGEUSD') + await yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol( + 'DOGEUSD' + ) ).toEqual('DOGE-USD'); expect( - await yahooFinanceService.convertToYahooFinanceSymbol('USDCHF') + await yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol( + 'USDCHF' + ) ).toEqual('USDCHF=X'); }); }); diff --git a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts index 3d6c038a0..81467e2b8 100644 --- a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts @@ -25,6 +25,19 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { this.baseCurrency = this.configurationService.get('BASE_CURRENCY'); } + public convertFromYahooFinanceSymbol(aYahooFinanceSymbol: string) { + let symbol = aYahooFinanceSymbol.replace( + new RegExp(`-${this.baseCurrency}$`), + this.baseCurrency + ); + + if (symbol.includes('=X') && !symbol.includes(this.baseCurrency)) { + symbol = `${this.baseCurrency}${symbol}`; + } + + return symbol.replace('=X', ''); + } + /** * Converts a symbol to a Yahoo Finance symbol * diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts index 9743a37a5..c9c5e9219 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts @@ -31,19 +31,6 @@ export class YahooFinanceService implements DataProviderInterface { return true; } - public convertFromYahooFinanceSymbol(aYahooFinanceSymbol: string) { - let symbol = aYahooFinanceSymbol.replace( - new RegExp(`-${this.baseCurrency}$`), - this.baseCurrency - ); - - if (symbol.includes('=X') && !symbol.includes(this.baseCurrency)) { - symbol = `${this.baseCurrency}${symbol}`; - } - - return symbol.replace('=X', ''); - } - public async getAssetProfile( aSymbol: string ): Promise> { @@ -184,7 +171,10 @@ export class YahooFinanceService implements DataProviderInterface { for (const quote of quotes) { // Convert symbols back - const symbol = this.convertFromYahooFinanceSymbol(quote.symbol); + const symbol = + this.yahooFinanceDataEnhancerService.convertFromYahooFinanceSymbol( + quote.symbol + ); response[symbol] = { currency: quote.currency, @@ -301,9 +291,10 @@ export class YahooFinanceService implements DataProviderInterface { return currentQuote.symbol === marketDataItem.symbol; }); - const symbol = this.convertFromYahooFinanceSymbol( - marketDataItem.symbol - ); + const symbol = + this.yahooFinanceDataEnhancerService.convertFromYahooFinanceSymbol( + marketDataItem.symbol + ); const { assetClass, assetSubClass } = this.yahooFinanceDataEnhancerService.parseAssetClass({