Skip to content

Commit

Permalink
[BUGFIX] Ne pas proposer d'épreuves inaccessibles à un candidat de ce…
Browse files Browse the repository at this point in the history
…rtification nécessitant un test aménagé (PIX-14517).

 #10186
  • Loading branch information
pix-service-auto-merge authored Sep 25, 2024
2 parents 54da88b + b7bc4e6 commit 4f70e56
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@ import { Candidate } from '../../../enrolment/domain/models/Candidate.js';
const findByAssessmentId = async function ({ assessmentId }) {
const result = await knex('certification-candidates')
.select('certification-candidates.*')
.join('certification-courses', 'certification-courses.userId', 'certification-candidates.userId')
.join('certification-courses', function () {
this.on('certification-courses.userId', '=', 'certification-candidates.userId').andOn(
'certification-courses.sessionId',
'=',
'certification-candidates.sessionId',
);
})
.join('assessments', 'assessments.certificationCourseId', 'certification-courses.id')
.where('assessments.id', assessmentId)
.first();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,5 +77,60 @@ describe('Integration | Repository | certification candidate', function () {
expect(error).to.be.an.instanceOf(CertificationCandidateNotFoundError);
});
});

describe('when candidate has passed several certification sessions while being reconciled with the same user account', function () {
describe('when certification candidate is found', function () {
it('should return the certification candidate', async function () {
// given
const user = databaseBuilder.factory.buildUser();
const otherSession = databaseBuilder.factory.buildSession();
databaseBuilder.factory.buildCertificationCandidate({
lastName: 'Joplin',
firstName: 'Janis',
sessionId: otherSession.id,
userId: user.id,
authorizedToStart: false,
});
databaseBuilder.factory.buildCertificationCourse({
userId: user.id,
sessionId: otherSession.id,
createdAt: new Date('2022-10-01T14:00:00Z'),
});

const session = databaseBuilder.factory.buildSession();
const candidate = databaseBuilder.factory.buildCertificationCandidate({
lastName: 'Joplin',
firstName: 'Janis',
sessionId: session.id,
userId: user.id,
authorizedToStart: false,
});
const certificationCourse = databaseBuilder.factory.buildCertificationCourse({
userId: user.id,
sessionId: session.id,
createdAt: new Date('2022-10-01T14:00:00Z'),
});
const assessmentId = databaseBuilder.factory.buildAssessment({
certificationCourseId: certificationCourse.id,
state: Assessment.states.STARTED,
}).id;

await databaseBuilder.commit();

// when
const result = await certificationCandidateRepository.findByAssessmentId({
assessmentId,
});

// then
expect(result).to.deep.equal(
domainBuilder.certification.enrolment.buildCandidate({
...candidate,
subscriptions: [],
}),
);
});
});
});
});
});

0 comments on commit 4f70e56

Please sign in to comment.