feat(final-docs): mentor.getProjectFinalDocuments procedure

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matt
2026-06-09 15:50:42 +02:00
parent b66e2071f9
commit 8c6a59bad9
2 changed files with 49 additions and 0 deletions

View File

@@ -17,6 +17,7 @@ import {
} from '@/server/services/final-documents'
import * as applicantRouter from '@/server/routers/applicant'
import * as finalistRouter from '@/server/routers/finalist'
import * as mentorRouter from '@/server/routers/mentor'
import { createCaller } from '../setup'
const programIds: string[] = []
@@ -209,3 +210,35 @@ describe('finalist.listReviewDocuments', () => {
await expect(caller.listReviewDocuments({ programId: program.id })).rejects.toThrow(TRPCError)
})
})
describe('mentor.getProjectFinalDocuments', () => {
const localPrograms: string[] = []
const localUsers: string[] = []
afterAll(async () => { for (const id of localPrograms) await cleanupTestData(id, localUsers) })
it('returns status for a project the mentor is assigned to', async () => {
const program = await createTestProgram(); localPrograms.push(program.id)
const comp = await createTestCompetition(program.id, { status: 'ACTIVE' })
const round = await createTestRound(comp.id, { roundType: 'LIVE_FINAL', status: 'ROUND_ACTIVE', sortOrder: 6, windowCloseAt: new Date(Date.now() + 86_400_000) })
await prisma.fileRequirement.create({ data: { id: uid('req'), roundId: round.id, name: 'Executive Summary', acceptedMimeTypes: ['application/pdf'], isRequired: true, sortOrder: 1 } })
const project = await createTestProject(program.id)
await createTestProjectRoundState(project.id, round.id)
const mentor = await createTestUser('MENTOR'); localUsers.push(mentor.id)
await prisma.mentorAssignment.create({ data: { projectId: project.id, mentorId: mentor.id } })
const caller = createCaller(mentorRouter.mentorRouter, mentor)
const status = await caller.getProjectFinalDocuments({ projectId: project.id })
expect(status?.roundId).toBe(round.id)
})
it('forbids a mentor not assigned to the project', async () => {
const program = await createTestProgram(); localPrograms.push(program.id)
const comp = await createTestCompetition(program.id, { status: 'ACTIVE' })
const round = await createTestRound(comp.id, { roundType: 'LIVE_FINAL', status: 'ROUND_ACTIVE', sortOrder: 6 })
const project = await createTestProject(program.id)
await createTestProjectRoundState(project.id, round.id)
const mentor = await createTestUser('MENTOR'); localUsers.push(mentor.id)
const caller = createCaller(mentorRouter.mentorRouter, mentor)
await expect(caller.getProjectFinalDocuments({ projectId: project.id })).rejects.toThrow()
})
})