All files / server/src/features/program-item/utils addSignupQuestions.ts

88.23% Statements 15/17
75% Branches 3/4
100% Functions 5/5
88.23% Lines 15/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46            1x         3x   3x 1x   3x     3x 1x     2x 2x           2x 3x     2x     2x 1x         2x    
import { findProgramItems } from "server/features/program-item/programItemRepository";
import { saveSignupQuestion } from "server/features/settings/settingsRepository";
import { logger } from "server/utils/logger";
import { config } from "shared/config";
import { ProgramType } from "shared/types/models/programItem";
 
export const addSignupQuestions = async (): Promise<void> => {
  const {
    signupQuestions,
    tournamentSignupQuestion,
    tournamentSignupQuestionExcludeIds,
  } = config.event();
 
  const questionPromises = signupQuestions.map(async (signupQuestion) => {
    await saveSignupQuestion(signupQuestion);
  });
  await Promise.all(questionPromises);
 
  // Most tournaments have same private signup question where attendee contact details are asked
  if (!tournamentSignupQuestion) {
    return;
  }
 
  const programItemsResult = await findProgramItems();
  Iif (!programItemsResult.ok) {
    logger.error(
      new Error(`Error finding program items: ${programItemsResult.error}`),
    );
    return;
  }
  const tournaments = programItemsResult.value
    .filter((programItem) => programItem.programType === ProgramType.TOURNAMENT)
    .filter(
      (programItem) =>
        !tournamentSignupQuestionExcludeIds.includes(programItem.programItemId),
    );
 
  const tournamentPromises = tournaments.map(async (tournament) => {
    await saveSignupQuestion({
      ...tournamentSignupQuestion,
      programItemId: tournament.programItemId,
    });
  });
  await Promise.all(tournamentPromises);
};