diff --git a/api/db/seeds/data/common/tooling/session-tooling.js b/api/db/seeds/data/common/tooling/session-tooling.js index b4b80bdeae5..5444f82ea77 100644 --- a/api/db/seeds/data/common/tooling/session-tooling.js +++ b/api/db/seeds/data/common/tooling/session-tooling.js @@ -238,6 +238,8 @@ async function createStartedSession({ supervisorPassword, }); + _buildSupervisorAccess({ databaseBuilder, sessionId }); + const certificationCandidates = await _registerSomeCandidatesToSession({ databaseBuilder, sessionId, @@ -245,9 +247,15 @@ async function createStartedSession({ certificationCenterId, }); - await _makeCandidatesCertifiable({ databaseBuilder, certificationCandidates, maxLevel: configSession.maxLevel }); + const { coreProfileData } = await _makeCandidatesCertifiable({ + databaseBuilder, + certificationCandidates, + maxLevel: configSession.maxLevel, + }); certificationCandidates.forEach((certificationCandidate) => { + if (!certificationCandidate.userId) return; + const certificationCourseId = databaseBuilder.factory.buildCertificationCourse({ userId: certificationCandidate.userId, sessionId, @@ -260,11 +268,10 @@ async function createStartedSession({ sex: certificationCandidate.sex, birthplace: certificationCandidate.birthCity, externalId: certificationCandidate.externalId, - hasSeenEndTestScreen: true, createdAt: new Date(), updatedAt: new Date(), - completedAt: new Date(), - isPublished: true, + completedAt: null, + isPublished: false, verificationCode: `P-${verifCodeCount}`.padEnd(10, 'A'), maxReachableLevelOnCertificationDate: 6, isCancelled: false, @@ -272,12 +279,16 @@ async function createStartedSession({ pixCertificationStatus: 'validated', }).id; verifCodeCount++; - databaseBuilder.factory.buildAssessment({ + const { id: assessmentId } = databaseBuilder.factory.buildAssessment({ certificationCourseId, userId: certificationCandidate.userId, type: 'CERTIFICATION', state: 'started', }).id; + + for (const competenceData of Object.values(coreProfileData)) { + _buildChallenges({ databaseBuilder, competenceData, assessmentId, certificationCourseId, configSession }); + } }); await databaseBuilder.commit(); @@ -378,6 +389,8 @@ async function createPublishedScoSession({ assignedCertificationOfficerName: 'Mariah Carey', }); + _buildSupervisorAccess({ databaseBuilder, sessionId }); + const certificationCandidates = await _registerOrganizationLearnersToSession({ databaseBuilder, sessionId, @@ -495,6 +508,8 @@ async function createPublishedSession({ assignedCertificationOfficerName: 'Mariah Carey', }); + _buildSupervisorAccess({ databaseBuilder, sessionId }); + const certificationCandidates = await _registerCandidatesToSession({ databaseBuilder, sessionId, @@ -1162,30 +1177,43 @@ function _makeCandidatesPassCertification({ assessmentResultId, createdAt: configSession.sessionDate, }); - for (const { challenge, skill } of competenceData.threeMostDifficultSkillsAndChallenges) { - databaseBuilder.factory.buildCertificationChallenge({ - associatedSkillName: skill.name, - associatedSkillId: skill.id, - challengeId: challenge.id, - competenceId: skill.competenceId, - courseId: certificationCourseId, - createdAt: configSession.sessionDate, - updatedAt: configSession.sessionDate, - isNeutralized: false, - hasBeenSkippedAutomatically: false, - certifiableBadgeKey: null, - }); - databaseBuilder.factory.buildAnswer({ - value: 'dummy value', - result: 'ok', - assessmentId, - challengeId: challenge.id, - createdAt: configSession.sessionDate, - updatedAt: configSession.sessionDate, - timeout: null, - resultDetails: 'dummy value', - }); - } + _buildChallenges({ databaseBuilder, competenceData, assessmentId, certificationCourseId, configSession }); } } } + +function _buildChallenges({ databaseBuilder, competenceData, assessmentId, certificationCourseId, configSession }) { + for (const { challenge, skill } of competenceData.threeMostDifficultSkillsAndChallenges) { + databaseBuilder.factory.buildCertificationChallenge({ + associatedSkillName: skill.name, + associatedSkillId: skill.id, + challengeId: challenge.id, + competenceId: skill.competenceId, + courseId: certificationCourseId, + createdAt: configSession.sessionDate, + updatedAt: configSession.sessionDate, + isNeutralized: false, + hasBeenSkippedAutomatically: false, + certifiableBadgeKey: null, + }); + databaseBuilder.factory.buildAnswer({ + value: 'dummy value', + result: 'ok', + assessmentId, + challengeId: challenge.id, + createdAt: configSession.sessionDate, + updatedAt: configSession.sessionDate, + timeout: null, + resultDetails: 'dummy value', + }); + } +} + +function _buildSupervisorAccess({ databaseBuilder, sessionId }) { + const supervisor = databaseBuilder.factory.buildUser({ firstName: `supervisor${sessionId}` }); + databaseBuilder.factory.buildSupervisorAccess({ + sessionId, + userId: supervisor.id, + authorizedAt: new Date(), + }); +} diff --git a/api/scripts/data-generation/generate-certif-cli.js b/api/scripts/data-generation/generate-certif-cli.js index 7ff634f1f5f..6093e3f70ec 100755 --- a/api/scripts/data-generation/generate-certif-cli.js +++ b/api/scripts/data-generation/generate-certif-cli.js @@ -141,7 +141,7 @@ async function main({ centerType, candidateNumber, complementaryCertifications = databaseBuilder.factory.buildCertificationCenterMembership({ userId, certificationCenterId }), ); - const sessionId = await _createSessionAndReturnId(certificationCenterId, databaseBuilder); + const sessionId = await _createSessionAndReturnId({ certificationCenterId, databaseBuilder, userIds }); if (centerType === 'SCO') { await _createScoCertificationCandidates({ candidateNumber, sessionId, organizationId }, databaseBuilder); } else { @@ -202,7 +202,7 @@ async function _createComplementaryCertificationHabilitations( }); } -async function _createSessionAndReturnId(certificationCenterId, databaseBuilder) { +async function _createSessionAndReturnId({ certificationCenterId, databaseBuilder, userIds }) { const sessionCode = getNewSessionCode(); const { id } = databaseBuilder.factory.buildSession({ certificationCenterId, @@ -210,6 +210,8 @@ async function _createSessionAndReturnId(certificationCenterId, databaseBuilder) address: 'via le script de génération', createdAt: new Date(), }); + + _buildSupervisorAccess({ databaseBuilder, sessionId: id, userId: userIds.at(0) }); return id; } @@ -403,6 +405,15 @@ async function _createUser({ firstName, lastName, birthdate, email, organization return { userId, organizationLearnerId }; } +function _buildSupervisorAccess({ databaseBuilder, sessionId }) { + const supervisor = databaseBuilder.factory.buildUser({ firstName: `supervisor${sessionId}` }); + databaseBuilder.factory.buildSupervisorAccess({ + sessionId, + userId: supervisor.id, + authorizedAt: new Date(), + }); +} + const modulePath = url.fileURLToPath(import.meta.url); const isLaunchedFromCommandLine = process.argv[1] === modulePath; if (process.argv.length > 2 && !isInTest) {