diff --git a/api/eslint.config.mjs b/api/eslint.config.mjs index 935345a5fe1..99d4163ccba 100644 --- a/api/eslint.config.mjs +++ b/api/eslint.config.mjs @@ -118,6 +118,7 @@ export default defineConfig([ { files: [ 'src/certification/configuration/**/*.{js,mjs,ts}', + 'src/certification/enrolment/**/*.{js,mjs,ts}', 'src/certification/results/**/*.{js,mjs,ts}', 'src/certification/evaluation/**/*.{js,mjs,ts}', ], diff --git a/api/src/certification/enrolment/application/api/candidates-api.js b/api/src/certification/enrolment/application/api/candidates-api.js index f56f1168aaf..f0b1c786bdd 100644 --- a/api/src/certification/enrolment/application/api/candidates-api.js +++ b/api/src/certification/enrolment/application/api/candidates-api.js @@ -9,9 +9,9 @@ import { usecases } from '../../../enrolment/domain/usecases/index.js'; * @returns {Promise} * @throws {TypeError} preconditions failed */ -export const hasBeenCandidate = async ({ userId }) => { +export async function hasBeenCandidate({ userId }) { if (!userId) { throw new TypeError('user identifier is required'); } return usecases.hasBeenCandidate({ userId }); -}; +} diff --git a/api/src/certification/enrolment/application/attendance-sheet-controller.js b/api/src/certification/enrolment/application/attendance-sheet-controller.js index 33c934e13f9..725e72724cd 100644 --- a/api/src/certification/enrolment/application/attendance-sheet-controller.js +++ b/api/src/certification/enrolment/application/attendance-sheet-controller.js @@ -1,7 +1,7 @@ import { getI18nFromRequest } from '../../../shared/infrastructure/i18n/i18n.js'; import { usecases } from '../domain/usecases/index.js'; -const getAttendanceSheet = async function (request, h) { +async function getAttendanceSheet(request, h) { const sessionId = request.params.sessionId; const { userId } = request.auth.credentials; @@ -12,9 +12,8 @@ const getAttendanceSheet = async function (request, h) { .response(attendanceSheet) .header('Content-Type', 'application/pdf') .header('Content-Disposition', `attachment; filename=${fileName}`); -}; +} -const attendanceSheetController = { +export const attendanceSheetController = { getAttendanceSheet, }; -export { attendanceSheetController }; diff --git a/api/src/certification/enrolment/application/attendance-sheet-route.js b/api/src/certification/enrolment/application/attendance-sheet-route.js index 5f41363355a..2ab0ae9dbe7 100644 --- a/api/src/certification/enrolment/application/attendance-sheet-route.js +++ b/api/src/certification/enrolment/application/attendance-sheet-route.js @@ -4,7 +4,7 @@ import { identifiersType } from '../../../shared/domain/types/identifiers-type.j import { authorization } from '../../shared/application/pre-handlers/authorization.js'; import { attendanceSheetController } from './attendance-sheet-controller.js'; -const register = async function (server) { +async function register(server) { server.route([ { method: 'GET', @@ -30,6 +30,6 @@ const register = async function (server) { }, }, ]); -}; +} export const attendanceSheetRoute = { name: 'certification/enrolment/attendance-sheet-api', register }; diff --git a/api/src/certification/enrolment/application/certification-candidate-controller.js b/api/src/certification/enrolment/application/certification-candidate-controller.js index 1c423139535..4a0bbfe3dc3 100644 --- a/api/src/certification/enrolment/application/certification-candidate-controller.js +++ b/api/src/certification/enrolment/application/certification-candidate-controller.js @@ -3,7 +3,7 @@ import { usecases } from '../domain/usecases/index.js'; import { candidateSerializer } from '../infrastructure/serializers/candidate-serializer.js'; import { timelineSerializer } from '../infrastructure/serializers/timeline-serializer.js'; -const addCandidate = async function (request, h, dependencies = { candidateSerializer }) { +async function addCandidate(request, h, dependencies = { candidateSerializer }) { const sessionId = request.params.sessionId; const candidate = await dependencies.candidateSerializer.deserialize(request.payload); const candidateId = await usecases.addCandidateToSession({ @@ -14,29 +14,29 @@ const addCandidate = async function (request, h, dependencies = { candidateSeria const serializedId = candidateSerializer.serializeId(candidateId); return h.response(serializedId).created(); -}; +} -const getEnrolledCandidates = async function (request, h, dependencies = { candidateSerializer }) { +async function getEnrolledCandidates(request, h, dependencies = { candidateSerializer }) { const sessionId = request.params.sessionId; const enrolledCandidates = await usecases.getEnrolledCandidatesInSession({ sessionId }); return dependencies.candidateSerializer.serialize(enrolledCandidates); -}; +} -const getSessionCandidates = async function (request, h, dependencies = { candidateSerializer }) { +async function getSessionCandidates(request, h, dependencies = { candidateSerializer }) { const sessionId = request.params.sessionId; const enrolledCandidates = await usecases.getEnrolledCandidatesInSession({ sessionId }); return dependencies.candidateSerializer.serializeForSession(enrolledCandidates); -}; +} -const deleteCandidate = async function (request, h) { +async function deleteCandidate(request, h) { const candidateId = request.params.certificationCandidateId; await usecases.deleteUnlinkedCertificationCandidate({ candidateId }); return h.response().code(204); -}; +} -const updateEnrolledCandidate = async function (request, h, dependencies = { candidateSerializer }) { +async function updateEnrolledCandidate(request, h, dependencies = { candidateSerializer }) { const candidateId = request.params.certificationCandidateId; const enrolledCandidateData = request.payload.data.attributes; const editedCandidate = dependencies.candidateSerializer.deserializeForEdition({ @@ -49,9 +49,9 @@ const updateEnrolledCandidate = async function (request, h, dependencies = { can }); return h.response().code(204); -}; +} -const validateCertificationInstructions = async function (request, h, dependencies = { candidateSerializer }) { +async function validateCertificationInstructions(request, h, dependencies = { candidateSerializer }) { const certificationCandidateId = request.params.certificationCandidateId; const candidate = await usecases.candidateHasSeenCertificationInstructions({ @@ -59,9 +59,9 @@ const validateCertificationInstructions = async function (request, h, dependenci }); return dependencies.candidateSerializer.serializeForParticipation(candidate); -}; +} -const getCandidate = async function (request, h, dependencies = { candidateSerializer }) { +async function getCandidate(request, h, dependencies = { candidateSerializer }) { const certificationCandidateId = request.params.certificationCandidateId; const candidate = await usecases.getCandidate({ @@ -69,9 +69,9 @@ const getCandidate = async function (request, h, dependencies = { candidateSeria }); return dependencies.candidateSerializer.serializeForParticipation(candidate); -}; +} -const getTimeline = async function (request, h, dependencies = { timelineSerializer }) { +async function getTimeline(request, h, dependencies = { timelineSerializer }) { const certificationCandidateId = request.params.certificationCandidateId; const timeline = await usecases.getCandidateTimeline({ @@ -79,9 +79,9 @@ const getTimeline = async function (request, h, dependencies = { timelineSeriali }); return dependencies.timelineSerializer.serialize(timeline); -}; +} -const certificationCandidateController = { +export const certificationCandidateController = { addCandidate, getEnrolledCandidates, getSessionCandidates, @@ -91,4 +91,3 @@ const certificationCandidateController = { validateCertificationInstructions, updateEnrolledCandidate, }; -export { certificationCandidateController }; diff --git a/api/src/certification/enrolment/application/certification-candidate-route.js b/api/src/certification/enrolment/application/certification-candidate-route.js index a457d156136..043e0643fe1 100644 --- a/api/src/certification/enrolment/application/certification-candidate-route.js +++ b/api/src/certification/enrolment/application/certification-candidate-route.js @@ -11,7 +11,7 @@ import { enrolmentSecurityPreHandlers } from './securiy-pre-handlers.js'; const Joi = BaseJoi.extend(JoiDate); -const register = async function (server) { +async function register(server) { server.route([ { method: 'POST', @@ -258,6 +258,6 @@ const register = async function (server) { }, }, ]); -}; +} export const certificationCandidateRoute = { name: 'certification/enrolment/certification-candidate-api', register }; diff --git a/api/src/certification/enrolment/application/certification-center-controller.js b/api/src/certification/enrolment/application/certification-center-controller.js index 2b57822dda8..f5a209f2990 100644 --- a/api/src/certification/enrolment/application/certification-center-controller.js +++ b/api/src/certification/enrolment/application/certification-center-controller.js @@ -2,7 +2,7 @@ import { usecases } from '../domain/usecases/index.js'; import { divisionSerializer } from '../infrastructure/serializers/division-serializer.js'; import { studentCertificationSerializer } from '../infrastructure/serializers/student-certification-serializer.js'; -const getStudents = async function (request) { +async function getStudents(request) { const certificationCenterId = request.params.certificationCenterId; const sessionId = request.params.sessionId; @@ -18,17 +18,15 @@ const getStudents = async function (request) { filter, }); return studentCertificationSerializer.serialize(data, pagination); -}; +} -const getDivisions = async function (request) { +async function getDivisions(request) { const certificationCenterId = request.params.certificationCenterId; const divisions = await usecases.findDivisionsByCertificationCenter({ certificationCenterId, }); return divisionSerializer.serialize(divisions); -}; +} -const certificationCenterController = { getStudents, getDivisions }; - -export { certificationCenterController }; +export const certificationCenterController = { getStudents, getDivisions }; diff --git a/api/src/certification/enrolment/application/certification-center-route.js b/api/src/certification/enrolment/application/certification-center-route.js index d79af458888..05c34dfa6ae 100644 --- a/api/src/certification/enrolment/application/certification-center-route.js +++ b/api/src/certification/enrolment/application/certification-center-route.js @@ -4,7 +4,7 @@ import { securityPreHandlers } from '../../../shared/application/security-pre-ha import { identifiersType } from '../../../shared/domain/types/identifiers-type.js'; import { certificationCenterController } from './certification-center-controller.js'; -const register = async function (server) { +async function register(server) { server.route([ { method: 'GET', @@ -40,7 +40,7 @@ const register = async function (server) { }, }, ]); -}; +} export const certificationCenterRoute = { name: 'certification/enrolment/certification-centers-session-students-api', diff --git a/api/src/certification/enrolment/application/certification-centers-get-divisions-route.js b/api/src/certification/enrolment/application/certification-centers-get-divisions-route.js index 9468d53b7b7..061693181f2 100644 --- a/api/src/certification/enrolment/application/certification-centers-get-divisions-route.js +++ b/api/src/certification/enrolment/application/certification-centers-get-divisions-route.js @@ -4,7 +4,7 @@ import { securityPreHandlers } from '../../../shared/application/security-pre-ha import { identifiersType } from '../../../shared/domain/types/identifiers-type.js'; import { certificationCenterController } from './certification-center-controller.js'; -const register = async function (server) { +async function register(server) { server.route([ { method: 'GET', @@ -30,7 +30,7 @@ const register = async function (server) { }, }, ]); -}; +} export const certificationCentersGetDivisionsRoute = { name: 'certification/enrolment/certification-centers-get-divisions-api', diff --git a/api/src/certification/enrolment/application/enrolment-controller.js b/api/src/certification/enrolment/application/enrolment-controller.js index a38d2a77634..48af2146c2f 100644 --- a/api/src/certification/enrolment/application/enrolment-controller.js +++ b/api/src/certification/enrolment/application/enrolment-controller.js @@ -3,7 +3,7 @@ import { usecases } from '../domain/usecases/index.js'; import { fillCandidatesImportSheet } from '../infrastructure/candidates-import/fill-candidates-import-sheet.js'; import { candidateSerializer } from '../infrastructure/serializers/candidate-serializer.js'; -const enrolStudentsToSession = async function (request, h, dependencies = { candidateSerializer }) { +async function enrolStudentsToSession(request, h, dependencies = { candidateSerializer }) { const sessionId = request.params.sessionId; const studentIds = request.deserializedPayload.organizationLearnerIds; @@ -11,9 +11,9 @@ const enrolStudentsToSession = async function (request, h, dependencies = { cand const enrolledCandidates = await usecases.getEnrolledCandidatesInSession({ sessionId }); const enrolledCandidatesSerialized = dependencies.candidateSerializer.serialize(enrolledCandidates); return h.response(enrolledCandidatesSerialized).created(); -}; +} -const getCandidatesImportSheet = async function (request, h, dependencies = { fillCandidatesImportSheet }) { +async function getCandidatesImportSheet(request, h, dependencies = { fillCandidatesImportSheet }) { const i18n = getI18nFromRequest(request); const sessionId = request.params.sessionId; @@ -37,9 +37,9 @@ const getCandidatesImportSheet = async function (request, h, dependencies = { fi .response(candidateImportSheet) .header('Content-Type', 'application/vnd.oasis.opendocument.spreadsheet') .header('Content-Disposition', `attachment; filename=${filename + sessionId}.ods`); -}; +} -const importCertificationCandidatesFromCandidatesImportSheet = async function (request) { +async function importCertificationCandidatesFromCandidatesImportSheet(request) { const i18n = getI18nFromRequest(request); const sessionId = request.params.sessionId; @@ -52,12 +52,10 @@ const importCertificationCandidatesFromCandidatesImportSheet = async function (r }); return null; -}; +} -const enrolmentController = { +export const enrolmentController = { enrolStudentsToSession, getCandidatesImportSheet, importCertificationCandidatesFromCandidatesImportSheet, }; - -export { enrolmentController }; diff --git a/api/src/certification/enrolment/application/enrolment-route.js b/api/src/certification/enrolment/application/enrolment-route.js index 4056fa09fa4..1f2689507cf 100644 --- a/api/src/certification/enrolment/application/enrolment-route.js +++ b/api/src/certification/enrolment/application/enrolment-route.js @@ -5,7 +5,7 @@ import { identifiersType } from '../../../shared/domain/types/identifiers-type.j import { authorization } from '../../shared/application/pre-handlers/authorization.js'; import { enrolmentController } from './enrolment-controller.js'; -const register = async function (server) { +async function register(server) { server.route([ { method: 'PUT', @@ -81,6 +81,6 @@ const register = async function (server) { }, }, ]); -}; +} export const enrolmentRoute = { name: 'certification/enrolment/enrolment-api', register }; diff --git a/api/src/certification/enrolment/application/session-mass-import-controller.js b/api/src/certification/enrolment/application/session-mass-import-controller.js index 3133f195798..e1900105517 100644 --- a/api/src/certification/enrolment/application/session-mass-import-controller.js +++ b/api/src/certification/enrolment/application/session-mass-import-controller.js @@ -4,7 +4,7 @@ import { usecases } from '../domain/usecases/index.js'; import { sessionsCsvSerializer } from '../infrastructure/serializers/csv/sessions-csv-serializer.js'; import { getCsvHeaders } from '../infrastructure/utils/sessions-import.js'; -const createSessions = async function (request, h) { +async function createSessions(request, h) { const authenticatedUserId = request.auth.credentials.userId; const { cachedValidatedSessionsKey } = request.payload.data.attributes; @@ -14,13 +14,9 @@ const createSessions = async function (request, h) { userId: authenticatedUserId, }); return h.response().code(201); -}; +} -const validateSessions = async function ( - request, - h, - dependencies = { csvHelpers, csvSerializer: sessionsCsvSerializer }, -) { +async function validateSessions(request, h, dependencies = { csvHelpers, csvSerializer: sessionsCsvSerializer }) { const i18n = getI18nFromRequest(request); const certificationCenterId = request.params.certificationCenterId; @@ -42,9 +38,9 @@ const validateSessions = async function ( i18n, }); return h.response(sessionMassImportReport).code(200); -}; +} -const getTemplate = async function (request, h) { +async function getTemplate(request, h) { const { habilitationLabels, shouldDisplayBillingModeColumns } = await usecases.getMassImportTemplateInformation({ centerId: request.params.certificationCenterId, }); @@ -57,12 +53,10 @@ const getTemplate = async function (request, h) { .header('Content-Type', 'text/csv; charset=utf-8') .header('content-disposition', 'filename=import-sessions') .code(200); -}; +} -const sessionMassImportController = { +export const sessionMassImportController = { createSessions, validateSessions, getTemplate, }; - -export { sessionMassImportController }; diff --git a/api/src/certification/enrolment/application/session-mass-import-route.js b/api/src/certification/enrolment/application/session-mass-import-route.js index 47532f71025..43460edb160 100644 --- a/api/src/certification/enrolment/application/session-mass-import-route.js +++ b/api/src/certification/enrolment/application/session-mass-import-route.js @@ -5,7 +5,7 @@ import { securityPreHandlers } from '../../../shared/application/security-pre-ha import { identifiersType } from '../../../shared/domain/types/identifiers-type.js'; import { sessionMassImportController } from './session-mass-import-controller.js'; -const register = async function (server) { +async function register(server) { server.route([ { method: 'POST', @@ -94,6 +94,6 @@ const register = async function (server) { }, }, ]); -}; +} export const sessionMassImportRoute = { name: 'certification/enrolment/session-mass-import-api', register }; diff --git a/api/src/certification/enrolment/application/session-route.js b/api/src/certification/enrolment/application/session-route.js index 463712a304e..b08f37dff8f 100644 --- a/api/src/certification/enrolment/application/session-route.js +++ b/api/src/certification/enrolment/application/session-route.js @@ -7,7 +7,7 @@ import { identifiersType } from '../../../shared/domain/types/identifiers-type.j import { authorization } from '../../shared/application/pre-handlers/authorization.js'; import { sessionController } from './session-controller.js'; -const register = async function (server) { +async function register(server) { server.route([ { method: 'POST', @@ -166,6 +166,6 @@ const register = async function (server) { }, }, ]); -}; +} export const sessionRoute = { name: 'certification/enrolment/certification-enrollment-api', register }; diff --git a/api/src/certification/enrolment/application/user-controller.js b/api/src/certification/enrolment/application/user-controller.js index 2a348bd4165..53f116b341b 100644 --- a/api/src/certification/enrolment/application/user-controller.js +++ b/api/src/certification/enrolment/application/user-controller.js @@ -1,13 +1,13 @@ import { usecases } from '../domain/usecases/index.js'; import { userCertificationEligibilitySerializer } from '../infrastructure/serializers/user-certification-eligibility-serializer.js'; -const isCertifiable = async function (request) { +async function isCertifiable(request) { const userId = request.auth.credentials.userId; const certificationEligibility = await usecases.getUserCertificationEligibility({ userId, }); return userCertificationEligibilitySerializer.serialize(certificationEligibility); -}; +} const userController = { isCertifiable, diff --git a/api/src/certification/enrolment/application/user-route.js b/api/src/certification/enrolment/application/user-route.js index c6eadbe20ac..09d08f9f5d9 100644 --- a/api/src/certification/enrolment/application/user-route.js +++ b/api/src/certification/enrolment/application/user-route.js @@ -4,7 +4,7 @@ import { securityPreHandlers } from '../../../shared/application/security-pre-ha import { identifiersType } from '../../../shared/domain/types/identifiers-type.js'; import { userController } from './user-controller.js'; -const register = async function (server) { +async function register(server) { server.route([ { method: 'GET', @@ -31,7 +31,7 @@ const register = async function (server) { }, }, ]); -}; +} export const userRoute = { name: 'certification/enrolment/certification-enrolment-certification-eligibility-api', diff --git a/api/src/certification/enrolment/domain/services/eligibility-service.js b/api/src/certification/enrolment/domain/services/eligibility-service.js index f5bab304bf8..0f3095fecee 100644 --- a/api/src/certification/enrolment/domain/services/eligibility-service.js +++ b/api/src/certification/enrolment/domain/services/eligibility-service.js @@ -1,14 +1,14 @@ import { ComplementaryCertificationKeys } from '../../../shared/domain/models/ComplementaryCertificationKeys.js'; import { CertificationEligibility, UserCertificationEligibility } from '../read-models/UserCertificationEligibility.js'; -export const getUserCertificationEligibility = async ({ +export async function getUserCertificationEligibility({ userId, limitDate, placementProfileService, certificationBadgesService, complementaryCertificationCourseRepository, complementaryCertificationBadgeWithOffsetVersionRepository, -}) => { +}) { const placementProfile = await placementProfileService.getPlacementProfile({ userId, limitDate }); const isCertifiable = placementProfile.isCertifiable(); let doubleCertificationEligibility = null; @@ -73,7 +73,7 @@ export const getUserCertificationEligibility = async ({ isCertifiable, doubleCertificationEligibility, }); -}; +} function _isEligible({ badgeIsOutdated, badgeIsOutdatedByOneVersionAndUserHasNoComplementaryCertificationForIt }) { return !badgeIsOutdated || badgeIsOutdatedByOneVersionAndUserHasNoComplementaryCertificationForIt; diff --git a/api/src/certification/enrolment/domain/services/session-code-service.js b/api/src/certification/enrolment/domain/services/session-code-service.js index 3785bae332e..2bc40cdb246 100644 --- a/api/src/certification/enrolment/domain/services/session-code-service.js +++ b/api/src/certification/enrolment/domain/services/session-code-service.js @@ -18,7 +18,7 @@ function _randomNumberCharacter() { return sample(numberCharacter); } -function _generateSessionCode() { +export function generateSessionCode() { const code = '' + _randomLetter() + @@ -30,7 +30,7 @@ function _generateSessionCode() { return code; } -function _generateInvigilatorPassword() { +export function generateInvigilatorPassword() { const chars = Array.from(INVIGILATOR_PASSWORD_CHARS); for (let i = INVIGILATOR_PASSWORD_LENGTH; i >= 0; i--) { const j = Math.floor(Math.random() * (chars.length - 1)); @@ -38,13 +38,3 @@ function _generateInvigilatorPassword() { } return chars.slice(0, INVIGILATOR_PASSWORD_LENGTH).join(''); } - -const getNewSessionCode = function () { - return _generateSessionCode(); -}; - -const getNewInvigilatorPassword = function () { - return _generateInvigilatorPassword(); -}; - -export { getNewInvigilatorPassword, getNewSessionCode }; diff --git a/api/src/certification/enrolment/domain/services/temporary-sessions-storage-for-mass-import-service.js b/api/src/certification/enrolment/domain/services/temporary-sessions-storage-for-mass-import-service.js index f724a426236..e8c04c50b9c 100644 --- a/api/src/certification/enrolment/domain/services/temporary-sessions-storage-for-mass-import-service.js +++ b/api/src/certification/enrolment/domain/services/temporary-sessions-storage-for-mass-import-service.js @@ -6,7 +6,7 @@ import { randomUUID } from 'node:crypto'; const EXPIRATION_DELAY_SECONDS = config.temporarySessionsStorageForMassImport.expirationDelaySeconds; -const save = async function ({ sessions, userId }) { +export async function save({ sessions, userId }) { const uuid = randomUUID(); await sessionMassImportTemporaryStorage.save({ key: `${userId}:${uuid}`, @@ -15,16 +15,14 @@ const save = async function ({ sessions, userId }) { }); return uuid; -}; +} -const getByKeyAndUserId = async function ({ cachedValidatedSessionsKey, userId }) { +export async function getByKeyAndUserId({ cachedValidatedSessionsKey, userId }) { const key = `${userId}:${cachedValidatedSessionsKey}`; return sessionMassImportTemporaryStorage.get(key); -}; +} -const remove = async function ({ cachedValidatedSessionsKey, userId }) { +export async function remove({ cachedValidatedSessionsKey, userId }) { const key = `${userId}:${cachedValidatedSessionsKey}`; await sessionMassImportTemporaryStorage.delete(key); -}; - -export { getByKeyAndUserId, remove, save }; +} diff --git a/api/src/certification/enrolment/domain/usecases/create-session.js b/api/src/certification/enrolment/domain/usecases/create-session.js index af7454f5688..81623bc1c6b 100644 --- a/api/src/certification/enrolment/domain/usecases/create-session.js +++ b/api/src/certification/enrolment/domain/usecases/create-session.js @@ -37,7 +37,7 @@ export async function createSession({ time, examiner, description, - accessCode: sessionCodeService.getNewSessionCode(), - invigilatorPassword: sessionCodeService.getNewInvigilatorPassword(), + accessCode: sessionCodeService.generateSessionCode(), + invigilatorPassword: sessionCodeService.generateInvigilatorPassword(), }); } diff --git a/api/src/certification/enrolment/domain/usecases/create-sessions.js b/api/src/certification/enrolment/domain/usecases/create-sessions.js index 4af66927bd3..6281df63986 100644 --- a/api/src/certification/enrolment/domain/usecases/create-sessions.js +++ b/api/src/certification/enrolment/domain/usecases/create-sessions.js @@ -71,7 +71,7 @@ async function _createSession({ sessionRepository, sessionCodeService, sessionDT time: sessionDTO.time, description: sessionDTO.description, accessCode: sessionDTO.accessCode, - invigilatorPassword: sessionCodeService.getNewInvigilatorPassword(), + invigilatorPassword: sessionCodeService.generateInvigilatorPassword(), }); } diff --git a/api/src/certification/enrolment/domain/usecases/delete-session.js b/api/src/certification/enrolment/domain/usecases/delete-session.js index 95b7d19bd2f..86b35ee0671 100644 --- a/api/src/certification/enrolment/domain/usecases/delete-session.js +++ b/api/src/certification/enrolment/domain/usecases/delete-session.js @@ -14,7 +14,7 @@ import { SessionStartedDeletionError } from '../errors.js'; * @throws {SessionStartedDeletionError} the session has already started * @throws {NotFoundError} the session does not exist or its access is restricted */ -const deleteSession = async ({ sessionId, sessionRepository, sessionManagementRepository }) => { +export async function deleteSession({ sessionId, sessionRepository, sessionManagementRepository }) { if (!(await sessionManagementRepository.hasNoStartedCertification({ id: sessionId }))) { throw new SessionStartedDeletionError(); } @@ -26,6 +26,4 @@ const deleteSession = async ({ sessionId, sessionRepository, sessionManagementRe throw new NotFoundError("La session n'existe pas ou son accès est restreint"); } }); -}; - -export { deleteSession }; +} diff --git a/api/src/certification/enrolment/domain/usecases/find-students-for-enrolment.js b/api/src/certification/enrolment/domain/usecases/find-students-for-enrolment.js index b37b8fe46be..323a91e0d55 100644 --- a/api/src/certification/enrolment/domain/usecases/find-students-for-enrolment.js +++ b/api/src/certification/enrolment/domain/usecases/find-students-for-enrolment.js @@ -1,6 +1,6 @@ import { StudentForEnrolment } from '../read-models/StudentForEnrolment.js'; -const findStudentsForEnrolment = async function ({ +export async function findStudentsForEnrolment({ certificationCenterId, sessionId, page, @@ -25,9 +25,7 @@ const findStudentsForEnrolment = async function ({ data: _buildStudentsForEnrolment({ students: paginatedStudents.data, candidates }), pagination: paginatedStudents.pagination, }; -}; - -export { findStudentsForEnrolment }; +} function _buildStudentsForEnrolment({ students, candidates }) { return students.map((student) => StudentForEnrolment.fromStudentsAndCandidates({ student, candidates })); diff --git a/api/src/certification/enrolment/domain/usecases/get-attendance-sheet.js b/api/src/certification/enrolment/domain/usecases/get-attendance-sheet.js index cc1a8a003fc..d59e8d195b1 100644 --- a/api/src/certification/enrolment/domain/usecases/get-attendance-sheet.js +++ b/api/src/certification/enrolment/domain/usecases/get-attendance-sheet.js @@ -11,7 +11,7 @@ import { NotFoundError } from '../../../../shared/domain/errors.js'; * @param {AttendanceSheetPdfUtils} params.attendanceSheetPdfUtils * @throws {NotFoundError} the session does not exist or no candidate is enrolled in it */ -const getAttendanceSheet = async function ({ +export async function getAttendanceSheet({ sessionId, i18n, sessionForAttendanceSheetRepository, @@ -29,6 +29,4 @@ const getAttendanceSheet = async function ({ }); return { attendanceSheet, fileName }; -}; - -export { getAttendanceSheet }; +} diff --git a/api/src/certification/enrolment/domain/usecases/get-candidate-timeline.js b/api/src/certification/enrolment/domain/usecases/get-candidate-timeline.js index 70544b5b4b3..f6a12649eec 100644 --- a/api/src/certification/enrolment/domain/usecases/get-candidate-timeline.js +++ b/api/src/certification/enrolment/domain/usecases/get-candidate-timeline.js @@ -38,7 +38,7 @@ import { LastAnsweredEvent } from '../models/timeline/LastAnsweredEvent.js'; * @param {PlacementProfileService} params.placementProfileService * @returns {Promise} */ -export const getCandidateTimeline = async ({ +export async function getCandidateTimeline({ certificationCandidateId, candidateRepository, certificationCourseRepository, @@ -47,7 +47,7 @@ export const getCandidateTimeline = async ({ eligibilityService, complementaryCertificationCourseRepository, complementaryCertificationBadgeWithOffsetVersionRepository, -}) => { +}) { const timeline = new CandidateTimeline({ certificationCandidateId }); const candidate = await candidateRepository.get({ certificationCandidateId }); @@ -94,7 +94,7 @@ export const getCandidateTimeline = async ({ } return timeline; -}; +} /** * @param {object} params @@ -106,14 +106,14 @@ export const getCandidateTimeline = async ({ * @param {ComplementaryCertificationBadgeWithOffsetVersionRepository} params.complementaryCertificationBadgeWithOffsetVersionRepository * @returns {Promise>} */ -const _whenCandidateDidNotStartCertification = async ({ +async function _whenCandidateDidNotStartCertification({ candidate, placementProfileService, certificationBadgesService, eligibilityService, complementaryCertificationCourseRepository, complementaryCertificationBadgeWithOffsetVersionRepository, -}) => { +}) { const certificabilityEvent = await _getCertificabilityEvent({ candidate, userId: candidate.userId, @@ -126,7 +126,7 @@ const _whenCandidateDidNotStartCertification = async ({ }); return [certificabilityEvent]; -}; +} /** * @param {object} params @@ -139,7 +139,7 @@ const _whenCandidateDidNotStartCertification = async ({ * @param {ComplementaryCertificationBadgeWithOffsetVersionRepository} params.complementaryCertificationBadgeWithOffsetVersionRepository * @returns {Promise>} */ -const _whenCandidateHasStartedTheTest = async ({ +async function _whenCandidateHasStartedTheTest({ candidate, certificationCourse, certificationBadgesService, @@ -147,7 +147,7 @@ const _whenCandidateHasStartedTheTest = async ({ eligibilityService, complementaryCertificationCourseRepository, complementaryCertificationBadgeWithOffsetVersionRepository, -}) => { +}) { const certificabilityEvent = await _getCertificabilityEvent({ candidate, userId: certificationCourse.getUserId(), @@ -160,7 +160,7 @@ const _whenCandidateHasStartedTheTest = async ({ }); return [certificabilityEvent]; -}; +} /** * @param {object} params @@ -174,7 +174,7 @@ const _whenCandidateHasStartedTheTest = async ({ * @param {ComplementaryCertificationBadgeWithOffsetVersionRepository} params.complementaryCertificationBadgeWithOffsetVersionRepository * @returns {Promise} */ -const _getCertificabilityEvent = async ({ +async function _getCertificabilityEvent({ candidate, userId, atDate, @@ -183,7 +183,7 @@ const _getCertificabilityEvent = async ({ placementProfileService, complementaryCertificationCourseRepository, complementaryCertificationBadgeWithOffsetVersionRepository, -}) => { +}) { const userEligibility = await eligibilityService.getUserCertificationEligibility({ userId, limitDate: atDate, @@ -194,7 +194,7 @@ const _getCertificabilityEvent = async ({ }); return _determineUserEligibilityStatus({ userEligibility, atDate, candidate }); -}; +} /** * @param {object} params @@ -203,7 +203,7 @@ const _getCertificabilityEvent = async ({ * @param {Candidate} params.candidate * @returns {TimelineEvent} */ -const _determineUserEligibilityStatus = ({ userEligibility, atDate, candidate }) => { +function _determineUserEligibilityStatus({ userEligibility, atDate, candidate }) { if (!userEligibility.isCertifiable) { return new CandidateNotCertifiableEvent({ when: atDate }); } @@ -221,7 +221,7 @@ const _determineUserEligibilityStatus = ({ userEligibility, atDate, candidate }) } return new CandidateCertifiableEvent({ when: atDate }); -}; +} /** * @param {Candidate} candidate diff --git a/api/src/certification/enrolment/domain/usecases/get-center.js b/api/src/certification/enrolment/domain/usecases/get-center.js index bac4fa4b840..a96b39d5712 100644 --- a/api/src/certification/enrolment/domain/usecases/get-center.js +++ b/api/src/certification/enrolment/domain/usecases/get-center.js @@ -6,8 +6,6 @@ * @param {object} params * @param {CenterRepository} params.centerRepository */ -const getCenter = function ({ id, centerRepository }) { +export function getCenter({ id, centerRepository }) { return centerRepository.getById({ id }); -}; - -export { getCenter }; +} diff --git a/api/src/certification/enrolment/domain/usecases/get-mass-import-template-information.js b/api/src/certification/enrolment/domain/usecases/get-mass-import-template-information.js index 7a73922c9f6..3020d0717cc 100644 --- a/api/src/certification/enrolment/domain/usecases/get-mass-import-template-information.js +++ b/api/src/certification/enrolment/domain/usecases/get-mass-import-template-information.js @@ -12,12 +12,10 @@ * @returns {Center} related certification center * @throws {NotFoundError} a candidate is linked to an unexisting certification center */ -const getMassImportTemplateInformation = async ({ centerId, centerRepository }) => { +export async function getMassImportTemplateInformation({ centerId, centerRepository }) { const center = await centerRepository.getById({ id: centerId }); return { habilitationLabels: center.habilitations.map((habilitation) => habilitation.label), shouldDisplayBillingModeColumns: center.hasBillingMode, }; -}; - -export { getMassImportTemplateInformation }; +} diff --git a/api/src/certification/enrolment/domain/usecases/get-user-certification-eligibility.js b/api/src/certification/enrolment/domain/usecases/get-user-certification-eligibility.js index 73ab2f1cc0c..e93d7ac7588 100644 --- a/api/src/certification/enrolment/domain/usecases/get-user-certification-eligibility.js +++ b/api/src/certification/enrolment/domain/usecases/get-user-certification-eligibility.js @@ -6,7 +6,7 @@ * @param {object} params * @param {EligibilityService} params.eligibilityService */ -const getUserCertificationEligibility = async function ({ +export async function getUserCertificationEligibility({ userId, limitDate = new Date(), eligibilityService, @@ -23,6 +23,4 @@ const getUserCertificationEligibility = async function ({ complementaryCertificationCourseRepository, complementaryCertificationBadgeWithOffsetVersionRepository, }); -}; - -export { getUserCertificationEligibility }; +} diff --git a/api/src/certification/enrolment/domain/usecases/validate-sessions.js b/api/src/certification/enrolment/domain/usecases/validate-sessions.js index 73e56b91607..1341d4401be 100644 --- a/api/src/certification/enrolment/domain/usecases/validate-sessions.js +++ b/api/src/certification/enrolment/domain/usecases/validate-sessions.js @@ -43,7 +43,7 @@ export async function validateSessions({ const validatedSessions = await PromiseUtils.mapSeries(sessionsData, async (sessionDTO) => { const { sessionId } = sessionDTO; - const accessCode = sessionCodeService.getNewSessionCode(); + const accessCode = sessionCodeService.generateSessionCode(); const session = new SessionEnrolment({ ...sessionDTO, certificationCandidates: [], diff --git a/api/src/certification/enrolment/infrastructure/adapters/event-adapter.js b/api/src/certification/enrolment/infrastructure/adapters/event-adapter.js index 76fdb9850b3..562d53ad992 100644 --- a/api/src/certification/enrolment/infrastructure/adapters/event-adapter.js +++ b/api/src/certification/enrolment/infrastructure/adapters/event-adapter.js @@ -59,7 +59,18 @@ export async function onCandidateReconciled({ candidate, dependencies = { eventA * @param {typeof EVENT_NAMES[keyof typeof EVENT_NAMES]} params.name */ async function pushCandidateEvents({ candidates, name, dependencies = { eventApi } }) { - const toDTO = (candidate) => ({ + const dtoEvents = candidates.map((candidate) => ({ + name, + candidateId: candidate.id, + createdAt: candidate.createdAt, + metadata: toDTO(candidate), + })); + + await dependencies.eventApi.pushEvents(dtoEvents); +} + +function toDTO(candidate) { + return { id: candidate.id, firstName: candidate.firstName, lastName: candidate.lastName, @@ -83,13 +94,5 @@ async function pushCandidateEvents({ candidates, name, dependencies = { eventApi subscription: candidate.subscription, accessibilityAdjustmentNeeded: candidate.accessibilityAdjustmentNeeded, reconciledAt: candidate.reconciledAt, - }); - - const dtoEvents = candidates.map((candidate) => ({ - name, - candidateId: candidate.id, - createdAt: candidate.createdAt, - metadata: toDTO(candidate), - })); - await dependencies.eventApi.pushEvents(dtoEvents); + }; } diff --git a/api/src/certification/enrolment/infrastructure/candidates-import/candidates-import-transformation-structures.js b/api/src/certification/enrolment/infrastructure/candidates-import/candidates-import-transformation-structures.js index 9b4285837e4..6556f5f59a9 100644 --- a/api/src/certification/enrolment/infrastructure/candidates-import/candidates-import-transformation-structures.js +++ b/api/src/certification/enrolment/infrastructure/candidates-import/candidates-import-transformation-structures.js @@ -9,70 +9,72 @@ import isEmpty from '../../../../shared/infrastructure/utils/is-empty.js'; // - header -> Header in the ods file under which the cell values will be found // - property -> Property name of the target object in which the value will be put // - transformFn -> Transformation function through which the cell value will be processed into the final value -const _getTransformationsStruct = (translate) => [ - { - header: translate('candidate-list-template.headers.birthname'), - property: 'lastName', - transformFn: _toNotEmptyTrimmedStringOrNull, - }, - { - header: translate('candidate-list-template.headers.firstname'), - property: 'firstName', - transformFn: _toNotEmptyTrimmedStringOrNull, - }, - { - header: translate('candidate-list-template.headers.externalid'), - property: 'externalId', - transformFn: _toNotEmptyTrimmedStringOrNull, - }, - { - header: translate('candidate-list-template.headers.extra-time'), - property: 'extraTimePercentage', - transformFn: _toNonZeroValueOrNull, - }, - { - header: translate('candidate-list-template.headers.birth-date'), - property: 'birthdate', - transformFn: (cellVal) => { - return convertDateValue({ dateString: cellVal, inputFormat: 'DD/MM/YYYY' }); +function _getTransformationsStruct(translate) { + return [ + { + header: translate('candidate-list-template.headers.birthname'), + property: 'lastName', + transformFn: _toNotEmptyTrimmedStringOrNull, }, - }, - { - header: translate('candidate-list-template.headers.birthcity'), - property: 'birthCity', - transformFn: _toNotEmptyTrimmedStringOrNull, - }, - { - header: translate('candidate-list-template.headers.birthcity-postcode'), - property: 'birthPostalCode', - transformFn: _toNotEmptyTrimmedStringOrNull, - }, - { - header: translate('candidate-list-template.headers.birthcity-inseecode'), - property: 'birthINSEECode', - transformFn: _toNotEmptyTrimmedStringOrNull, - }, - { - header: translate('candidate-list-template.headers.birthcountry'), - property: 'birthCountry', - transformFn: _toNotEmptyTrimmedStringOrNull, - }, - { - header: translate('candidate-list-template.headers.email-convocation'), - property: 'email', - transformFn: _toNotEmptyTrimmedStringOrNull, - }, - { - header: translate('candidate-list-template.headers.email-results'), - property: 'resultRecipientEmail', - transformFn: _toNotEmptyTrimmedStringOrNull, - }, - { - header: translate('candidate-list-template.headers.gender'), - property: 'sex', - transformFn: _toNotEmptyTrimmedStringOrNull, - }, -]; + { + header: translate('candidate-list-template.headers.firstname'), + property: 'firstName', + transformFn: _toNotEmptyTrimmedStringOrNull, + }, + { + header: translate('candidate-list-template.headers.externalid'), + property: 'externalId', + transformFn: _toNotEmptyTrimmedStringOrNull, + }, + { + header: translate('candidate-list-template.headers.extra-time'), + property: 'extraTimePercentage', + transformFn: _toNonZeroValueOrNull, + }, + { + header: translate('candidate-list-template.headers.birth-date'), + property: 'birthdate', + transformFn: (cellVal) => { + return convertDateValue({ dateString: cellVal, inputFormat: 'DD/MM/YYYY' }); + }, + }, + { + header: translate('candidate-list-template.headers.birthcity'), + property: 'birthCity', + transformFn: _toNotEmptyTrimmedStringOrNull, + }, + { + header: translate('candidate-list-template.headers.birthcity-postcode'), + property: 'birthPostalCode', + transformFn: _toNotEmptyTrimmedStringOrNull, + }, + { + header: translate('candidate-list-template.headers.birthcity-inseecode'), + property: 'birthINSEECode', + transformFn: _toNotEmptyTrimmedStringOrNull, + }, + { + header: translate('candidate-list-template.headers.birthcountry'), + property: 'birthCountry', + transformFn: _toNotEmptyTrimmedStringOrNull, + }, + { + header: translate('candidate-list-template.headers.email-convocation'), + property: 'email', + transformFn: _toNotEmptyTrimmedStringOrNull, + }, + { + header: translate('candidate-list-template.headers.email-results'), + property: 'resultRecipientEmail', + transformFn: _toNotEmptyTrimmedStringOrNull, + }, + { + header: translate('candidate-list-template.headers.gender'), + property: 'sex', + transformFn: _toNotEmptyTrimmedStringOrNull, + }, + ]; +} export function getTransformationStructsForPixCertifCandidatesImport({ i18n, habilitations, isSco }) { const translate = i18n.__; diff --git a/api/src/certification/enrolment/infrastructure/candidates-import/fill-candidates-import-sheet.js b/api/src/certification/enrolment/infrastructure/candidates-import/fill-candidates-import-sheet.js index 22990a65b8b..7319ce9bdc0 100644 --- a/api/src/certification/enrolment/infrastructure/candidates-import/fill-candidates-import-sheet.js +++ b/api/src/certification/enrolment/infrastructure/candidates-import/fill-candidates-import-sheet.js @@ -33,7 +33,7 @@ const CANDIDATE_TABLE_FIRST_ROW = 12; * @param params.i18n * @returns {Promise<*>} */ -const fillCandidatesImportSheet = async function ({ +export async function fillCandidatesImportSheet({ session, enrolledCandidates, certificationCenterHabilitations, @@ -58,9 +58,7 @@ const fillCandidatesImportSheet = async function ({ _addCandidateRows({ odsBuilder, enrolledCandidates, certificationCenterHabilitations, i18n }); return odsBuilder.build({ templateFilePath: _getCandidatesImportTemplatePath() }); -}; - -export { fillCandidatesImportSheet }; +} async function _getCandidatesImportTemplate() { const templatePath = _getCandidatesImportTemplatePath(); diff --git a/api/src/certification/enrolment/infrastructure/repositories/certification-cpf-city-repository.js b/api/src/certification/enrolment/infrastructure/repositories/certification-cpf-city-repository.js index e6cbec7be87..dbe64fe0fa5 100644 --- a/api/src/certification/enrolment/infrastructure/repositories/certification-cpf-city-repository.js +++ b/api/src/certification/enrolment/infrastructure/repositories/certification-cpf-city-repository.js @@ -10,7 +10,7 @@ const COLUMNS = ['id', 'name', 'postalCode', 'INSEECode', 'isActualName']; * @param {number} params.INSEECode * @returns {Promise> } */ -const findByINSEECode = async function ({ INSEECode }) { +export async function findByINSEECode({ INSEECode }) { const knexConn = DomainTransaction.getConnection(); const result = await knexConn .select(COLUMNS) @@ -20,7 +20,7 @@ const findByINSEECode = async function ({ INSEECode }) { .orderBy('id'); return result.map((city) => new CertificationCpfCity(city)); -}; +} /** * @function @@ -28,7 +28,7 @@ const findByINSEECode = async function ({ INSEECode }) { * @param {number} params.postalCode * @returns {Promise> } */ -const findByPostalCode = async function ({ postalCode }) { +export async function findByPostalCode({ postalCode }) { const knexConn = DomainTransaction.getConnection(); const result = await knexConn .select(COLUMNS) @@ -38,6 +38,4 @@ const findByPostalCode = async function ({ postalCode }) { .orderBy('id'); return result.map((city) => new CertificationCpfCity(city)); -}; - -export { findByINSEECode, findByPostalCode }; +} diff --git a/api/src/certification/enrolment/infrastructure/repositories/certification-cpf-country-repository.js b/api/src/certification/enrolment/infrastructure/repositories/certification-cpf-country-repository.js index 517bea21c8c..da1fc7eaca5 100644 --- a/api/src/certification/enrolment/infrastructure/repositories/certification-cpf-country-repository.js +++ b/api/src/certification/enrolment/infrastructure/repositories/certification-cpf-country-repository.js @@ -8,7 +8,7 @@ import { CertificationCpfCountry } from '../../../shared/domain/models/Certifica * @param {string} params.matcher * @returns {Promise } */ -const getByMatcher = async function ({ matcher }) { +export async function getByMatcher({ matcher }) { const knexConn = DomainTransaction.getConnection(); const COLUMNS = ['id', 'code', 'commonName', 'originalName', 'matcher']; @@ -19,6 +19,4 @@ const getByMatcher = async function ({ matcher }) { } return new CertificationCpfCountry(result); -}; - -export { getByMatcher }; +} diff --git a/api/src/certification/enrolment/infrastructure/repositories/complementary-certification-course-repository.js b/api/src/certification/enrolment/infrastructure/repositories/complementary-certification-course-repository.js index 1b940f540a3..842a56fec0a 100644 --- a/api/src/certification/enrolment/infrastructure/repositories/complementary-certification-course-repository.js +++ b/api/src/certification/enrolment/infrastructure/repositories/complementary-certification-course-repository.js @@ -7,7 +7,7 @@ import { ComplementaryCertificationCourseWithResults } from '../../domain/models * @param {number} params.userId * @returns {Promise>} */ -const findByUserId = async function ({ userId }) { +export async function findByUserId({ userId }) { const knexConn = DomainTransaction.getConnection(); const results = await knexConn .select({ @@ -55,6 +55,4 @@ const findByUserId = async function ({ userId }) { if (!results.length) return []; return results.map(ComplementaryCertificationCourseWithResults.from); -}; - -export { findByUserId }; +} diff --git a/api/src/certification/enrolment/infrastructure/serializers/candidate-serializer.js b/api/src/certification/enrolment/infrastructure/serializers/candidate-serializer.js index 1726c5fcaed..95c8a2a0999 100644 --- a/api/src/certification/enrolment/infrastructure/serializers/candidate-serializer.js +++ b/api/src/certification/enrolment/infrastructure/serializers/candidate-serializer.js @@ -35,7 +35,7 @@ function deserializeForEdition({ candidateId, candidateData }) { }); } -const serializeForParticipation = function (candidate) { +function serializeForParticipation(candidate) { return new Serializer('certification-candidate', { attributes: [ 'firstName', @@ -48,7 +48,7 @@ const serializeForParticipation = function (candidate) { 'doubleCertificationEligibility', ], }).serialize(candidate); -}; +} function serializeId(candidateId) { return new Serializer('certification-candidate', {}).serialize({ id: candidateId }); diff --git a/api/src/certification/enrolment/infrastructure/serializers/division-serializer.js b/api/src/certification/enrolment/infrastructure/serializers/division-serializer.js index a8ad32f457a..9799d1bd473 100644 --- a/api/src/certification/enrolment/infrastructure/serializers/division-serializer.js +++ b/api/src/certification/enrolment/infrastructure/serializers/division-serializer.js @@ -2,11 +2,11 @@ import jsonapiSerializer from 'jsonapi-serializer'; const { Serializer } = jsonapiSerializer; -const serialize = function (divisions) { +function serialize(divisions) { return new Serializer('divisions', { id: 'name', attributes: ['name'], }).serialize(divisions); -}; +} export const divisionSerializer = { serialize }; diff --git a/api/src/certification/enrolment/infrastructure/serializers/student-certification-serializer.js b/api/src/certification/enrolment/infrastructure/serializers/student-certification-serializer.js index 3d5b7276d93..6bd151cbbae 100644 --- a/api/src/certification/enrolment/infrastructure/serializers/student-certification-serializer.js +++ b/api/src/certification/enrolment/infrastructure/serializers/student-certification-serializer.js @@ -2,11 +2,11 @@ import jsonapiSerializer from 'jsonapi-serializer'; const { Serializer } = jsonapiSerializer; -const serialize = function (students, pagination) { +function serialize(students, pagination) { return new Serializer('students', { attributes: ['lastName', 'firstName', 'birthdate', 'division', 'isEnrolled'], meta: pagination, }).serialize(students); -}; +} export const studentCertificationSerializer = { serialize }; diff --git a/api/src/certification/enrolment/infrastructure/serializers/timeline-serializer.js b/api/src/certification/enrolment/infrastructure/serializers/timeline-serializer.js index 86bd2243315..d2f5c2e27e2 100644 --- a/api/src/certification/enrolment/infrastructure/serializers/timeline-serializer.js +++ b/api/src/certification/enrolment/infrastructure/serializers/timeline-serializer.js @@ -1,11 +1,11 @@ import jsonapiSerializer from 'jsonapi-serializer'; const { Serializer } = jsonapiSerializer; -const serialize = function (timeline) { +function serialize(timeline) { return new Serializer('certification-candidate-timeline', { id: 'certificationCandidateId', attributes: ['events'], }).serialize(timeline); -}; +} export const timelineSerializer = { serialize }; diff --git a/api/src/certification/enrolment/infrastructure/serializers/user-certification-eligibility-serializer.js b/api/src/certification/enrolment/infrastructure/serializers/user-certification-eligibility-serializer.js index b8187045190..b97d63823e0 100644 --- a/api/src/certification/enrolment/infrastructure/serializers/user-certification-eligibility-serializer.js +++ b/api/src/certification/enrolment/infrastructure/serializers/user-certification-eligibility-serializer.js @@ -8,7 +8,7 @@ const { Serializer } = jsonapiSerializer; /** * @param {UserCertificationEligibility} userCertificationEligibility */ -const serialize = function (userCertificationEligibility) { +function serialize(userCertificationEligibility) { return new Serializer('isCertifiables', { transform(userCertificationEligibility) { if (userCertificationEligibility.doubleCertificationEligibility) { @@ -31,6 +31,6 @@ const serialize = function (userCertificationEligibility) { }, attributes: ['isCertifiable', 'doubleCertificationEligibility'], }).serialize(userCertificationEligibility); -}; +} export const userCertificationEligibilitySerializer = { serialize }; diff --git a/api/tests/certification/enrolment/unit/domain/services/session-code-service_test.js b/api/tests/certification/enrolment/unit/domain/services/session-code-service_test.js index ddb40f63906..56085d9565e 100644 --- a/api/tests/certification/enrolment/unit/domain/services/session-code-service_test.js +++ b/api/tests/certification/enrolment/unit/domain/services/session-code-service_test.js @@ -3,20 +3,20 @@ import { expect } from 'chai'; import * as sessionCodeService from '../../../../../../src/certification/enrolment/domain/services/session-code-service.js'; describe('Unit | Service | CodeSession', function () { - describe('#getNewSessionCode', function () { + describe('#generateSessionCode', function () { it('should return a non ambiguous session code with 4 random capital letters and 2 random numbers', function () { // when - const result = sessionCodeService.getNewSessionCode(); + const result = sessionCodeService.generateSessionCode(); // then expect(result).to.match(/[B,C,D,F,G,H,J,K,M,P,Q,R,T,V,W,X,Y]{4}[2,3,4,6,7,8,9]{2}/); }); }); - describe('#getNewInvigilatorPassword', function () { + describe('#generateInvigilatorPassword', function () { it('should return a 6 characters password made of non ambiguous characters', function () { // when - const result = sessionCodeService.getNewInvigilatorPassword(); + const result = sessionCodeService.generateInvigilatorPassword(); // then expect(result).to.match(/^[23456789bcdfghjkmpqrstvwxyBCDFGHJKMPQRSTVWXY!*?]{6}$/); diff --git a/api/tests/certification/enrolment/unit/domain/usecases/create-session_test.js b/api/tests/certification/enrolment/unit/domain/usecases/create-session_test.js index 5e9ff53b2f1..37b4b65fcd8 100644 --- a/api/tests/certification/enrolment/unit/domain/usecases/create-session_test.js +++ b/api/tests/certification/enrolment/unit/domain/usecases/create-session_test.js @@ -9,8 +9,8 @@ describe('Certification | Enrolment | Unit | UseCase | create-session', function beforeEach(function () { sessionRepository = { create: sinon.fake.resolves(123) }; sessionCodeService = { - getNewSessionCode: sinon.fake.returns('MONSUPERCODE'), - getNewInvigilatorPassword: sinon.fake.returns('Y722GA'), + generateSessionCode: sinon.fake.returns('MONSUPERCODE'), + generateInvigilatorPassword: sinon.fake.returns('Y722GA'), }; dependencies = { sessionCodeService, sessionRepository }; }); diff --git a/api/tests/certification/enrolment/unit/domain/usecases/create-sessions_test.js b/api/tests/certification/enrolment/unit/domain/usecases/create-sessions_test.js index ef1c4486e05..2d3d9386fee 100644 --- a/api/tests/certification/enrolment/unit/domain/usecases/create-sessions_test.js +++ b/api/tests/certification/enrolment/unit/domain/usecases/create-sessions_test.js @@ -19,7 +19,7 @@ describe('Unit | UseCase | sessions-mass-import | create-sessions', function () beforeEach(function () { candidateRepository = { deleteBySessionId: sinon.stub(), save: sinon.stub() }; sessionRepository = { create: sinon.stub() }; - sessionCodeService = { getNewInvigilatorPassword: sinon.stub().returns('Y722GA') }; + sessionCodeService = { generateInvigilatorPassword: sinon.stub().returns('Y722GA') }; eventAdapter = { onCandidatesEnrolledWithMassSessionsImport: sinon.stub() }; temporarySessionsStorageForMassImportService = { getByKeyAndUserId: sinon.stub(), @@ -210,7 +210,7 @@ describe('Unit | UseCase | sessions-mass-import | create-sessions', function () // then expect(sessionRepository.create).not.to.have.been.called; - expect(sessionCodeService.getNewInvigilatorPassword).not.to.have.been.called; + expect(sessionCodeService.generateInvigilatorPassword).not.to.have.been.called; expect(candidateRepository.deleteBySessionId).to.have.been.calledOnceWith({ sessionId: 1234, }); diff --git a/api/tests/certification/enrolment/unit/domain/usecases/validate-sessions_test.js b/api/tests/certification/enrolment/unit/domain/usecases/validate-sessions_test.js index c09f90e4c85..ea31d2db61e 100644 --- a/api/tests/certification/enrolment/unit/domain/usecases/validate-sessions_test.js +++ b/api/tests/certification/enrolment/unit/domain/usecases/validate-sessions_test.js @@ -49,7 +49,7 @@ describe('Unit | UseCase | sessions-mass-import | validate-sessions', function ( centerRepository = { getById: sinon.stub() }; centerRepository.getById.withArgs({ id: certificationCenterId }).resolves(center); certificationCourseRepository = sinon.stub(); - sessionCodeService = { getNewSessionCode: sinon.stub().returns(accessCode) }; + sessionCodeService = { generateSessionCode: sinon.stub().returns(accessCode) }; sessionsImportValidationService = { getValidatedSubscriptionsForMassImport: sinon.stub(),