@ -4,67 +4,93 @@ import {
getUtc ,
getYesterday
} from '@ghostfolio/helper' ;
import { Test } from '@nestjs/testing' ;
import { AccountType , Currency , DataSource , Role , Type } from '@prisma/client' ;
import { ConfigurationService } from '../services/configuration.service' ;
import { DataProviderService } from '../services/data-provider.service' ;
import { AlphaVantageService } from '../services/data-provider/alpha-vantage/alpha-vantage.service' ;
import { GhostfolioScraperApiService } from '../services/data-provider/ghostfolio-scraper-api/ghostfolio-scraper-api.service' ;
import { RakutenRapidApiService } from '../services/data-provider/rakuten-rapid-api/rakuten-rapid-api.service' ;
import { YahooFinanceService } from '../services/data-provider/yahoo-finance/yahoo-finance.service' ;
import { ExchangeRateDataService } from '../services/exchange-rate-data.service' ;
import { MarketState } from '../services/interfaces/interfaces' ;
import { PrismaService } from '../services/prisma.service' ;
import { RulesService } from '../services/rules.service' ;
import { Portfolio } from './portfolio' ;
import { format } from 'date-fns' ;
jest . mock ( '../services/data-provider.service' , ( ) = > {
return {
DataProviderService : jest.fn ( ) . mockImplementation ( ( ) = > {
const today = format ( new Date ( ) , 'yyyy-MM-dd' ) ;
return {
get : ( ) = > {
return Promise . resolve ( {
BTCUSD : {
currency : Currency.USD ,
dataSource : DataSource.YAHOO ,
exchange : UNKNOWN_KEY ,
marketPrice : 57973.008 ,
marketState : MarketState.open ,
name : 'Bitcoin USD' ,
type : 'Cryptocurrency'
} ,
ETHUSD : {
currency : Currency.USD ,
dataSource : DataSource.YAHOO ,
exchange : UNKNOWN_KEY ,
marketPrice : 3915.337 ,
marketState : MarketState.open ,
name : 'Ethereum USD' ,
type : 'Cryptocurrency'
}
} ) ;
} ,
getHistorical : ( ) = > {
return Promise . resolve ( {
BTCUSD : {
[ today ] : 57973.008
} ,
ETHUSD : {
[ today ] : 3915.337
}
} ) ;
}
} ;
} )
} ;
} ) ;
jest . mock ( '../services/exchange-rate-data.service' , ( ) = > {
return {
ExchangeRateDataService : jest.fn ( ) . mockImplementation ( ( ) = > {
return {
initialize : ( ) = > Promise . resolve ( ) ,
toCurrency : ( value : number ) = > value
} ;
} )
} ;
} ) ;
jest . mock ( '../services/data-provider.service' ) ;
jest . mock ( '../services/exchange-rate-data.service' ) ;
jest . mock ( '../services/rules.service' ) ;
const DEFAULT_ACCOUNT_ID = '693a834b-eb89-42c9-ae47-35196c25d269' ;
const USER_ID = 'ca6ce867-5d31-495a-bce9-5942bbca9237' ;
describe ( 'Portfolio' , ( ) = > {
let alphaVantageService : AlphaVantageService ;
let configurationService : ConfigurationService ;
let dataProviderService : DataProviderService ;
let exchangeRateDataService : ExchangeRateDataService ;
let ghostfolioScraperApiService : GhostfolioScraperApiService ;
let portfolio : Portfolio ;
let prismaService : PrismaService ;
let rakutenRapidApiService : RakutenRapidApiService ;
let rulesService : RulesService ;
let yahooFinanceService : YahooFinanceService ;
beforeAll ( async ( ) = > {
const app = await Test . createTestingModule ( {
imports : [ ] ,
providers : [
AlphaVantageService ,
ConfigurationService ,
DataProviderService ,
ExchangeRateDataService ,
GhostfolioScraperApiService ,
PrismaService ,
RakutenRapidApiService ,
RulesService ,
YahooFinanceService
]
} ) . compile ( ) ;
alphaVantageService = app . get < AlphaVantageService > ( AlphaVantageService ) ;
configurationService = app . get < ConfigurationService > ( ConfigurationService ) ;
dataProviderService = app . get < DataProviderService > ( DataProviderService ) ;
exchangeRateDataService = app . get < ExchangeRateDataService > (
ExchangeRateDataService
) ;
ghostfolioScraperApiService = app . get < GhostfolioScraperApiService > (
GhostfolioScraperApiService
dataProviderService = new DataProviderService (
null ,
null ,
null ,
null ,
null ,
null
) ;
prismaService = app . get < PrismaService > ( PrismaService ) ;
rakutenRapidApiService = app . get < RakutenRapidApiService > (
RakutenRapidApiService
) ;
rulesService = app . get < RulesService > ( RulesService ) ;
yahooFinanceService = app . get < YahooFinanceService > ( YahooFinanceService ) ;
exchangeRateDataService = new ExchangeRateDataService ( null ) ;
rulesService = new RulesService ( ) ;
await exchangeRateDataService . initialize ( ) ;
@ -600,8 +626,4 @@ describe('Portfolio', () => {
expect ( portfolio . getSymbols ( getYesterday ( ) ) ) . toEqual ( [ 'ETHUSD' ] ) ;
} ) ;
} ) ;
afterAll ( async ( ) = > {
prismaService . $disconnect ( ) ;
} ) ;
} ) ;