Skip to content

Commit

Permalink
[TECH] Internationalisation de l'alternative textuelle au média d'int…
Browse files Browse the repository at this point in the history
…roduction dans les missions

 #760
  • Loading branch information
pix-service-auto-merge committed Sep 19, 2024
2 parents e75d59e + 1c95ece commit e783acc
Show file tree
Hide file tree
Showing 17 changed files with 94 additions and 64 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const TABLE_NAME = 'missions';

/**
* @param { import("knex").Knex } knex
* @returns { Promise<void> }
*/
export async function up(knex) {
await knex.schema.alterTable(TABLE_NAME, function(table) {
table.dropColumn('introductionMediaAlt');
});
}

/**
* @param { import("knex").Knex } knex
* @returns { Promise<void> }
*/
export async function down(knex) {
await knex.schema.alterTable(TABLE_NAME, function(table) {
table.string('introductionMediaAlt').nullable();
});
}
4 changes: 2 additions & 2 deletions api/lib/domain/models/Mission.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export class Mission {
validatedObjectives_i18n,
introductionMediaUrl,
introductionMediaType,
introductionMediaAlt,
introductionMediaAlt_i18n,
status,
documentationUrl,
}) {
Expand All @@ -22,7 +22,7 @@ export class Mission {
this.validatedObjectives_i18n = validatedObjectives_i18n;
this.introductionMediaUrl = introductionMediaUrl;
this.introductionMediaType = introductionMediaType;
this.introductionMediaAlt = introductionMediaAlt;
this.introductionMediaAlt_i18n = introductionMediaAlt_i18n;
this.status = status;
this.documentationUrl = documentationUrl;
}
Expand Down
4 changes: 2 additions & 2 deletions api/lib/domain/models/release/MissionForRelease.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export class MissionForRelease {
content,
introductionMediaUrl,
introductionMediaType,
introductionMediaAlt,
introductionMediaAlt_i18n,
documentationUrl
}) {
this.id = id;
Expand All @@ -21,7 +21,7 @@ export class MissionForRelease {
this.content = new Content(content);
this.introductionMediaUrl = introductionMediaUrl;
this.introductionMediaType = introductionMediaType;
this.introductionMediaAlt = introductionMediaAlt;
this.introductionMediaAlt_i18n = introductionMediaAlt_i18n;
this.documentationUrl = documentationUrl;
}
}
Expand Down
2 changes: 0 additions & 2 deletions api/lib/infrastructure/repositories/mission-repository.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ export async function save(mission) {
status: mission.status,
introductionMediaUrl: mission.introductionMediaUrl,
introductionMediaType: mission.introductionMediaType,
introductionMediaAlt: mission.introductionMediaAlt,
documentationUrl: mission.documentationUrl,
}).onConflict('id')
.merge()
Expand All @@ -76,7 +75,6 @@ function _toDomain(mission, translations) {
thematicIds: mission.thematicIds,
introductionMediaUrl: mission.introductionMediaUrl,
introductionMediaType: mission.introductionMediaType,
introductionMediaAlt: mission.introductionMediaAlt,
documentationUrl: mission.documentationUrl,
...missionTranslations.toDomain(translationsByMissionId[mission.id])
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export function serializeMission(mission, warnings) {
name: mission.name_i18n.fr,
learningObjectives: mission.learningObjectives_i18n.fr,
validatedObjectives: mission.validatedObjectives_i18n.fr,
introductionMediaAlt: mission.introductionMediaAlt_i18n.fr,
warnings,
};
},
Expand Down Expand Up @@ -56,7 +57,7 @@ export function deserializeMission(attributes) {
validatedObjectives_i18n: { fr: attributes['validated-objectives'] },
introductionMediaUrl: attributes['introduction-media-url'] || null,
introductionMediaType: attributes['introduction-media-type'] || null,
introductionMediaAlt: attributes['introduction-media-alt'] || null,
introductionMediaAlt_i18n: { fr: attributes['introduction-media-alt'] },
documentationUrl: attributes['documentation-url'] || null,
status: attributes.status,
});
Expand Down
1 change: 1 addition & 0 deletions api/lib/infrastructure/translations/mission.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const fields = [
{ field: 'name' },
{ field: 'learningObjectives' },
{ field: 'validatedObjectives' },
{ field: 'introductionMediaAlt' },
];

export const {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ describe('Acceptance | API | mission | GET /api/missions', function() {
'learning-objectives': 'Être imbattable',
'introduction-media-url': null,
'introduction-media-type': null,
'introduction-media-alt': null,
'introduction-media-alt': 'Message alternatif',
'documentation-url': null,
'created-at': new Date('2024-01-01'),
'warnings': undefined,
Expand Down
3 changes: 2 additions & 1 deletion api/tests/acceptance/application/mission/put_mission_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ describe('Acceptance | API | mission | PATCH /api/missions/{id}', function() {
'thematic-ids': '',
status: Mission.status.EXPERIMENTAL,
'learning-objectives': 'Une chose',
'validated-objectives': null
'validated-objectives': null,
'introductionMediaAlt': null
},
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ async function mockCurrentContent() {
createdAt: new Date('2010-01-04'),
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Message alternatif' },
documentationUrl: null,
content: {
dareChallenges: [],
Expand All @@ -181,7 +181,7 @@ async function mockCurrentContent() {
createdAt: new Date('2010-01-05'),
introductionMediaUrl: 'http://example.com',
introductionMediaType: 'image',
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Message alternatif' },
documentationUrl: null,
content: {
dareChallenges: [],
Expand Down Expand Up @@ -244,7 +244,7 @@ async function mockCurrentContent() {
createdAt: new Date('2010-01-04'),
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt: 'Message alternatif',
});
databaseBuilder.factory.buildMission({
id: 2,
Expand All @@ -257,7 +257,7 @@ async function mockCurrentContent() {
createdAt: new Date('2010-01-05'),
introductionMediaUrl: 'http://example.com',
introductionMediaType: 'image',
introductionMediaAlt: null,
introductionMediaAlt: 'Message alternatif',
});
databaseBuilder.factory.buildMission({
id: 3,
Expand All @@ -270,7 +270,7 @@ async function mockCurrentContent() {
createdAt: new Date('2010-01-05'),
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt: 'Message alternatif',
});

for (const locale of ['fr', 'en', 'nl']) {
Expand Down Expand Up @@ -506,7 +506,7 @@ async function mockContentForRelease() {
status: Mission.status.VALIDATED,
introductionMediaUrl: 'http://example.com',
introductionMediaType: 'image',
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Message alternatif' },
documentationUrl: null,
}), new MissionForRelease({
id: 2,
Expand All @@ -517,7 +517,7 @@ async function mockContentForRelease() {
status: Mission.status.EXPERIMENTAL,
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Alt Message alternatif' },
documentationUrl: 'http://url-example.net',
})],
};
Expand Down Expand Up @@ -786,7 +786,7 @@ describe('Acceptance | Controller | release-controller', () => {
status: Mission.status.VALIDATED,
introductionMediaUrl: 'http://example.com',
introductionMediaType: 'image',
introductionMediaAlt: null,
introductionMediaAlt: 'Message alternatif',
documentationUrl: null,
});
databaseBuilder.factory.buildMission({
Expand All @@ -799,7 +799,7 @@ describe('Acceptance | Controller | release-controller', () => {
status: Mission.status.EXPERIMENTAL,
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt: 'Alt Message alternatif',
documentationUrl: 'http://url-example.net',
});
databaseBuilder.factory.buildMission({
Expand Down
14 changes: 7 additions & 7 deletions api/tests/integration/domain/services/mission-validator_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ describe('Integration | Validator | Mission', function() {
validatedObjectives_i18n: { fr: 'Très bien' },
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: null },
documentationUrl: null,
status: Mission.status.INACTIVE,
createdAt: new Date('2023-12-25')
Expand Down Expand Up @@ -155,7 +155,7 @@ describe('Integration | Validator | Mission', function() {
validatedObjectives_i18n: { fr: 'Très bien' },
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: null },
documentationUrl: null,
status: Mission.status.VALIDATED,
createdAt: new Date('2023-12-25')
Expand Down Expand Up @@ -207,7 +207,7 @@ describe('Integration | Validator | Mission', function() {
validatedObjectives_i18n: { fr: 'Très bien' },
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: null },
documentationUrl: null,
status: Mission.status.VALIDATED,
createdAt: new Date('2023-12-25')
Expand Down Expand Up @@ -265,7 +265,7 @@ describe('Integration | Validator | Mission', function() {
validatedObjectives_i18n: { fr: 'Très bien' },
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: null },
documentationUrl: null,
status: Mission.status.VALIDATED,
createdAt: new Date('2023-12-25')
Expand Down Expand Up @@ -317,7 +317,7 @@ describe('Integration | Validator | Mission', function() {
validatedObjectives_i18n: { fr: 'Très bien' },
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: null },
documentationUrl: null,
status: Mission.status.VALIDATED,
createdAt: new Date('2023-12-25')
Expand Down Expand Up @@ -350,7 +350,7 @@ describe('Integration | Validator | Mission', function() {
validatedObjectives_i18n: { fr: 'Très bien' },
introductionMediaType: null,
introductionMediaUrl: 'http://example.net',
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: null },
documentationUrl: null,
status: Mission.status.INACTIVE,
createdAt: new Date('2023-12-25')
Expand All @@ -375,7 +375,7 @@ describe('Integration | Validator | Mission', function() {
validatedObjectives_i18n: { fr: 'Très bien' },
introductionMediaType: 'image',
introductionMediaUrl: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: null },
documentationUrl: null,
status: Mission.status.INACTIVE,
createdAt: new Date('2023-12-25')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ describe('Integration | Repository | mission-repository', function() {
learningObjectives_i18n: { fr: 'Que tu sois le meilleur' },
validatedObjectives_i18n: { fr: 'Rien' },
introductionMediaUrl: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Message alternatif' },
introductionMediaType: null,
documentationUrl: null,
status: Mission.status.VALIDATED,
Expand Down Expand Up @@ -71,7 +71,7 @@ describe('Integration | Repository | mission-repository', function() {
learningObjectives_i18n: { fr: 'Que tu sois le meilleur' },
validatedObjectives_i18n: { fr: 'Rien' },
introductionMediaUrl: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Message alternatif' },
introductionMediaType: null,
documentationUrl: null,
status: Mission.status.VALIDATED,
Expand All @@ -84,7 +84,7 @@ describe('Integration | Repository | mission-repository', function() {
learningObjectives_i18n: { fr: 'Alt objectives' },
validatedObjectives_i18n: { fr: 'Alt validated objectives' },
introductionMediaUrl: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Message alternatif' },
introductionMediaType: null,
documentationUrl: null,
status: Mission.status.INACTIVE,
Expand Down Expand Up @@ -184,7 +184,7 @@ describe('Integration | Repository | mission-repository', function() {
learningObjectives_i18n: { fr: 'Alt objectives' },
validatedObjectives_i18n: { fr: 'Alt validated objectives' },
introductionMediaUrl: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Message alternatif' },
introductionMediaType: null,
documentationUrl: null,
status: Mission.status.VALIDATED,
Expand All @@ -204,7 +204,7 @@ describe('Integration | Repository | mission-repository', function() {
validatedObjectives_i18n: { fr: 'Très bien' },
introductionMediaUrl: 'http://example.net',
introductionMediaType: 'image',
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Message alternatif' },
documentationUrl: 'http://url-example.net',
status: Mission.status.INACTIVE,
});
Expand All @@ -222,12 +222,11 @@ describe('Integration | Repository | mission-repository', function() {
thematicIds: 'QWERTY',
introductionMediaUrl: 'http://example.net',
introductionMediaType: 'image',
introductionMediaAlt: null,
documentationUrl: 'http://url-example.net',
status: Mission.status.INACTIVE,
};

const missionFromDb = await knex('missions').where({ id: savedMission.id }).first().select('competenceId', 'thematicIds', 'status', 'id', 'introductionMediaUrl', 'introductionMediaAlt', 'introductionMediaType', 'documentationUrl');
const missionFromDb = await knex('missions').where({ id: savedMission.id }).first().select('competenceId', 'thematicIds', 'status', 'id', 'introductionMediaUrl', 'introductionMediaType', 'documentationUrl');
expect(missionFromDb).to.deep.equal(expectedMission);
});

Expand All @@ -239,6 +238,7 @@ describe('Integration | Repository | mission-repository', function() {
thematicIds: 'QWERTY',
learningObjectives_i18n: { fr: 'au boulot' },
validatedObjectives_i18n: { fr: 'Très bien' },
introductionMediaAlt_i18n: { fr: 'Alt text' },
status: Mission.status.INACTIVE,
});

Expand All @@ -259,6 +259,11 @@ describe('Integration | Repository | mission-repository', function() {
key: `mission.${savedMission.id}.validatedObjectives`,
locale: 'fr',
value: 'Très bien'
},
{
key: `mission.${savedMission.id}.introductionMediaAlt`,
locale: 'fr',
value: 'Alt text'
}
];

Expand All @@ -285,7 +290,7 @@ describe('Integration | Repository | mission-repository', function() {
validatedObjectives_i18n: { fr: 'Très bien' },
introductionMediaUrl: 'http://example.net',
introductionMediaType: 'vidéo',
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Message alternatif' },
documentationUrl: 'http://fake-url.net',
status: Mission.status.INACTIVE,
});
Expand All @@ -305,11 +310,10 @@ describe('Integration | Repository | mission-repository', function() {
status: Mission.status.INACTIVE,
introductionMediaUrl: 'http://example.net',
introductionMediaType: 'vidéo',
introductionMediaAlt: null,
documentationUrl: 'http://fake-url.net',
};

const missionFromDb = await knex('missions').where({ id: updatedMission.id }).first().select('competenceId', 'thematicIds', 'status', 'id', 'introductionMediaUrl', 'introductionMediaAlt', 'introductionMediaType', 'documentationUrl');
const missionFromDb = await knex('missions').where({ id: updatedMission.id }).first().select('competenceId', 'thematicIds', 'status', 'id', 'introductionMediaUrl', 'introductionMediaType', 'documentationUrl');
expect(missionFromDb).to.deep.equal(expectedMission);
});

Expand All @@ -328,6 +332,7 @@ describe('Integration | Repository | mission-repository', function() {
thematicIds: 'Thematic',
learningObjectives_i18n: { fr: 'Etre la boss' },
validatedObjectives_i18n: { fr: 'intermédiaire' },
introductionMediaAlt_i18n: { fr: 'New Alt text' },
status: Mission.status.INACTIVE,
});

Expand All @@ -348,6 +353,11 @@ describe('Integration | Repository | mission-repository', function() {
key: `mission.${updatedMission.id}.validatedObjectives`,
locale: 'fr',
value: 'intermédiaire'
},
{
key: `mission.${savedMission.id}.introductionMediaAlt`,
locale: 'fr',
value: 'New Alt text'
}
];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1427,7 +1427,7 @@ function _getRichCurrentContentDTO() {
createdAt: new Date('2010-01-04'),
introductionMediaUrl: null,
introductionMediaType: null,
introductionMediaAlt: null,
introductionMediaAlt_i18n: { fr: 'Message alternatif' },
documentationUrl: 'http://url-example.net',
content: {
dareChallenges: [],
Expand Down
Loading

0 comments on commit e783acc

Please sign in to comment.