diff --git a/api/db/database-builder/factory/build-knowledge-element-snapshot.js b/api/db/database-builder/factory/build-knowledge-element-snapshot.js index 1a3888501e8..24c1529f4f2 100644 --- a/api/db/database-builder/factory/build-knowledge-element-snapshot.js +++ b/api/db/database-builder/factory/build-knowledge-element-snapshot.js @@ -1,5 +1,6 @@ import _ from 'lodash'; +import { KnowledgeElementCollection } from '../../../src/prescription/shared/domain/models/KnowledgeElementCollection.js'; import { databaseBuffer } from '../database-buffer.js'; import { buildKnowledgeElement } from './build-knowledge-element.js'; import { buildUser } from './build-user.js'; @@ -17,7 +18,7 @@ const buildKnowledgeElementSnapshot = function ({ const knowledgeElements = []; knowledgeElements.push(buildKnowledgeElement({ userId, createdAt: dateMinusOneDay })); knowledgeElements.push(buildKnowledgeElement({ userId, createdAt: dateMinusOneDay })); - snapshot = JSON.stringify(knowledgeElements); + snapshot = new KnowledgeElementCollection(knowledgeElements).toSnapshot(); } const values = { diff --git a/api/db/seeds/data/common/tooling/campaign-tooling.js b/api/db/seeds/data/common/tooling/campaign-tooling.js index 68f574b54c9..8844119abeb 100644 --- a/api/db/seeds/data/common/tooling/campaign-tooling.js +++ b/api/db/seeds/data/common/tooling/campaign-tooling.js @@ -5,6 +5,7 @@ import { CampaignExternalIdTypes, CampaignParticipationStatuses, } from '../../../../../src/prescription/shared/domain/constants.js'; +import { KnowledgeElementCollection } from '../../../../../src/prescription/shared/domain/models/KnowledgeElementCollection.js'; import { Assessment, KnowledgeElement } from '../../../../../src/shared/domain/models/index.js'; import { getPlacementProfile } from '../../../../../src/shared/domain/services/placement-profile-service.js'; import { FEATURE_CAMPAIGN_EXTERNAL_ID } from '../constants.js'; @@ -240,7 +241,7 @@ async function createAssessmentCampaign({ databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId, snappedAt: sharedAt, - snapshot: JSON.stringify(keDataForSnapshot), + snapshot: new KnowledgeElementCollection(keDataForSnapshot).toSnapshot(), campaignParticipationId, }); @@ -404,7 +405,7 @@ async function createProfilesCollectionCampaign({ databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId, snappedAt: sharedAt, - snapshot: JSON.stringify(keDataForSnapshot), + snapshot: new KnowledgeElementCollection(keDataForSnapshot).toSnapshot(), campaignParticipationId, }); diff --git a/api/db/seeds/data/common/tooling/profile-tooling.js b/api/db/seeds/data/common/tooling/profile-tooling.js index 9e1daa38097..9f0d2ca0378 100644 --- a/api/db/seeds/data/common/tooling/profile-tooling.js +++ b/api/db/seeds/data/common/tooling/profile-tooling.js @@ -23,11 +23,11 @@ export { * @returns {Promise} */ async function createCertifiableProfile({ databaseBuilder, userId }) { - const answersAndKnowledgeElementsCollection = await getAnswersAndKnowledgeElementsForBeginnerProfile(); + const answersAndKnowledgeElementCollection = await getAnswersAndKnowledgeElementsForBeginnerProfile(); _makeUserReachPixScoreForCompetences({ databaseBuilder, userId, - answersAndKnowledgeElementsCollection, + answersAndKnowledgeElementCollection, }); await databaseBuilder.commit(); @@ -40,12 +40,12 @@ async function createCertifiableProfile({ databaseBuilder, userId }) { * @returns {Promise} */ async function createPerfectProfile({ databaseBuilder, userId }) { - const answersAndKnowledgeElementsCollection = await getAnswersAndKnowledgeElementsForPerfectProfile(); + const answersAndKnowledgeElementCollection = await getAnswersAndKnowledgeElementsForPerfectProfile(); _makeUserReachPixScoreForCompetences({ databaseBuilder, userId, - answersAndKnowledgeElementsCollection, + answersAndKnowledgeElementCollection, }); await databaseBuilder.commit(); @@ -59,7 +59,7 @@ async function getAnswersAndKnowledgeElementsForBeginnerProfile() { await _getAnswersAndKnowledgeElementsForProfile({ competences: fiveRandomCompetences, - answersAndKnowledgeElementsCollection: ANSWERS_AND_KNOWLEDGE_ELEMENTS_FOR_BEGINNER_PROFILE, + answersAndKnowledgeElementCollection: ANSWERS_AND_KNOWLEDGE_ELEMENTS_FOR_BEGINNER_PROFILE, pixScoreByCompetence: PIX_COUNT_BY_LEVEL, }); } @@ -75,7 +75,7 @@ async function getAnswersAndKnowledgeElementsForIntermediateProfile() { await _getAnswersAndKnowledgeElementsForProfile({ competences: eightRandomCompetences, - answersAndKnowledgeElementsCollection: ANSWERS_AND_KNOWLEDGE_ELEMENTS_FOR_INTERMEDIATE_PROFILE, + answersAndKnowledgeElementCollection: ANSWERS_AND_KNOWLEDGE_ELEMENTS_FOR_INTERMEDIATE_PROFILE, pixScoreByCompetence: PIX_COUNT_BY_LEVEL * 3, }); } @@ -91,7 +91,7 @@ async function getAnswersAndKnowledgeElementsForAdvancedProfile() { await _getAnswersAndKnowledgeElementsForProfile({ competences: twelveRandomCompetences, - answersAndKnowledgeElementsCollection: ANSWERS_AND_KNOWLEDGE_ELEMENTS_FOR_ADVANCED_PROFILE, + answersAndKnowledgeElementCollection: ANSWERS_AND_KNOWLEDGE_ELEMENTS_FOR_ADVANCED_PROFILE, pixScoreByCompetence: PIX_COUNT_BY_LEVEL * 4, }); } @@ -106,7 +106,7 @@ async function getAnswersAndKnowledgeElementsForPerfectProfile() { await _getAnswersAndKnowledgeElementsForProfile({ competences: pixCompetences, - answersAndKnowledgeElementsCollection: ANSWERS_AND_KNOWLEDGE_ELEMENTS_FOR_PERFECT_PROFILE, + answersAndKnowledgeElementCollection: ANSWERS_AND_KNOWLEDGE_ELEMENTS_FOR_PERFECT_PROFILE, pixScoreByCompetence: UNREACHABLE_PIX_SCORE, }); } @@ -117,7 +117,7 @@ async function getAnswersAndKnowledgeElementsForPerfectProfile() { async function _getAnswersAndKnowledgeElementsForProfile({ competences, pixScoreByCompetence, - answersAndKnowledgeElementsCollection, + answersAndKnowledgeElementCollection, }) { for (const competence of competences) { const skills = await learningContent.findActiveSkillsByCompetenceId(competence.id); @@ -147,7 +147,7 @@ async function _getAnswersAndKnowledgeElementsForProfile({ earnedPix: skill.pixValue, competenceId: skill.competenceId, }; - answersAndKnowledgeElementsCollection.push({ answerData, keData }); + answersAndKnowledgeElementCollection.push({ answerData, keData }); currentPixScore += skill.pixValue; if (currentPixScore >= pixScoreByCompetence) { @@ -173,9 +173,9 @@ function _makeCompetenceEvaluation({ databaseBuilder, userId, competenceId }) { return assessmentId; } -function _makeUserReachPixScoreForCompetences({ databaseBuilder, userId, answersAndKnowledgeElementsCollection }) { +function _makeUserReachPixScoreForCompetences({ databaseBuilder, userId, answersAndKnowledgeElementCollection }) { const answersAndKnowledgeElementsByCompetenceId = _.groupBy( - answersAndKnowledgeElementsCollection, + answersAndKnowledgeElementCollection, ({ keData }) => keData.competenceId, ); for (const [competenceId, answersAndKnowledgeElements] of Object.entries(answersAndKnowledgeElementsByCompetenceId)) { diff --git a/api/src/prescription/campaign/infrastructure/repositories/knowledge-element-snapshot-repository.js b/api/src/prescription/campaign/infrastructure/repositories/knowledge-element-snapshot-repository.js index 30a3d6ece87..f8abb02be7c 100644 --- a/api/src/prescription/campaign/infrastructure/repositories/knowledge-element-snapshot-repository.js +++ b/api/src/prescription/campaign/infrastructure/repositories/knowledge-element-snapshot-repository.js @@ -5,6 +5,7 @@ import { DomainTransaction } from '../../../../shared/domain/DomainTransaction.j import { AlreadyExistingEntityError } from '../../../../shared/domain/errors.js'; import { KnowledgeElement } from '../../../../shared/domain/models/KnowledgeElement.js'; import * as knexUtils from '../../../../shared/infrastructure/utils/knex-utils.js'; +import { KnowledgeElementCollection } from '../../../shared/domain/models/KnowledgeElementCollection.js'; import { CampaignParticipationKnowledgeElementSnapshots } from '../../../shared/domain/read-models/CampaignParticipationKnowledgeElementSnapshots.js'; function _toKnowledgeElementCollection({ snapshot } = {}) { diff --git a/api/src/shared/infrastructure/repositories/knowledge-element-repository.js b/api/src/shared/infrastructure/repositories/knowledge-element-repository.js index 0539a1c459b..f95a2903f3d 100644 --- a/api/src/shared/infrastructure/repositories/knowledge-element-repository.js +++ b/api/src/shared/infrastructure/repositories/knowledge-element-repository.js @@ -1,24 +1,12 @@ import _ from 'lodash'; import { knex } from '../../../../db/knex-database-connection.js'; +import { KnowledgeElementCollection } from '../../../prescription/shared/domain/models/KnowledgeElementCollection.js'; import { DomainTransaction } from '../../domain/DomainTransaction.js'; import { KnowledgeElement } from '../../domain/models/KnowledgeElement.js'; const tableName = 'knowledge-elements'; -function _getUniqMostRecents(knowledgeElements) { - return _(knowledgeElements).orderBy('createdAt', 'desc').uniqBy('skillId').value(); -} - -function _dropResetKnowledgeElements(knowledgeElements) { - return _.reject(knowledgeElements, { status: KnowledgeElement.StatusType.RESET }); -} - -function _applyFilters(knowledgeElements) { - const uniqsMostRecentPerSkill = _getUniqMostRecents(knowledgeElements); - return _dropResetKnowledgeElements(uniqsMostRecentPerSkill); -} - function _findByUserIdAndLimitDateQuery({ userId, limitDate, skillIds = [] }) { const knexConn = DomainTransaction.getConnection(); return knexConn(tableName).where((qb) => { @@ -35,11 +23,10 @@ function _findByUserIdAndLimitDateQuery({ userId, limitDate, skillIds = [] }) { async function findAssessedByUserIdAndLimitDateQuery({ userId, limitDate, skillIds }) { const knowledgeElementRows = await _findByUserIdAndLimitDateQuery({ userId, limitDate, skillIds }); - const knowledgeElements = _.map( - knowledgeElementRows, - (knowledgeElementRow) => new KnowledgeElement(knowledgeElementRow), + const keCollection = new KnowledgeElementCollection( + knowledgeElementRows.map((knowledgeElementRow) => new KnowledgeElement(knowledgeElementRow)), ); - return _applyFilters(knowledgeElements); + return keCollection.latestUniqNonResetKnowledgeElements; } const findUniqByUserIds = function (userIds) { @@ -69,11 +56,10 @@ const findUniqByUserIdAndAssessmentId = async function ({ userId, assessmentId } const query = _findByUserIdAndLimitDateQuery({ userId }); const knowledgeElementRows = await query.where({ assessmentId }); - const knowledgeElements = _.map( - knowledgeElementRows, - (knowledgeElementRow) => new KnowledgeElement(knowledgeElementRow), + const keCollection = new KnowledgeElementCollection( + knowledgeElementRows.map((knowledgeElementRow) => new KnowledgeElement(knowledgeElementRow)), ); - return _applyFilters(knowledgeElements); + return keCollection.latestUniqNonResetKnowledgeElements; }; const findUniqByUserIdAndCompetenceId = async function ({ userId, competenceId }) { diff --git a/api/tests/prescription/campaign/acceptance/application/campaign-results-route_test.js b/api/tests/prescription/campaign/acceptance/application/campaign-results-route_test.js index 1803c7e8d12..459b5705d72 100644 --- a/api/tests/prescription/campaign/acceptance/application/campaign-results-route_test.js +++ b/api/tests/prescription/campaign/acceptance/application/campaign-results-route_test.js @@ -1,3 +1,4 @@ +import { KnowledgeElementCollection } from '../../../../../src/prescription/shared/domain/models/KnowledgeElementCollection.js'; import { Membership } from '../../../../../src/shared/domain/models/Membership.js'; import { createServer, @@ -577,7 +578,7 @@ describe('Acceptance | API | campaign-results-route', function () { databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId, campaignParticipationId: campaignParticipation.id, - snapshot: JSON.stringify([ke]), + snapshot: new KnowledgeElementCollection([ke]).toSnapsho(), snappedAt: campaignParticipation.sharedAt, }); diff --git a/api/tests/prescription/campaign/integration/domain/usecases/start-writing-campaign-assessment-results-to-stream_test.js b/api/tests/prescription/campaign/integration/domain/usecases/start-writing-campaign-assessment-results-to-stream_test.js index 4073cfb34a9..48fb5e723e4 100644 --- a/api/tests/prescription/campaign/integration/domain/usecases/start-writing-campaign-assessment-results-to-stream_test.js +++ b/api/tests/prescription/campaign/integration/domain/usecases/start-writing-campaign-assessment-results-to-stream_test.js @@ -6,6 +6,7 @@ import dayjs from 'dayjs'; import { usecases } from '../../../../../../src/prescription/campaign/domain/usecases/index.js'; import { CampaignExternalIdTypes } from '../../../../../../src/prescription/shared/domain/constants.js'; +import { KnowledgeElementCollection } from '../../../../../../src/prescription/shared/domain/models/KnowledgeElementCollection.js'; import { CAMPAIGN_FEATURES, ORGANIZATION_FEATURE } from '../../../../../../src/shared/domain/constants.js'; import { Assessment } from '../../../../../../src/shared/domain/models/Assessment.js'; import { CampaignParticipationStatuses, KnowledgeElement } from '../../../../../../src/shared/domain/models/index.js'; @@ -108,7 +109,7 @@ describe('Integration | Domain | Use Cases | start-writing-campaign-assessment-r databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: participant.id, snappedAt: sharedAt, - snapshot: JSON.stringify([ke1]), + snapshot: new KnowledgeElementCollection([ke1]).toSnapshot(), }); ['recSkillWeb1'].forEach((skillId) => { @@ -201,7 +202,7 @@ describe('Integration | Domain | Use Cases | start-writing-campaign-assessment-r databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: participant.id, snappedAt: sharedAt, - snapshot: JSON.stringify([ke1, ke2, ke3]), + snapshot: new KnowledgeElementCollection([ke1, ke2, ke3]).toSnapshot(), }); ['recSkillWeb1', 'recSkillWeb2', 'recSkillWeb3'].forEach((skillId) => { @@ -340,7 +341,7 @@ describe('Integration | Domain | Use Cases | start-writing-campaign-assessment-r databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: participant.id, snappedAt: sharedAt, - snapshot: JSON.stringify([ke1, ke2, ke3]), + snapshot: new KnowledgeElementCollection([ke1, ke2, ke3]).toSnapshot(), }); ['recSkillWeb1', 'recSkillWeb2', 'recSkillWeb3'].forEach((skillId) => { @@ -449,7 +450,7 @@ describe('Integration | Domain | Use Cases | start-writing-campaign-assessment-r databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: participant.id, snappedAt: sharedAt, - snapshot: JSON.stringify([ke1, ke2, ke3]), + snapshot: new KnowledgeElementCollection([ke1, ke2, ke3]).toSnapshot(), }); ['recSkillWeb1', 'recSkillWeb2', 'recSkillWeb3'].forEach((skillId) => { @@ -694,7 +695,7 @@ describe('Integration | Domain | Use Cases | start-writing-campaign-assessment-r databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: participant.id, snappedAt: sharedAt, - snapshot: JSON.stringify([ke1, ke2, ke3]), + snapshot: new KnowledgeElementCollection([ke1, ke2, ke3]).toSnapshot(), }); ['recSkillWeb1', 'recSkillWeb2', 'recSkillWeb3'].forEach((skillId) => { diff --git a/api/tests/prescription/campaign/integration/domain/usecases/start-writing-campaign-profiles-collection-results-to-stream_test.js b/api/tests/prescription/campaign/integration/domain/usecases/start-writing-campaign-profiles-collection-results-to-stream_test.js index 40d956f9ec7..e90b478e52b 100644 --- a/api/tests/prescription/campaign/integration/domain/usecases/start-writing-campaign-profiles-collection-results-to-stream_test.js +++ b/api/tests/prescription/campaign/integration/domain/usecases/start-writing-campaign-profiles-collection-results-to-stream_test.js @@ -11,6 +11,7 @@ import { CampaignExternalIdTypes, CampaignParticipationStatuses, } from '../../../../../../src/prescription/shared/domain/constants.js'; +import { KnowledgeElementCollection } from '../../../../../../src/prescription/shared/domain/models/KnowledgeElementCollection.js'; import { CAMPAIGN_FEATURES, MAX_REACHABLE_LEVEL, @@ -96,7 +97,7 @@ describe('Integration | Domain | Use Cases | start-writing-profiles-collection-c databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: participant.id, snappedAt: sharedAt, - snapshot: JSON.stringify([ke1, ke2, ke3, ke4, ke5]), + snapshot: new KnowledgeElementCollection([ke1, ke2, ke3, ke4, ke5]).toSnapshot(), }); databaseBuilder.factory.learningContent.buildFramework({ diff --git a/api/tests/prescription/campaign/integration/infrastructure/repositories/campaign-collective-result-repository_test.js b/api/tests/prescription/campaign/integration/infrastructure/repositories/campaign-collective-result-repository_test.js index d5c937dbc73..7fa75476dbf 100644 --- a/api/tests/prescription/campaign/integration/infrastructure/repositories/campaign-collective-result-repository_test.js +++ b/api/tests/prescription/campaign/integration/infrastructure/repositories/campaign-collective-result-repository_test.js @@ -3,6 +3,7 @@ import _ from 'lodash'; import { CampaignCollectiveResult } from '../../../../../../src/prescription/campaign/domain/read-models/CampaignCollectiveResult.js'; import * as campaignCollectiveResultRepository from '../../../../../../src/prescription/campaign/infrastructure/repositories/campaign-collective-result-repository.js'; import { CampaignParticipationStatuses } from '../../../../../../src/prescription/shared/domain/constants.js'; +import { KnowledgeElementCollection } from '../../../../../../src/prescription/shared/domain/models/KnowledgeElementCollection.js'; import { databaseBuilder, domainBuilder, expect } from '../../../../../test-helper.js'; const { STARTED } = CampaignParticipationStatuses; @@ -471,7 +472,9 @@ describe('Integration | Repository | Campaign collective result repository', fun userId: fredId, campaignParticipationId: userWithCampaignParticipationFred.campaignParticipation.id, snappedAt: userWithCampaignParticipationFred.sharedAt, - snapshot: JSON.stringify(knowledgeElements.map(domainBuilder.buildKnowledgeElement)), + snapshot: new KnowledgeElementCollection( + knowledgeElements.map(domainBuilder.buildKnowledgeElement), + ).toSnapshot(), }); return databaseBuilder.commit(); @@ -887,54 +890,42 @@ describe('Integration | Repository | Campaign collective result repository', fun ]; const knowledgeElementsAlice = knowledgeElementsDataAlice.map(databaseBuilder.factory.buildKnowledgeElement); - const snapshotsAlice = _(knowledgeElementsAlice).orderBy('createdAt', 'desc').uniqBy('skillId').value(); databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userWithCampaignParticipationAlice.userId, snappedAt: userWithCampaignParticipationAlice.campaignParticipation.sharedAt, - snapshot: JSON.stringify(snapshotsAlice), + snapshot: new KnowledgeElementCollection(knowledgeElementsAlice).toSnapshot(), campaignParticipationId: userWithCampaignParticipationAlice.campaignParticipation.id, }); const knowledgeElementsCharlie = knowledgeElementsDataCharlie.map( databaseBuilder.factory.buildKnowledgeElement, ); - const snapshotsCharlie = _(knowledgeElementsCharlie) - .filter((o) => o.createdAt <= campaignParticipationShareDate) - .orderBy('createdAt', 'desc') - .uniqBy('skillId') - .value(); databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userWithCampaignParticipationCharlie.userId, snappedAt: userWithCampaignParticipationCharlie.campaignParticipation.sharedAt, - snapshot: JSON.stringify(snapshotsCharlie), + snapshot: new KnowledgeElementCollection(knowledgeElementsCharlie).toSnapshot(), campaignParticipationId: userWithCampaignParticipationCharlie.campaignParticipation.id, }); const knowledgeElementsBob = knowledgeElementsDataBob.map(databaseBuilder.factory.buildKnowledgeElement); - const snapshotsBob = _(knowledgeElementsBob) - .filter((o) => o.createdAt <= campaignParticipationShareDate) - .orderBy('createdAt', 'desc') - .uniqBy('skillId') - .value(); databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userWithCampaignParticipationBob.userId, snappedAt: userWithCampaignParticipationBob.campaignParticipation.sharedAt, - snapshot: JSON.stringify(snapshotsBob), + snapshot: new KnowledgeElementCollection(knowledgeElementsBob).toSnapshot(), campaignParticipationId: userWithCampaignParticipationBob.campaignParticipation.id, }); knowledgeElementsDataDan.map(databaseBuilder.factory.buildKnowledgeElement); const knowledgeElementsElo = knowledgeElementsDataElo.map(databaseBuilder.factory.buildKnowledgeElement); - const snapshotsElo = _(knowledgeElementsElo).orderBy('createdAt', 'desc').uniqBy('skillId').value(); databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userWithCampaignParticipationElo.userId, snappedAt: userWithCampaignParticipationElo.campaignParticipation.sharedAt, - snapshot: JSON.stringify(snapshotsElo), + snapshot: new KnowledgeElementCollection(knowledgeElementsElo).toSnapshot(), campaignParticipationId: userWithCampaignParticipationElo.campaignParticipation.id, }); @@ -988,7 +979,7 @@ describe('Integration | Repository | Campaign collective result repository', fun databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userId, snappedAt: campaignParticipation.sharedAt, - snapshot: JSON.stringify([knowledgeElement]), + snapshot: new KnowledgeElementCollection([knowledgeElement]).toSnapshot(), campaignParticipationId: campaignParticipation.id, }); @@ -1071,26 +1062,20 @@ describe('Integration | Repository | Campaign collective result repository', fun ]; const knowledgeElementsAlice = knowledgeElementsDataAlice.map(databaseBuilder.factory.buildKnowledgeElement); - const snapshotsAlice = _(knowledgeElementsAlice).orderBy('createdAt', 'desc').uniqBy('skillId').value(); const knowledgeElementsBob = knowledgeElementsDataBob.map(databaseBuilder.factory.buildKnowledgeElement); - const snapshotsBob = _(knowledgeElementsBob) - .filter((o) => o.createdAt <= campaignParticipationShareDate) - .orderBy('createdAt', 'desc') - .uniqBy('skillId') - .value(); databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userWithCampaignParticipationAlice.userId, snappedAt: userWithCampaignParticipationAlice.campaignParticipation.sharedAt, - snapshot: JSON.stringify(snapshotsAlice), + snapshot: new KnowledgeElementCollection(knowledgeElementsAlice).toSnapshot(), campaignParticipationId: userWithCampaignParticipationAlice.campaignParticipation.id, }); databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userWithCampaignParticipationBob.userId, snappedAt: userWithCampaignParticipationBob.campaignParticipation.sharedAt, - snapshot: JSON.stringify(snapshotsBob), + snapshot: new KnowledgeElementCollection(knowledgeElementsBob).toSnapshot(), campaignParticipationId: userWithCampaignParticipationBob.campaignParticipation.id, }); diff --git a/api/tests/prescription/campaign/integration/infrastructure/repositories/campaign-profiles-collection-participation-summary-repository_test.js b/api/tests/prescription/campaign/integration/infrastructure/repositories/campaign-profiles-collection-participation-summary-repository_test.js index 0d39edf8dd5..2f49b283237 100644 --- a/api/tests/prescription/campaign/integration/infrastructure/repositories/campaign-profiles-collection-participation-summary-repository_test.js +++ b/api/tests/prescription/campaign/integration/infrastructure/repositories/campaign-profiles-collection-participation-summary-repository_test.js @@ -4,6 +4,7 @@ import { CampaignParticipationStatuses, CampaignTypes, } from '../../../../../../src/prescription/shared/domain/constants.js'; +import { KnowledgeElementCollection } from '../../../../../../src/prescription/shared/domain/models/KnowledgeElementCollection.js'; import { databaseBuilder, expect } from '../../../../../test-helper.js'; const { STARTED, TO_SHARE, SHARED } = CampaignParticipationStatuses; @@ -171,7 +172,7 @@ describe('Integration | Repository | Campaign Profiles Collection Participation databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: campaignParticipation.userId, snappedAt: campaignParticipation.sharedAt, - snapshot: JSON.stringify([ke1, ke2]), + snapshot: new KnowledgeElementCollection([ke1, ke2]).toSnapshot(), }); await databaseBuilder.commit(); diff --git a/api/tests/prescription/campaign/integration/infrastructure/repositories/knowledge-element-snapshot-repository_test.js b/api/tests/prescription/campaign/integration/infrastructure/repositories/knowledge-element-snapshot-repository_test.js index c807408fad4..51a7acfffc2 100644 --- a/api/tests/prescription/campaign/integration/infrastructure/repositories/knowledge-element-snapshot-repository_test.js +++ b/api/tests/prescription/campaign/integration/infrastructure/repositories/knowledge-element-snapshot-repository_test.js @@ -138,6 +138,7 @@ describe('Integration | Repository | KnowledgeElementSnapshotRepository', functi databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userId1, snappedAt: snappedAt1, + // snapshot: new KnowledgeElementCollection([knowledgeElement1]).toSnapshot(), snapshot: JSON.stringify([knowledgeElement1]), campaignParticipationId, }); @@ -146,6 +147,7 @@ describe('Integration | Repository | KnowledgeElementSnapshotRepository', functi databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userId2, snappedAt: snappedAt2, + // snapshot: new KnowledgeElementCollection([knowledgeElement2]).toSnapshot(), snapshot: JSON.stringify([knowledgeElement2]), campaignParticipationId, }); diff --git a/api/tests/shared/integration/domain/services/placement-profile-service_test.js b/api/tests/shared/integration/domain/services/placement-profile-service_test.js index be91747e377..d46490a9353 100644 --- a/api/tests/shared/integration/domain/services/placement-profile-service_test.js +++ b/api/tests/shared/integration/domain/services/placement-profile-service_test.js @@ -1,3 +1,4 @@ +import { KnowledgeElementCollection } from '../../../../../src/prescription/shared/domain/models/KnowledgeElementCollection.js'; import { LOCALE } from '../../../../../src/shared/domain/constants.js'; import { CampaignParticipationStatuses, @@ -529,7 +530,7 @@ describe('Shared | Integration | Domain | Services | Placement Profile Service', databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userId, snappedAt: sharedAt, - snapshot: JSON.stringify([ke]), + snapshot: new KnowledgeElementCollection([ke]).toSnapsho(), }); await databaseBuilder.commit(); @@ -579,7 +580,7 @@ describe('Shared | Integration | Domain | Services | Placement Profile Service', databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userId, snappedAt: sharedAt, - snapshot: JSON.stringify([ke1, ke2]), + snapshot: new KnowledgeElementCollection([ke1, ke2]).toSnapshot(), }); await databaseBuilder.commit(); @@ -607,7 +608,7 @@ describe('Shared | Integration | Domain | Services | Placement Profile Service', databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userId, snappedAt: sharedAt, - snapshot: JSON.stringify([ke]), + snapshot: new KnowledgeElementCollection([ke]).toSnapsho(), }); await databaseBuilder.commit(); @@ -642,7 +643,7 @@ describe('Shared | Integration | Domain | Services | Placement Profile Service', databaseBuilder.factory.buildKnowledgeElementSnapshot({ userId: userId, snappedAt: sharedAt, - snapshot: JSON.stringify([ke]), + snapshot: new KnowledgeElementCollection([ke]).toSnapsho(), }); await databaseBuilder.commit(); diff --git a/api/tests/shared/integration/infrastructure/repositories/knowledge-element-repository_test.js b/api/tests/shared/integration/infrastructure/repositories/knowledge-element-repository_test.js index 706f9a5d6c2..aa3199b7d44 100644 --- a/api/tests/shared/integration/infrastructure/repositories/knowledge-element-repository_test.js +++ b/api/tests/shared/integration/infrastructure/repositories/knowledge-element-repository_test.js @@ -1,5 +1,6 @@ import _ from 'lodash'; +import { KnowledgeElementCollection } from '../../../../../src/prescription/shared/domain/models/KnowledgeElementCollection.js'; import { DomainTransaction } from '../../../../../src/shared/domain/DomainTransaction.js'; import { KnowledgeElement } from '../../../../../src/shared/domain/models/KnowledgeElement.js'; import * as knowledgeElementRepository from '../../../../../src/shared/infrastructure/repositories/knowledge-element-repository.js';