fix adapters
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import type { Logger } from '@core/shared/application';
|
||||
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();
|
||||
});
|
||||
});
|
||||
21
adapters/media/ports/InMemoryFaceValidationAdapter.test.ts
Normal file
21
adapters/media/ports/InMemoryFaceValidationAdapter.test.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
import type { Logger } from '@core/shared/application';
|
||||
import { InMemoryFaceValidationAdapter } from './InMemoryFaceValidationAdapter';
|
||||
|
||||
describe('InMemoryFaceValidationAdapter', () => {
|
||||
it('validates face photos as valid (mock)', async () => {
|
||||
const logger = {
|
||||
debug: vi.fn(),
|
||||
info: vi.fn(),
|
||||
warn: vi.fn(),
|
||||
error: vi.fn(),
|
||||
} as unknown as Logger;
|
||||
|
||||
const adapter = new InMemoryFaceValidationAdapter(logger);
|
||||
|
||||
const result = await adapter.validateFacePhoto('data');
|
||||
expect(result.isValid).toBe(true);
|
||||
expect(result.hasFace).toBe(true);
|
||||
expect(result.faceCount).toBe(1);
|
||||
});
|
||||
});
|
||||
21
adapters/media/ports/InMemoryImageServiceAdapter.test.ts
Normal file
21
adapters/media/ports/InMemoryImageServiceAdapter.test.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
import type { Logger } from '@core/shared/application';
|
||||
import { InMemoryImageServiceAdapter } from './InMemoryImageServiceAdapter';
|
||||
|
||||
describe('InMemoryImageServiceAdapter', () => {
|
||||
it('returns mock urls', () => {
|
||||
const logger = {
|
||||
debug: vi.fn(),
|
||||
info: vi.fn(),
|
||||
warn: vi.fn(),
|
||||
error: vi.fn(),
|
||||
} as unknown as Logger;
|
||||
|
||||
const adapter = new InMemoryImageServiceAdapter(logger);
|
||||
|
||||
expect(adapter.getDriverAvatar('driver-1')).toContain('/avatars/driver-1.png');
|
||||
expect(adapter.getTeamLogo('team-1')).toContain('/logos/team-team-1.png');
|
||||
expect(adapter.getLeagueCover('league-1')).toContain('/covers/league-league-1.png');
|
||||
expect(adapter.getLeagueLogo('league-1')).toContain('/logos/league-league-1.png');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user