70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
import type { Logger } from '@core/shared/domain';
|
|
import { AvatarGenerationRequest } from '@core/media/domain/entities/AvatarGenerationRequest';
|
|
import { InMemoryAvatarGenerationRepository } from './InMemoryAvatarGenerationRepository';
|
|
|
|
describe('InMemoryAvatarGenerationRepository', () => {
|
|
let repository: InMemoryAvatarGenerationRepository;
|
|
let mockLogger: Logger;
|
|
|
|
beforeEach(() => {
|
|
mockLogger = {
|
|
debug: vi.fn(),
|
|
info: vi.fn(),
|
|
warn: vi.fn(),
|
|
error: vi.fn(),
|
|
} as unknown as Logger;
|
|
|
|
repository = new InMemoryAvatarGenerationRepository(mockLogger);
|
|
});
|
|
|
|
it('saves and finds latest by user', async () => {
|
|
const base1 = AvatarGenerationRequest.create({
|
|
id: 'req-1',
|
|
userId: 'user-1',
|
|
facePhotoUrl: 'https://example.com/face1.png',
|
|
suitColor: 'red',
|
|
});
|
|
|
|
const base2 = AvatarGenerationRequest.create({
|
|
id: 'req-2',
|
|
userId: 'user-1',
|
|
facePhotoUrl: 'https://example.com/face2.png',
|
|
suitColor: 'blue',
|
|
});
|
|
|
|
const r1Props = base1.toProps();
|
|
const r2Props = base2.toProps();
|
|
|
|
const r1 = AvatarGenerationRequest.reconstitute(r1Props);
|
|
const r2 = AvatarGenerationRequest.reconstitute({
|
|
...r2Props,
|
|
createdAt: new Date(r1Props.createdAt.getTime() + 1000),
|
|
updatedAt: new Date(r1Props.updatedAt.getTime() + 1000),
|
|
});
|
|
|
|
await repository.save(r1);
|
|
await repository.save(r2);
|
|
|
|
expect((await repository.findById('req-1'))?.id).toBe('req-1');
|
|
expect((await repository.findByUserId('user-1')).length).toBe(2);
|
|
|
|
const latest = await repository.findLatestByUserId('user-1');
|
|
expect(latest?.id).toBe('req-2');
|
|
});
|
|
|
|
it('deletes requests', async () => {
|
|
const r = AvatarGenerationRequest.create({
|
|
id: 'req-del',
|
|
userId: 'user-del',
|
|
facePhotoUrl: 'https://example.com/face.png',
|
|
suitColor: 'green',
|
|
});
|
|
|
|
await repository.save(r);
|
|
await repository.delete('req-del');
|
|
|
|
expect(await repository.findById('req-del')).toBeNull();
|
|
});
|
|
});
|