diff --git a/api/src/prescription/learner-management/domain/usecases/get-attestation-zip-for-divisions.js b/api/src/prescription/learner-management/domain/usecases/get-attestation-zip-for-divisions.js deleted file mode 100644 index c3b947c4fdb..00000000000 --- a/api/src/prescription/learner-management/domain/usecases/get-attestation-zip-for-divisions.js +++ /dev/null @@ -1,5 +0,0 @@ -const getAttestationZipForDivisions = ({ organizationId, divisions, organizationLearnerRepository }) => { - const organizationLearners = organizationLearnerRepository.get; - - return {}; -}; diff --git a/api/src/prescription/organization-learner/domain/usecases/get-attestation-zip-for-divisions.js b/api/src/prescription/organization-learner/domain/usecases/get-attestation-zip-for-divisions.js new file mode 100644 index 00000000000..083a2d4f3e9 --- /dev/null +++ b/api/src/prescription/organization-learner/domain/usecases/get-attestation-zip-for-divisions.js @@ -0,0 +1,16 @@ +export const getAttestationZipForDivisions = async ({ + attestationKey, + organizationId, + divisions, + organizationLearnerRepository, +}) => { + const organizationLearners = await organizationLearnerRepository.findOrganizationLearnersByDivisions({ + organizationId, + divisions, + }); + + return organizationLearnerRepository.getAttestationsForOrganizationLearnersAndKey({ + attestationKey, + organizationLearners, + }); +}; diff --git a/api/src/prescription/organization-learner/domain/usecases/index.js b/api/src/prescription/organization-learner/domain/usecases/index.js index b33453fc578..3d2d17797c1 100644 --- a/api/src/prescription/organization-learner/domain/usecases/index.js +++ b/api/src/prescription/organization-learner/domain/usecases/index.js @@ -17,8 +17,8 @@ import { importNamedExportsFromDirectory } from '../../../../shared/infrastructu import * as divisionRepository from '../../../campaign/infrastructure/repositories/division-repository.js'; import * as groupRepository from '../../../campaign/infrastructure/repositories/group-repository.js'; import * as organizationLearnerImportFormatRepository from '../../../learner-management/infrastructure/repositories/organization-learner-import-format-repository.js'; +import { repositories } from '../../infrastructure/repositories/index.js'; import * as organizationLearnerActivityRepository from '../../infrastructure/repositories/organization-learner-activity-repository.js'; -import * as organizationLearnerRepository from '../../infrastructure/repositories/organization-learner-repository.js'; import * as organizationParticipantRepository from '../../infrastructure/repositories/organization-participant-repository.js'; import * as registrationOrganizationLearnerRepository from '../../infrastructure/repositories/registration-organization-learner-repository.js'; import * as scoOrganizationParticipantRepository from '../../infrastructure/repositories/sco-organization-participant-repository.js'; @@ -33,7 +33,7 @@ const dependencies = { organizationRepository, organizationParticipantRepository, organizationLearnerActivityRepository, - organizationLearnerRepository, + organizationLearnerRepository: repositories.organizationLearnerRepository, organizationLearnerImportFormatRepository, organizationFeaturesAPI, campaignRepository, diff --git a/api/tests/prescription/learner-management/integration/domain/usecases/get-attestation-zip-for-divisions_test.js b/api/tests/prescription/learner-management/integration/domain/usecases/get-attestation-zip-for-divisions_test.js new file mode 100644 index 00000000000..913f2a526f1 --- /dev/null +++ b/api/tests/prescription/learner-management/integration/domain/usecases/get-attestation-zip-for-divisions_test.js @@ -0,0 +1,12 @@ +import { expect } from '../../../../../test-helper.js'; + +describe('Integration | Prescription | Learner Management | Domain | UseCase | get-attestation-zip-for-divisions', function () { + it('returns a zip attestation', async function () { + // given + // when + const result = result; + + // then + expect(Buffer.isBuffer(result)).to.be.true; + }); +}); diff --git a/api/tests/prescription/organization-learner/integration/domain/usecases/get-attestation-zip-for-divisions_test.js b/api/tests/prescription/organization-learner/integration/domain/usecases/get-attestation-zip-for-divisions_test.js new file mode 100644 index 00000000000..62d1177e23e --- /dev/null +++ b/api/tests/prescription/organization-learner/integration/domain/usecases/get-attestation-zip-for-divisions_test.js @@ -0,0 +1,26 @@ +import { Buffer } from 'node:buffer'; + +import { usecases } from '../../../../../../src/prescription/organization-learner/domain/usecases/index.js'; +import { databaseBuilder, expect } from '../../../../../test-helper.js'; + +describe('Integration | Prescription | Learner Management | Domain | UseCase | get-attestation-zip-for-divisions', function () { + it('returns a zip attestation', async function () { + // given + const organizationId = databaseBuilder.factory.buildOrganization().id; + databaseBuilder.factory.buildOrganizationLearner({ organizationId, division: '6eme A' }); + databaseBuilder.factory.buildOrganizationLearner({ organizationId, division: '6eme B' }); + const attestation = databaseBuilder.factory.buildAttestation(); + + await databaseBuilder.commit(); + + // when + const result = await usecases.getAttestationZipForDivisions({ + attestationKey: attestation.key, + divisions: ['6eme A', '6eme B'], + organizationId, + }); + + // then + expect(Buffer.isBuffer(result)).to.be.true; + }); +});