From d044398c382075683a65241e34b290a03acd73b8 Mon Sep 17 00:00:00 2001 From: Xavier Carron <33637571+xav-car@users.noreply.github.com> Date: Fri, 24 Jan 2025 10:16:23 +0100 Subject: [PATCH] tech(api): expose directly campaignLearningContent --- .../repositories/learning-content-repository.js | 3 ++- .../usecases/compute-campaign-participation-analysis.js | 4 +--- .../campaign-assessment-participation-result-repository.js | 4 +--- .../campaign/domain/usecases/compute-campaign-analysis.js | 4 +--- .../domain/usecases/compute-campaign-collective-result.js | 4 +--- .../start-writing-campaign-assessment-results-to-stream.js | 4 +--- .../usecases/compute-campaign-participation-analysis_test.js | 2 +- .../unit/domain/usecases/compute-campaign-analysis_test.js | 2 +- .../usecases/compute-campaign-collective-result_test.js | 2 +- 9 files changed, 10 insertions(+), 19 deletions(-) diff --git a/api/lib/infrastructure/repositories/learning-content-repository.js b/api/lib/infrastructure/repositories/learning-content-repository.js index d0113c754cb..f46c90be935 100644 --- a/api/lib/infrastructure/repositories/learning-content-repository.js +++ b/api/lib/infrastructure/repositories/learning-content-repository.js @@ -3,6 +3,7 @@ import _ from 'lodash'; import { knex } from '../../../db/knex-database-connection.js'; import * as campaignRepository from '../../../src/prescription/campaign/infrastructure/repositories/campaign-repository.js'; import { NoSkillsInCampaignError, NotFoundError } from '../../../src/shared/domain/errors.js'; +import { CampaignLearningContent } from '../../../src/shared/domain/models/CampaignLearningContent.js'; import { LearningContent } from '../../../src/shared/domain/models/LearningContent.js'; import * as areaRepository from '../../../src/shared/infrastructure/repositories/area-repository.js'; import * as competenceRepository from '../../../src/shared/infrastructure/repositories/competence-repository.js'; @@ -17,7 +18,7 @@ async function findByCampaignId(campaignId, locale) { const frameworks = await _getLearningContentBySkillIds(skills, locale); - return new LearningContent(frameworks); + return new CampaignLearningContent(frameworks); } async function findByTargetProfileId(targetProfileId, locale) { diff --git a/api/src/prescription/campaign-participation/domain/usecases/compute-campaign-participation-analysis.js b/api/src/prescription/campaign-participation/domain/usecases/compute-campaign-participation-analysis.js index 073d4697012..5661ef9d31c 100644 --- a/api/src/prescription/campaign-participation/domain/usecases/compute-campaign-participation-analysis.js +++ b/api/src/prescription/campaign-participation/domain/usecases/compute-campaign-participation-analysis.js @@ -1,5 +1,4 @@ import { UserNotAuthorizedToAccessEntityError } from '../../../../shared/domain/errors.js'; -import { CampaignLearningContent } from '../../../../shared/domain/models/CampaignLearningContent.js'; import { CampaignParticipationDeletedError } from '../errors.js'; const computeCampaignParticipationAnalysis = async function ({ @@ -28,8 +27,7 @@ const computeCampaignParticipationAnalysis = async function ({ return null; } - const learningContent = await learningContentRepository.findByCampaignId(campaignId, locale); - const campaignLearningContent = new CampaignLearningContent(learningContent.frameworks); + const campaignLearningContent = await learningContentRepository.findByCampaignId(campaignId, locale); const tutorials = await tutorialRepository.list({ locale }); return campaignAnalysisRepository.getCampaignParticipationAnalysis( diff --git a/api/src/prescription/campaign-participation/infrastructure/repositories/campaign-assessment-participation-result-repository.js b/api/src/prescription/campaign-participation/infrastructure/repositories/campaign-assessment-participation-result-repository.js index c178a62d6c8..5f05cd93d51 100644 --- a/api/src/prescription/campaign-participation/infrastructure/repositories/campaign-assessment-participation-result-repository.js +++ b/api/src/prescription/campaign-participation/infrastructure/repositories/campaign-assessment-participation-result-repository.js @@ -1,13 +1,11 @@ import { knex } from '../../../../../db/knex-database-connection.js'; import * as learningContentRepository from '../../../../../lib/infrastructure/repositories/learning-content-repository.js'; import { NotFoundError } from '../../../../shared/domain/errors.js'; -import { CampaignLearningContent } from '../../../../shared/domain/models/CampaignLearningContent.js'; import * as knowledgeElementRepository from '../../../../shared/infrastructure/repositories/knowledge-element-repository.js'; import { CampaignAssessmentParticipationResult } from '../../domain/models/CampaignAssessmentParticipationResult.js'; const getByCampaignIdAndCampaignParticipationId = async function ({ campaignId, campaignParticipationId, locale }) { - const learningContent = await learningContentRepository.findByCampaignId(campaignId, locale); - const campaignLearningContent = new CampaignLearningContent(learningContent.frameworks); + const campaignLearningContent = await learningContentRepository.findByCampaignId(campaignId, locale); const result = await _fetchCampaignAssessmentParticipationResultAttributesFromCampaignParticipation( campaignId, campaignParticipationId, diff --git a/api/src/prescription/campaign/domain/usecases/compute-campaign-analysis.js b/api/src/prescription/campaign/domain/usecases/compute-campaign-analysis.js index 6b60f6c1129..923e443d81f 100644 --- a/api/src/prescription/campaign/domain/usecases/compute-campaign-analysis.js +++ b/api/src/prescription/campaign/domain/usecases/compute-campaign-analysis.js @@ -1,5 +1,4 @@ import { UserNotAuthorizedToAccessEntityError } from '../../../../shared/domain/errors.js'; -import { CampaignLearningContent } from '../../../../shared/domain/models/CampaignLearningContent.js'; const computeCampaignAnalysis = async function ({ userId, @@ -16,8 +15,7 @@ const computeCampaignAnalysis = async function ({ throw new UserNotAuthorizedToAccessEntityError('User does not have access to this campaign'); } - const learningContent = await learningContentRepository.findByCampaignId(campaignId, locale); - const campaignLearningContent = new CampaignLearningContent(learningContent.frameworks); + const campaignLearningContent = await learningContentRepository.findByCampaignId(campaignId, locale); const tutorials = await tutorialRepository.list({ locale }); return campaignAnalysisRepository.getCampaignAnalysis(campaignId, campaignLearningContent, tutorials); diff --git a/api/src/prescription/campaign/domain/usecases/compute-campaign-collective-result.js b/api/src/prescription/campaign/domain/usecases/compute-campaign-collective-result.js index 865f7ee2b62..7ecaab84416 100644 --- a/api/src/prescription/campaign/domain/usecases/compute-campaign-collective-result.js +++ b/api/src/prescription/campaign/domain/usecases/compute-campaign-collective-result.js @@ -1,5 +1,4 @@ import { UserNotAuthorizedToAccessEntityError } from '../../../../shared/domain/errors.js'; -import { CampaignLearningContent } from '../../../../shared/domain/models/CampaignLearningContent.js'; const computeCampaignCollectiveResult = async function ({ userId, @@ -15,8 +14,7 @@ const computeCampaignCollectiveResult = async function ({ throw new UserNotAuthorizedToAccessEntityError('User does not have access to this campaign'); } - const learningContent = await learningContentRepository.findByCampaignId(campaignId, locale); - const campaignLearningContent = new CampaignLearningContent(learningContent.frameworks); + const campaignLearningContent = await learningContentRepository.findByCampaignId(campaignId, locale); return campaignCollectiveResultRepository.getCampaignCollectiveResult(campaignId, campaignLearningContent); }; diff --git a/api/src/prescription/campaign/domain/usecases/start-writing-campaign-assessment-results-to-stream.js b/api/src/prescription/campaign/domain/usecases/start-writing-campaign-assessment-results-to-stream.js index ca478525e4b..9bb7a80070e 100644 --- a/api/src/prescription/campaign/domain/usecases/start-writing-campaign-assessment-results-to-stream.js +++ b/api/src/prescription/campaign/domain/usecases/start-writing-campaign-assessment-results-to-stream.js @@ -5,7 +5,6 @@ dayjs.extend(utc); dayjs.extend(timezone); import { CampaignTypeError } from '../../../../shared/domain/errors.js'; -import { CampaignLearningContent } from '../../../../shared/domain/models/index.js'; import { CampaignAssessmentExport } from '../../infrastructure/serializers/csv/campaign-assessment-export.js'; /** @@ -64,7 +63,6 @@ const startWritingCampaignAssessmentResultsToStream = async function ({ const targetProfile = await targetProfileRepository.getByCampaignId(campaign.id); const learningContent = await learningContentRepository.findByCampaignId(campaign.id, i18n.getLocale()); const stageCollection = await stageCollectionRepository.findStageCollection({ campaignId }); - const campaignLearningContent = new CampaignLearningContent(learningContent.frameworks); const organization = await organizationRepository.get(campaign.organizationId); const campaignParticipationInfos = await campaignParticipationInfoRepository.findByCampaignId(campaign.id); @@ -79,7 +77,7 @@ const startWritingCampaignAssessmentResultsToStream = async function ({ outputStream: writableStream, organization, targetProfile, - learningContent: campaignLearningContent, + learningContent, stageCollection, campaign, translate, diff --git a/api/tests/prescription/campaign-participation/unit/domain/usecases/compute-campaign-participation-analysis_test.js b/api/tests/prescription/campaign-participation/unit/domain/usecases/compute-campaign-participation-analysis_test.js index 2028e13783c..364caa6b701 100644 --- a/api/tests/prescription/campaign-participation/unit/domain/usecases/compute-campaign-participation-analysis_test.js +++ b/api/tests/prescription/campaign-participation/unit/domain/usecases/compute-campaign-participation-analysis_test.js @@ -45,7 +45,7 @@ describe('Unit | UseCase | compute-campaign-participation-analysis', function () campaignParticipation.userId = userId; campaignParticipationRepository.get.withArgs(campaignParticipationId).resolves(campaignParticipation); campaignRepository.checkIfUserOrganizationHasAccessToCampaign.withArgs(campaignId, userId).resolves(true); - learningContentRepository.findByCampaignId.withArgs(campaignId, locale).resolves(learningContent); + learningContentRepository.findByCampaignId.withArgs(campaignId, locale).resolves(campaignLearningContent); tutorialRepository.list.withArgs({ locale }).resolves(tutorials); campaignAnalysisRepository.getCampaignParticipationAnalysis .withArgs(campaignId, campaignParticipation, campaignLearningContent, tutorials) diff --git a/api/tests/prescription/campaign/unit/domain/usecases/compute-campaign-analysis_test.js b/api/tests/prescription/campaign/unit/domain/usecases/compute-campaign-analysis_test.js index ca0f822ed8e..29688b099f2 100644 --- a/api/tests/prescription/campaign/unit/domain/usecases/compute-campaign-analysis_test.js +++ b/api/tests/prescription/campaign/unit/domain/usecases/compute-campaign-analysis_test.js @@ -31,7 +31,7 @@ describe('Unit | UseCase | compute-campaign-analysis', function () { const tutorials = Symbol('tutorials'); const campaignAnalysis = Symbol('analysis'); campaignRepository.checkIfUserOrganizationHasAccessToCampaign.withArgs(campaignId, userId).resolves(true); - learningContentRepository.findByCampaignId.withArgs(campaignId, locale).resolves(learningContent); + learningContentRepository.findByCampaignId.withArgs(campaignId, locale).resolves(campaignLearningContent); tutorialRepository.list.withArgs({ locale }).resolves(tutorials); campaignAnalysisRepository.getCampaignAnalysis .withArgs(campaignId, campaignLearningContent, tutorials) diff --git a/api/tests/prescription/campaign/unit/domain/usecases/compute-campaign-collective-result_test.js b/api/tests/prescription/campaign/unit/domain/usecases/compute-campaign-collective-result_test.js index dca774b423d..1c42202c444 100644 --- a/api/tests/prescription/campaign/unit/domain/usecases/compute-campaign-collective-result_test.js +++ b/api/tests/prescription/campaign/unit/domain/usecases/compute-campaign-collective-result_test.js @@ -25,7 +25,7 @@ describe('Unit | UseCase | compute-campaign-collective-result', function () { context('User has access to this result', function () { beforeEach(function () { campaignRepository.checkIfUserOrganizationHasAccessToCampaign.withArgs(campaignId, userId).resolves(true); - learningContentRepository.findByCampaignId.withArgs(campaignId, locale).resolves(learningContent); + learningContentRepository.findByCampaignId.withArgs(campaignId, locale).resolves(campaignLearningContent); }); it('should resolve a CampaignCollectiveResult', async function () {