Skip to content

Commit 9123f7d

Browse files
authored
feat(api): transform training.duration into string
in training repo for creation
1 parent 929ee17 commit 9123f7d

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

api/src/devcomp/infrastructure/repositories/training-repository.js

+7
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,9 @@ async function findWithTriggersByCampaignParticipationIdAndLocale({ campaignPart
133133

134134
async function create({ training }) {
135135
const knexConn = DomainTransaction.getConnection();
136+
if (typeof training.duration !== 'string') {
137+
training.duration = _transformDurationFormat(training.duration);
138+
}
136139
const pickedAttributes = pick(training, [
137140
'title',
138141
'internalTitle',
@@ -186,6 +189,10 @@ async function findPaginatedByUserId({ userId, locale, page }) {
186189
return { userRecommendedTrainings, pagination };
187190
}
188191

192+
function _transformDurationFormat(durationObject) {
193+
return `${durationObject.days ?? 0}d${durationObject.hours ?? 0}h${durationObject.minutes ?? 0}m${durationObject.seconds ?? 0}s`;
194+
}
195+
189196
export {
190197
create,
191198
findPaginatedByUserId,

api/tests/devcomp/integration/infrastructure/repositories/training-repository_test.js

+27
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,33 @@ describe('Integration | Repository | training-repository', function () {
616616
expect(createdTraining.id).to.exist;
617617
expect(createdTraining).to.deep.include({ ...training, duration: { hours: 6 } });
618618
});
619+
620+
it('should handle other duration‘s format', async function () {
621+
// given
622+
const training = {
623+
title: 'Titre du training',
624+
internalTitle: 'Titre interne du training',
625+
link: 'https://training-link.org',
626+
type: 'webinaire',
627+
duration: {
628+
hours: 5,
629+
minutes: 30,
630+
},
631+
locale: 'fr',
632+
editorName: 'Un ministère',
633+
editorLogoUrl: 'https://mon-logo.svg',
634+
};
635+
636+
// when
637+
const createdTraining = await trainingRepository.create({
638+
training,
639+
});
640+
641+
// then
642+
expect(createdTraining).to.be.instanceOf(TrainingForAdmin);
643+
expect(createdTraining.id).to.exist;
644+
expect(createdTraining).to.deep.include({ ...training, duration: { hours: 5, minutes: 30 } });
645+
});
619646
});
620647

621648
describe('#update', function () {

0 commit comments

Comments
 (0)