Browse Source

Fix start date of investment timeline

pull/8122/head
Thomas Kaul 4 days ago
parent
commit
706511e7cb
  1. 46
      apps/api/src/app/portfolio/portfolio.service.spec.ts
  2. 3
      apps/api/src/app/portfolio/portfolio.service.ts

46
apps/api/src/app/portfolio/portfolio.service.spec.ts

@ -23,7 +23,7 @@ import {
Filter,
PortfolioSummary
} from '@ghostfolio/common/interfaces';
import { AccountWithBalance } from '@ghostfolio/common/types';
import { AccountWithBalance, DateRange } from '@ghostfolio/common/types';
import { AssetClass, DataSource, Prisma } from '@prisma/client';
import { Big } from 'big.js';
@ -842,6 +842,50 @@ describe('PortfolioService', () => {
});
});
describe('getInvestments', () => {
afterEach(() => {
jest.useRealTimers();
});
it.each(['2025', 'ytd'] as DateRange[])(
'should exclude the investment of the start date of the date range %s',
async (dateRange) => {
jest.useFakeTimers().setSystemTime(parseDate('2025-06-15').getTime());
jest
.spyOn(activitiesService, 'getActivitiesForPortfolioCalculator')
.mockResolvedValue({ activities: [{} as Activity], count: 1 });
jest
.spyOn(portfolioCalculatorFactory, 'createCalculator')
.mockReturnValue({
getSnapshot: jest.fn().mockResolvedValue({
historicalData: [
{ date: '2024-12-31', investmentValueWithCurrencyEffect: 100 },
{ date: '2025-01-01', investmentValueWithCurrencyEffect: 200 }
]
})
} as unknown as PortfolioCalculator);
jest.spyOn(userService, 'user').mockResolvedValue({
id: userDummyData.id,
settings: {
settings: {
baseCurrency: 'CHF'
}
}
} as unknown as Awaited<ReturnType<typeof userService.user>>);
const { investments } = await portfolioService.getInvestments({
dateRange,
userId: userDummyData.id
});
expect(investments).toEqual([{ date: '2025-01-01', investment: 200 }]);
}
);
});
describe('getPerformance', () => {
let getPerformanceOfCalculator: jest.Mock;

3
apps/api/src/app/portfolio/portfolio.service.ts

@ -98,7 +98,6 @@ import {
endOfDay,
format,
isAfter,
isBefore,
isSameMonth,
isSameYear,
min,
@ -564,7 +563,7 @@ export class PortfolioService {
const date = resetHours(parseDate(historicalDataItem.date));
return (
!isBefore(date, resetHours(startDate)) &&
isAfter(date, resetHours(startDate)) &&
!isAfter(date, resetHours(endDate))
);
});

Loading…
Cancel
Save