74 lines
2.2 KiB
TypeScript
74 lines
2.2 KiB
TypeScript
import { ConsistencyService } from './consistency.service';
|
|
|
|
describe('ConsistencyService', () => {
|
|
const makePrisma = () => {
|
|
const counts = {
|
|
product: 1,
|
|
project: 2,
|
|
version: 3,
|
|
requirement: 4,
|
|
versionPlan: 5,
|
|
devTask: 6,
|
|
testCase: 7,
|
|
bug: 8,
|
|
user: 9,
|
|
taskCategory: 10,
|
|
taskWorklog: 11,
|
|
overtimeRecord: 12,
|
|
workActivity: 13,
|
|
auditEvent: 14,
|
|
};
|
|
const prisma: any = {
|
|
$queryRawUnsafe: jest.fn((sql: string) => {
|
|
if (sql.includes('dev_tasks') && sql.includes("version_id = ''")) return Promise.resolve([{ count: 1n }]);
|
|
if (sql.includes('requirements') && sql.includes('missing_version')) return Promise.resolve([{ count: 2n }]);
|
|
if (sql.includes('audit_events') && sql.includes("entity_type = 'bug'")) return Promise.resolve([{ count: 0n }]);
|
|
return Promise.resolve([{ count: 0n }]);
|
|
}),
|
|
};
|
|
for (const [model, count] of Object.entries(counts)) {
|
|
prisma[model] = { count: jest.fn().mockResolvedValue(count) };
|
|
}
|
|
return prisma;
|
|
};
|
|
|
|
it('returns counts plus error/warn consistency groups', async () => {
|
|
const prisma = makePrisma();
|
|
const service = new ConsistencyService(prisma);
|
|
|
|
const result = await service.run();
|
|
|
|
expect(result.status).toBe('fail');
|
|
expect(result.counts.devTasks).toBe(6);
|
|
expect(result.summary.errors).toBeGreaterThan(0);
|
|
expect(result.summary.warnings).toBeGreaterThan(0);
|
|
expect(result.checks.partitionKeys).toEqual(
|
|
expect.arrayContaining([
|
|
expect.objectContaining({
|
|
id: 'dev_tasks.version_id.present',
|
|
severity: 'error',
|
|
count: 1,
|
|
}),
|
|
]),
|
|
);
|
|
expect(result.checks.orphanReferences).toEqual(
|
|
expect.arrayContaining([
|
|
expect.objectContaining({
|
|
id: 'requirements.version_id.exists',
|
|
severity: 'error',
|
|
count: 2,
|
|
}),
|
|
]),
|
|
);
|
|
expect(result.checks.auditCoverage).toEqual(
|
|
expect.arrayContaining([
|
|
expect.objectContaining({
|
|
id: 'audit.coverage.bug',
|
|
severity: 'warn',
|
|
count: 0,
|
|
}),
|
|
]),
|
|
);
|
|
});
|
|
});
|