Browse Source

Fix end date of calendar year date ranges

pull/8095/head
Thomas Kaul 6 days ago
parent
commit
c1f5456741
  1. 14
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  2. 8
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.spec.ts

14
apps/api/src/app/portfolio/calculator/portfolio-calculator.ts

@ -1418,14 +1418,8 @@ export abstract class PortfolioCalculator {
let netPerformanceAtStartDate: number; let netPerformanceAtStartDate: number;
let netPerformanceWithCurrencyEffectAtStartDate: number; let netPerformanceWithCurrencyEffectAtStartDate: number;
// The historical data items are dated at midnight in UTC, hence a start const endDate = this.toChartDate(end);
// or an end at the end of a day in the time zone of the instance is const startDate = this.toChartDate(start);
// changed to this date
const endDate = isEqual(end, endOfDay(end)) ? resetHours(end) : end;
const startDate = isEqual(start, endOfDay(start))
? resetHours(start)
: start;
for (const historicalDataItem of historicalData) { for (const historicalDataItem of historicalData) {
const date = resetHours(parseDate(historicalDataItem.date)); const date = resetHours(parseDate(historicalDataItem.date));
@ -1920,4 +1914,8 @@ export abstract class PortfolioCalculator {
await this.initialize(attempt + 1); await this.initialize(attempt + 1);
} }
} }
private toChartDate(aDate: Date) {
return isEqual(aDate, endOfDay(aDate)) ? resetHours(aDate) : aDate;
}
} }

8
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.spec.ts

@ -1,3 +1,7 @@
/**
* @jest-environment <rootDir>/jest-environment-tz.js
* @jest-environment-options {"timeZone": "America/New_York"}
*/
import { PortfolioCalculator } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator'; import { PortfolioCalculator } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator';
import { userDummyData } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator-test-utils'; import { userDummyData } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator-test-utils';
import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory'; import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory';
@ -186,10 +190,6 @@ describe('PortfolioCalculator', () => {
}); });
describe('get performance', () => { describe('get performance', () => {
// The chart items are dated at midnight in UTC, but a calendar year date
// range ends at the end of 31 December in the time zone of the instance.
// Hence this test must give the same result with the instance in any time
// zone. Set TEST_TZ to run it with the instance in another time zone.
it('with a calendar year date range', async () => { it('with a calendar year date range', async () => {
const snapshot = await portfolioCalculator.getSnapshot(); const snapshot = await portfolioCalculator.getSnapshot();

Loading…
Cancel
Save