refactor use cases

This commit is contained in:
2026-01-08 15:34:51 +01:00
parent d984ab24a8
commit 52e9a2f6a7
362 changed files with 5192 additions and 8409 deletions

View File

@@ -7,12 +7,11 @@ import {
} from './GetUserFeedUseCase';
import type { IFeedRepository } from '../../domain/repositories/IFeedRepository';
import type { FeedItem } from '../../domain/types/FeedItem';
import type { Logger, UseCaseOutputPort } from '@core/shared/application';
import type { Logger } from '@core/shared/application';
describe('GetUserFeedUseCase', () => {
let feedRepository: IFeedRepository & { getFeedForDriver: Mock };
let logger: Logger & { debug: Mock; info: Mock; warn: Mock; error: Mock };
let output: UseCaseOutputPort<GetUserFeedResult> & { present: Mock };
let useCase: GetUserFeedUseCase;
beforeEach(() => {
@@ -28,14 +27,10 @@ describe('GetUserFeedUseCase', () => {
error: vi.fn(),
} as unknown as Logger & { debug: Mock; info: Mock; warn: Mock; error: Mock };
output = {
present: vi.fn(),
} as unknown as UseCaseOutputPort<GetUserFeedResult> & { present: Mock };
useCase = new GetUserFeedUseCase(feedRepository, logger, output);
useCase = new GetUserFeedUseCase(feedRepository, logger);
});
it('presents feed items when repository returns items', async () => {
it('returns feed items when repository returns items', async () => {
const items: FeedItem[] = [
{
id: 'item-1',
@@ -65,29 +60,26 @@ describe('GetUserFeedUseCase', () => {
const result = await useCase.execute(input);
expect(result.isOk()).toBe(true);
expect(result.unwrap()).toBeUndefined();
const feedResult = result.unwrap();
expect(feedRepository.getFeedForDriver).toHaveBeenCalledTimes(1);
expect(feedRepository.getFeedForDriver).toHaveBeenCalledWith('driver-1', 10);
expect(output.present).toHaveBeenCalledTimes(1);
const presented = (output.present as Mock).mock.calls[0]![0] as GetUserFeedResult;
expect(presented.items).toEqual(items);
expect(feedResult.items).toEqual(items);
expect(logger.warn).not.toHaveBeenCalled();
});
it('warns and presents empty list when no items exist', async () => {
it('returns empty list when no items exist', async () => {
feedRepository.getFeedForDriver.mockResolvedValue([]);
const input: GetUserFeedInput = { driverId: 'driver-1' };
const result = await useCase.execute(input);
expect(result.isOk()).toBe(true);
expect(output.present).toHaveBeenCalledTimes(1);
const feedResult = result.unwrap();
const presented = (output.present as Mock).mock.calls[0]![0] as GetUserFeedResult;
expect(presented.items).toEqual([]);
expect(feedResult.items).toEqual([]);
expect(logger.warn).toHaveBeenCalledTimes(1);
expect((logger.warn as Mock).mock.calls[0]![0]).toBe(
@@ -107,7 +99,6 @@ describe('GetUserFeedUseCase', () => {
expect(err.code).toBe('REPOSITORY_ERROR');
expect(err.details.message).toBe('DB error');
expect(output.present).not.toHaveBeenCalled();
expect(logger.error).toHaveBeenCalledTimes(1);
});
});