import { INestApplicationContext } from '@nestjs/common'; import type { Suggestion } from '../../generated/prisma'; import { PrismaService } from '../../src/prisma/prisma.service'; import { SuggestionsService } from '../../src/suggestions/suggestions.service'; import type { ProposeInput } from '../../src/suggestions/suggestion.types'; /** * Proposes a suggestion in its own transaction, as a rule handler would. * Throws when nothing was proposed (anchor or intent already taken), so a * test never works with a suggestion that does not exist. */ export async function proposeForTest( app: INestApplicationContext, input: ProposeInput, ): Promise { const prisma = app.get(PrismaService); const service = app.get(SuggestionsService); const created = await prisma.$transaction((tx) => service.proposeIn(tx, input), ); if (created === null) { throw new Error(`proposeForTest: nothing proposed for ${input.anchor}`); } return created; }