62 lines
2.2 KiB
TypeScript
62 lines
2.2 KiB
TypeScript
import { vi } from 'vitest';
|
|
import type { ICommentRepository } from '../../domain/repositories/comment.repository.interface.js';
|
|
import type { IIssueRepository } from '../../../issue/domain/repositories/issue.repository.interface.js';
|
|
import { Comment } from '../../domain/entities/comment.entity.js';
|
|
import { Issue } from '../../../issue/domain/entities/issue.entity.js';
|
|
import { CommentAuthorExpanderService } from '../services/comment-author-expander.service.js';
|
|
import { CommentApplicationMapper } from '../mappers/comment-application.mapper.js';
|
|
|
|
export const buildComment = (overrides: Partial<{ id: string; issueId: number; authorId: string; deletedAt: Date | null }> = {}) =>
|
|
Comment.reconstitute({
|
|
id: overrides.id ?? 'comment-1',
|
|
content: 'Original',
|
|
issueId: overrides.issueId ?? 1,
|
|
authorId: overrides.authorId ?? 'user-1',
|
|
editedAt: null,
|
|
deletedAt: overrides.deletedAt ?? null,
|
|
createdAt: new Date('2026-01-01T00:00:00.000Z'),
|
|
updatedAt: new Date('2026-01-01T00:00:00.000Z'),
|
|
});
|
|
|
|
export const buildIssue = () =>
|
|
Issue.reconstitute({
|
|
id: 1,
|
|
key: 'ISSUE-1',
|
|
title: 'Issue',
|
|
content: null,
|
|
status: 'OPEN',
|
|
priority: 0,
|
|
assignee: null,
|
|
reporter: 'user-1',
|
|
projectId: 'project-1',
|
|
dueDate: null,
|
|
createdAt: new Date('2026-01-01T00:00:00.000Z'),
|
|
updatedAt: new Date('2026-01-01T00:00:00.000Z'),
|
|
});
|
|
|
|
export const mockCommentRepository = (): ICommentRepository => ({
|
|
findById: vi.fn(),
|
|
findByIssue: vi.fn(),
|
|
create: vi.fn(),
|
|
update: vi.fn(),
|
|
});
|
|
|
|
export const mockIssueRepository = (): IIssueRepository => ({
|
|
findById: vi.fn(),
|
|
findByCKey: vi.fn(),
|
|
findAll: vi.fn(),
|
|
countByStatus: vi.fn(),
|
|
create: vi.fn(),
|
|
update: vi.fn(),
|
|
delete: vi.fn(),
|
|
});
|
|
|
|
/** Экспандер без похода за пользователями: author всегда null */
|
|
export const mockAuthorExpander = () => {
|
|
const toDto = (comment: Comment) => CommentApplicationMapper.toDto(comment, new Map());
|
|
return {
|
|
expand: vi.fn(async (comment: Comment) => toDto(comment)),
|
|
expandAll: vi.fn(async (comments: Comment[]) => comments.map(toDto)),
|
|
} as unknown as CommentAuthorExpanderService;
|
|
};
|