diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts index 2dee4cbc89..87474e806c 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts @@ -1,4 +1,10 @@ -import { ExportResponse } from '@ghostfolio/common/interfaces'; +import { PortfolioCalculator } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator'; +import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; +import { + ExportResponse, + HistoricalDataItem +} from '@ghostfolio/common/interfaces'; +import { DateRange } from '@ghostfolio/common/types'; import { readFileSync } from 'node:fs'; @@ -38,6 +44,33 @@ export const userDummyData = { id: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' }; +/** + * Returns the last chart item of getPerformance() for each date range + */ +export async function getPerformanceByDateRange({ + dateRanges, + portfolioCalculator +}: { + dateRanges: DateRange[]; + portfolioCalculator: PortfolioCalculator; +}): Promise<{ [dateRange: string]: HistoricalDataItem }> { + const performanceByDateRange: { [dateRange: string]: HistoricalDataItem } = + {}; + + for (const dateRange of dateRanges) { + const { endDate, startDate } = getIntervalFromDateRange({ dateRange }); + + const { chart } = await portfolioCalculator.getPerformance({ + end: endDate, + start: startDate + }); + + performanceByDateRange[dateRange] = chart.at(-1); + } + + return performanceByDateRange; +} + export function loadExportFile(filePath: string): ExportResponse { return JSON.parse(readFileSync(filePath, 'utf8')); }