Skip to content

Commit d9f82ca

Browse files
committed
WIP
1 parent 3660318 commit d9f82ca

File tree

8 files changed

+49
-5
lines changed

8 files changed

+49
-5
lines changed

api/db/seeds/data/team-prescription/build-quests.js

+32-1
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,39 @@ import {
1212
USER_ID_ADMIN_ORGANIZATION,
1313
USER_ID_MEMBER_ORGANIZATION,
1414
} from '../common/constants.js';
15-
import { TARGET_PROFILE_BADGES_STAGES_ID } from './constants.js';
15+
import { TARGET_PROFILE_BADGES_STAGES_ID, TARGET_PROFILE_NO_BADGES_NO_STAGES_ID } from './constants.js';
1616

1717
const profileRewardTemporaryStorage = temporaryStorage.withPrefix('profile-rewards:');
1818

19+
function buildParenthoodQuest(databaseBuilder) {
20+
const { id: rewardId } = databaseBuilder.factory.buildAttestation({
21+
templateName: 'parenthood-attestation-template',
22+
key: ATTESTATIONS.PARENTHOOD,
23+
});
24+
25+
const targetProfileId = TARGET_PROFILE_NO_BADGES_NO_STAGES_ID;
26+
databaseBuilder.factory.buildQuest({
27+
rewardType: REWARD_TYPES.ATTESTATION,
28+
rewardId,
29+
eligibilityRequirements: [
30+
{
31+
type: TYPES.CAMPAIGN_PARTICIPATIONS,
32+
data: {
33+
targetProfileIds: [targetProfileId],
34+
},
35+
},
36+
],
37+
successRequirements: [
38+
{
39+
type: SUCCESS_TYPES.ASSESSMENT,
40+
data: {
41+
state: Assessment.states.COMPLETED,
42+
},
43+
},
44+
],
45+
});
46+
}
47+
1948
const USERS = [
2049
{
2150
firstName: 'attestation-success',
@@ -442,4 +471,6 @@ export const buildQuests = async (databaseBuilder) => {
442471
organizationId: SCO_ORGANIZATION_ID,
443472
profileRewardId: otherUserProfileRewardId,
444473
});
474+
475+
buildParenthoodQuest(databaseBuilder);
445476
};

api/src/evaluation/application/answers/answer-controller.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const save = async function (request, h, dependencies = { answerSerializer, requ
1616
!config.featureToggles.isAsyncQuestRewardingCalculationEnabled &&
1717
config.featureToggles.isQuestEnabled
1818
) {
19-
await questUsecases.rewardUser({ userId });
19+
await questUsecases.rewardUser({ userId, assessmentId: answer.assessment.id });
2020
}
2121

2222
return h.response(dependencies.answerSerializer.serialize(createdAnswer)).created();

api/src/profile/domain/constants.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export const ATTESTATIONS = {
22
SIXTH_GRADE: 'SIXTH_GRADE',
3+
PARENTHOOD: 'PARENTHOOD',
34
};

api/src/quest/domain/models/Eligibility.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export class Eligibility {
1818
get campaignParticipations() {
1919
return {
2020
targetProfileIds: this.#campaignParticipations.map(({ targetProfileId }) => targetProfileId),
21+
statuses: this.#campaignParticipations.map(({ status }) => status),
2122
};
2223
}
2324

api/src/quest/domain/models/Quest.js

+4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ class Quest {
3535
if (Array.isArray(criterion)) {
3636
return criterion.every((valueToTest) => eligibilityData.includes(valueToTest));
3737
}
38+
if (typeof criterion === 'object') {
39+
const comparaisonFunction = criterion.comparison === COMPARISON.ONE_OF ? 'some' : 'every';
40+
return criterion[comparaisonFunction]((valueToTest) => eligibilityData.includes(valueToTest));
41+
}
3842
return eligibilityData === criterion;
3943
});
4044
}

api/src/quest/domain/usecases/reward-user.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ export const rewardUser = async ({
3131
continue;
3232
}
3333

34-
const success = await successRepository.find({ userId, skillIds: quest.successRequirements[0].data.ids });
34+
const success = await successRepository.find({
35+
userId,
36+
skillIds: quest.successRequirements[0].data.ids,
37+
});
3538
const userHasSucceedQuest = quest.isSuccessful(success);
3639

3740
if (userHasSucceedQuest) {

api/tests/quest/unit/domain/models/Quest_test.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -141,16 +141,20 @@ describe('Quest | Unit | Domain | Models | Quest ', function () {
141141
comparison: COMPARISON.ONE_OF,
142142
},
143143
{
144-
type: TYPES.ORGANIZATION_LEARNER,
144+
type: TYPES.ORGANIZATION_LEARNER, // Object
145145
data: {
146146
MEFCode: '10010012110',
147147
},
148148
comparison: COMPARISON.ALL,
149149
},
150150
{
151-
type: TYPES.CAMPAIGN_PARTICIPATIONS,
151+
type: TYPES.CAMPAIGN_PARTICIPATIONS, // Array
152152
data: {
153153
targetProfileIds: [eligibleTargetProfileId],
154+
statuses: {
155+
value: ['TO_SHARE', 'SHARED'],
156+
comparison: COMPARISON.ONE_OF,
157+
},
154158
},
155159
comparison: COMPARISON.ALL,
156160
},

0 commit comments

Comments
 (0)