Browse Source

Extend portfolio calculator tests by performance of date ranges

pull/7910/head
Thomas Kaul 4 weeks ago
parent
commit
ae1e985c22
  1. 35
      apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts

35
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'; import { readFileSync } from 'node:fs';
@ -38,6 +44,33 @@ export const userDummyData = {
id: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' 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 { export function loadExportFile(filePath: string): ExportResponse {
return JSON.parse(readFileSync(filePath, 'utf8')); return JSON.parse(readFileSync(filePath, 'utf8'));
} }

Loading…
Cancel
Save