Setup tests (#1234)

pull/1237/head
Thomas Kaul 2 years ago committed by GitHub
parent d4e2cec77e
commit c4d83aabe7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,15 @@
import { BenchmarkService } from './benchmark.service';
describe('BenchmarkService', () => {
let benchmarkService: BenchmarkService;
beforeAll(async () => {
benchmarkService = new BenchmarkService(null, null, null, null, null);
});
it('calculateChangeInPercentage', async () => {
expect(benchmarkService.calculateChangeInPercentage(1, 2)).toEqual(1);
expect(benchmarkService.calculateChangeInPercentage(2, 2)).toEqual(0);
expect(benchmarkService.calculateChangeInPercentage(2, 1)).toEqual(-0.5);
});
});

@ -27,6 +27,10 @@ export class BenchmarkService {
private readonly symbolProfileService: SymbolProfileService private readonly symbolProfileService: SymbolProfileService
) {} ) {}
public calculateChangeInPercentage(baseValue: number, currentValue: number) {
return new Big(currentValue).div(baseValue).minus(1).toNumber();
}
public async getBenchmarks({ useCache = true } = {}): Promise< public async getBenchmarks({ useCache = true } = {}): Promise<
BenchmarkResponse['benchmarks'] BenchmarkResponse['benchmarks']
> { > {
@ -64,12 +68,13 @@ export class BenchmarkService {
benchmarks = allTimeHighs.map((allTimeHigh, index) => { benchmarks = allTimeHighs.map((allTimeHigh, index) => {
const { marketPrice } = quotes[benchmarkAssets[index].symbol] ?? {}; const { marketPrice } = quotes[benchmarkAssets[index].symbol] ?? {};
let performancePercentFromAllTimeHigh = new Big(0); let performancePercentFromAllTimeHigh = 0;
if (allTimeHigh && marketPrice) { if (allTimeHigh && marketPrice) {
performancePercentFromAllTimeHigh = new Big(marketPrice) performancePercentFromAllTimeHigh = this.calculateChangeInPercentage(
.div(allTimeHigh) allTimeHigh,
.minus(1); marketPrice
);
} }
return { return {
@ -84,7 +89,7 @@ export class BenchmarkService {
})?.name, })?.name,
performances: { performances: {
allTimeHigh: { allTimeHigh: {
performancePercent: performancePercentFromAllTimeHigh.toNumber() performancePercent: performancePercentFromAllTimeHigh
} }
} }
}; };
@ -135,26 +140,24 @@ export class BenchmarkService {
} }
}); });
const marketPriceAtStartDate = new Big( const marketPriceAtStartDate = marketDataItems?.[0]?.marketPrice ?? 0;
marketDataItems?.[0]?.marketPrice ?? 0
);
return { return {
marketData: marketDataItems.map((marketDataItem) => { marketData: marketDataItems.map((marketDataItem) => {
return { return {
date: format(marketDataItem.date, DATE_FORMAT), date: format(marketDataItem.date, DATE_FORMAT),
value: marketPriceAtStartDate.eq(0) value:
marketPriceAtStartDate === 0
? 0 ? 0
: new Big(marketDataItem.marketPrice) : this.calculateChangeInPercentage(
.div(marketPriceAtStartDate) marketPriceAtStartDate,
.minus(1) marketDataItem.marketPrice
.toNumber() * 100 ) * 100
}; };
}) })
}; };
} }
private getMarketCondition(aPerformanceInPercent: Big) { private getMarketCondition(aPerformanceInPercent: number) {
return aPerformanceInPercent.lte(-0.2) ? 'BEAR_MARKET' : 'NEUTRAL_MARKET'; return aPerformanceInPercent <= -0.2 ? 'BEAR_MARKET' : 'NEUTRAL_MARKET';
} }
} }

Loading…
Cancel
Save