Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] Remplacer "Résultat thématique" par "Badge" (PIX-17152) #11844

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions admin/app/components/badges/badge.gjs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ export default class Badge extends Component {
imageUrl: this.IMAGE_BASE_URL + this.form.imageName,
};
await this.args.onUpdateBadge(badgeDTO);
this.pixToast.sendSuccessNotification({ message: 'Le résultat thématique a été mis à jour.' });
this.pixToast.sendSuccessNotification({ message: 'Le badge a été mis à jour.' });
this.editMode = false;
} catch (err) {
let errorMessage;
Expand Down Expand Up @@ -120,7 +120,7 @@ export default class Badge extends Component {
@route="authenticated.target-profiles.target-profile.insights"
>{{@targetProfile.internalName}}</LinkTo>
<span class="wire">&nbsp;>&nbsp;</span>
<h1>Résultat thématique {{@badge.id}}</h1>
<h1>Badge {{@badge.id}}</h1>
</p>
</div>
</header>
Expand Down Expand Up @@ -217,7 +217,7 @@ export default class Badge extends Component {
<dd class="page-details__value">{{@badge.id}}</dd>
<dt class="page-details__label">Clé&nbsp;:&nbsp;</dt>
<dd class="page-details__value">{{@badge.key}}</dd>
<dt class="page-details__label">Nom du résultat thématique&nbsp;:&nbsp;</dt>
<dt class="page-details__label">Nom du badge&nbsp;:&nbsp;</dt>
<dd class="page-details__value">{{@badge.title}}</dd>
<dt class="page-details__label">Image&nbsp;:&nbsp;</dt>
<dd class="page-details__value">{{this.imageName}}</dd>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export default class Badges extends Component {
if (this.isLoading || this.badges?.length > 0) {
return undefined;
}
return 'Seul un profil cible comportant au moins un résultat thématique certifiant peut être rattaché à une certification complémentaire. Le profil cible que vous avez sélectionné ne comporte pas de résultat thématique certifiant. Veuillez le modifier puis rafraîchir cette page ou bien sélectionner un autre profil cible.';
return 'Seul un profil cible comportant au moins un badge certifiant peut être rattaché à une certification complémentaire. Le profil cible que vous avez sélectionné ne comporte pas de badge certifiant. Veuillez le modifier puis rafraîchir cette page ou bien sélectionner un autre profil cible.';
}

@action
Expand Down Expand Up @@ -67,7 +67,7 @@ export default class Badges extends Component {
}

#onfetchBadgesError() {
this.args.onError('Une erreur est survenue lors de la recherche de résultats thématiques.');
this.args.onError('Une erreur est survenue lors de la recherche de badges.');
}

willDestroy() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,14 @@ export default class List extends Component {
{{/if}}

<section class="complementary-certification-attach-badges__section">
<h1>Résultats thématiques certifiants</h1>
<h1>Badges certifiants</h1>

<div class="complementary-certification-attach-badges-section__table">
<p>
{{t "common.forms.mandatory-fields" htmlSafe=true}}
</p>

<PixTable @variant="admin" @data={{@options}} @caption="Liste des résultats thématiques">
<PixTable @variant="admin" @data={{@options}} @caption="Liste des badges">
<:columns as |row option|>
<PixTableColumn @context={{option}}>
<:header>
Expand All @@ -69,16 +69,16 @@ export default class List extends Component {
<ContentHeader>
<:default>Niveau</:default>
<:tooltip>
Renseignez un chiffre unique pour chaque RT, niveau minimum = 1 niveau maximum = nombre total de
RT.
Renseignez un chiffre unique pour chaque badge, niveau minimum = 1 niveau maximum = nombre total
de badge.
</:tooltip>
</ContentHeader>
</:header>
<:cell>
<PixInput
@id="{{row.id}}-level"
name="level"
placeholder="Exemple de niveau de RT : 1"
placeholder="Exemple de niveau de badge : 1"
required="true"
aria-required="true"
@screenReaderOnly={{true}}
Expand Down Expand Up @@ -141,7 +141,7 @@ export default class List extends Component {
<ContentHeader>
<:default>Label du certificat</:default>
<:tooltip>
Renseignez un label qui permet de distinguer chaque RT (exemples : Pix+ Droit Expert, CléA
Renseignez un label qui permet de distinguer chaque badge (exemples : Pix+ Droit Expert, CléA
Numérique, Pix+ Edu 2nd degré Confirmé etc…)
</:tooltip>
</ContentHeader>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ export default class AttachBadges extends Component {
{{#if this.selectedTargetProfile}}
<Card
class="attach-target-profile__card attach-target-profile__card-badges"
@title="2. Complétez les informations des résultats thématiques"
@title="2. Complétez les informations des badges"
>
<Badges
@targetProfile={{this.selectedTargetProfile}}
Expand Down
14 changes: 7 additions & 7 deletions admin/app/components/target-profiles/badge-form.gjs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export default class BadgeForm extends Component {

if (!hasCampaignCriteria && !hasCappedTubesCriteria) {
return this.pixToast.sendErrorNotification({
message: "Vous devez sélectionner au moins un critère d'obtention de résultat thématique",
message: "Vous devez sélectionner au moins un critère d'obtention de badge",
});
}

Expand Down Expand Up @@ -85,7 +85,7 @@ export default class BadgeForm extends Component {
});
await this.args.targetProfile.reload();

this.pixToast.sendSuccessNotification({ message: 'Le résultat thématique a été créé.' });
this.pixToast.sendSuccessNotification({ message: 'Le badge a été créé.' });
this.router.transitionTo('authenticated.target-profiles.target-profile.insights');
return badge;
} catch (error) {
Expand All @@ -96,17 +96,17 @@ export default class BadgeForm extends Component {

<template>
<form class="admin-form admin-form--badge-form" {{on "submit" this.submitBadgeCreation}}>
<h2 class="badge-form__title">Création d'un résultat thématique</h2>
<h2 class="badge-form__title">Création d'un badge</h2>
<section class="admin-form__content admin-form__content--with-counters">
<Card class="create-target-profile__card" @title="Remplir des informations sur le résultat thématique">
<Card class="create-target-profile__card" @title="Remplir des informations sur le badge">
<div class="badge-form__text-field">
<PixInput
@id="title"
@value={{this.badge.title}}
@requiredLabel={{t "common.forms.mandatory"}}
{{on "change" (fn this.updateFormValue "title")}}
>
<:label>Nom du résultat thématique :</:label>
<:label>Nom du badge :</:label>
</PixInput>
</div>
<div class="badge-form__text-field">
Expand All @@ -117,7 +117,7 @@ export default class BadgeForm extends Component {
target="_blank"
rel="noopener noreferrer"
>
Voir la liste des résultats thématiques
Voir la liste des badges
</a>
</p>
<PixInput
Expand Down Expand Up @@ -185,7 +185,7 @@ export default class BadgeForm extends Component {
{{t "common.actions.cancel"}}
</PixButtonLink>
<PixButton @variant="success" @type="submit">
Enregistrer le RT
Enregistrer le badge
</PixButton>
</section>
</form>
Expand Down
6 changes: 3 additions & 3 deletions admin/app/components/target-profiles/badge-form/criteria.gjs
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,13 @@ export default class Criteria extends Component {
}

<template>
<Card @title="Critères d'obtention du résultat thématique">
<Card @title="Critères d'obtention du badge">
<PixNotificationAlert @type="info" @withIcon={{true}}>
Vous pouvez définir des critères de réussite du résultat thématique
Vous pouvez définir des critères de réussite du badge
<strong>sur une liste de sujets ET/OU sur l’ensemble du profil cible</strong>.
<br />
<strong>Toutes les conditions devront être remplies</strong>
pour obtenir le résultat thématique.
pour obtenir le badge.
</PixNotificationAlert>
<div class="badge-form-criteria-choice">
<p>Définir un critère d'obtention&nbsp;:</p>
Expand Down
14 changes: 7 additions & 7 deletions admin/app/components/target-profiles/badges.gjs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export default class Badges extends Component {
try {
badge = this.store.peekRecord('badge', this.badgeIdToDelete);
await badge.destroyRecord();
this.pixToast.sendSuccessNotification({ message: 'Le résultat thématique a été supprimé avec succès.' });
this.pixToast.sendSuccessNotification({ message: 'Le badge a été supprimé avec succès.' });
} catch (error) {
this.pixToast.sendErrorNotification({ message: error.errors[0].detail });
badge.rollbackAttributes();
Expand All @@ -63,7 +63,7 @@ export default class Badges extends Component {
<LinkTo
@route="authenticated.target-profiles.target-profile.badges.badge"
@model={{badge.id}}
aria-label="Voir le détail du résultat thématique ID {{badge.id}}"
aria-label="Voir le détail du badge ID {{badge.id}}"
>
{{badge.id}}
</LinkTo>
Expand Down Expand Up @@ -137,7 +137,7 @@ export default class Badges extends Component {
@route="authenticated.target-profiles.target-profile.badges.badge"
@size="small"
@model={{badge.id}}
aria-label="Voir le détail du résultat thématique {{badge.title}}"
aria-label="Voir le détail du badge {{badge.title}}"
>
Voir le détail
</PixButtonLink>
Expand All @@ -147,7 +147,7 @@ export default class Badges extends Component {
@triggerAction={{fn this.toggleDisplayConfirm badge.id}}
class="badges-table-actions-delete"
@iconBefore="delete"
aria-label="Supprimer le résultat thématique {{badge.title}}"
aria-label="Supprimer le badge {{badge.title}}"
>
Supprimer
</PixButton>
Expand All @@ -157,12 +157,12 @@ export default class Badges extends Component {
</:columns>
</PixTable>
{{else}}
<div class="table__empty">Aucun résultat thématique associé</div>
<div class="table__empty">Aucun badge associé</div>
{{/if}}

<ConfirmPopup
@message="Êtes-vous sûr de vouloir supprimer ce résultat thématique ? (Uniquement si le RT n'a pas encore été assigné)"
@title="Suppression d'un résultat thématique"
@message="Êtes-vous sûr de vouloir supprimer ce badge ? (Uniquement si le badge n'a pas encore été assigné)"
@title="Suppression d'un badge"
@submitTitle="Confirmer"
@confirm={{fn this.deleteBadge this.badgeIdToDelete}}
@cancel={{this.toggleDisplayConfirm}}
Expand Down
4 changes: 2 additions & 2 deletions admin/app/components/target-profiles/insights.gjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import Stages from './stages';
<template>
<section class="page-section insights">
<section class="insights__section">
<h2 class="insights-section__title">Résultats thématiques</h2>
<h2 class="insights-section__title">Badges</h2>
<Badges @badges={{@targetProfile.badges}} />
<div class="insights-section__button">
<PixButtonLink
Expand All @@ -16,7 +16,7 @@ import Stages from './stages';
@model={{@targetProfile.id}}
@iconBefore="add"
>
Nouveau résultat thématique
Nouveau badge
</PixButtonLink>
</div>
</section>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ module(
await targetProfileSelectable.click();

await waitForTableResult();
const table = screen.getByRole('table', { name: 'Liste des résultats thématiques' });
const table = screen.getByRole('table', { name: 'Liste des badges' });

await fillIn(within(table).getByRole('spinbutton', { name: '200 Badge Arène Feu Niveau' }), '1');
await fillIn(
Expand Down Expand Up @@ -313,7 +313,7 @@ module(
await targetProfileSelectable.click();

await waitForTableResult();
const table = screen.getByRole('table', { name: 'Liste des résultats thématiques' });
const table = screen.getByRole('table', { name: 'Liste des badges' });

const ariaLabel = '200 Badge Arène Feu';
await fillIn(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ module('Acceptance | Target Profile Insights', function (hooks) {
// when
const screen = await visit('/target-profiles/1');
await clickByName('Clés de lecture');
await clickByName('Voir le détail du résultat thématique tagada');
await clickByName('Voir le détail du badge tagada');

// then
assert.strictEqual(currentURL(), '/target-profiles/1/badges/100');
Expand Down Expand Up @@ -493,7 +493,7 @@ module('Acceptance | Target Profile Insights', function (hooks) {
// when
const screen = await visit('/target-profiles/1');
await clickByName('Clés de lecture');
await clickByName('Voir le détail du résultat thématique ancien titre');
await clickByName('Voir le détail du badge ancien titre');
await clickByName('Modifier les informations');
await fillIn(screen.getByLabelText('Titre *', { exact: false }), 'nouveau titre');
await fillIn(screen.getByLabelText('Clé *', { exact: false }), 'NEW_KEY');
Expand Down Expand Up @@ -525,7 +525,7 @@ module('Acceptance | Target Profile Insights', function (hooks) {
// when
const screen = await visit('/target-profiles/1');
await clickByName('Clés de lecture');
await clickByName('Voir le détail du résultat thématique tagada');
await clickByName('Voir le détail du badge tagada');
await clickByName('Modifier les informations');
await fillIn(screen.getByLabelText('Titre *', { exact: false }), 'tsouintsouin');
await clickByName('Annuler');
Expand Down Expand Up @@ -586,11 +586,11 @@ module('Acceptance | Target Profile Insights', function (hooks) {
// when
const screen = await visit('/target-profiles/1');
await clickByName('Clés de lecture');
await clickByName('Nouveau résultat thématique');
await fillByLabel(/Nom du résultat thématique :/, 'Mon nouveau RT');
await clickByName('Nouveau badge');
await fillByLabel(/Nom du badge :/, 'Mon nouveau badge');
await fillIn(screen.getByLabelText("Nom de l'image (svg) *", { exact: false }), 'troll.png');
await fillByLabel(/Texte alternatif pour l'image :/, 'Je mets du png je fais ce que je veux');
await fillByLabel('Message :', 'message de mon RT');
await fillByLabel('Message :', 'message de mon badge');
await fillByLabel(/Clé/, 'MY_BADGE');
await clickByName('Certifiable');
await clickByName('Lacunes');
Expand Down Expand Up @@ -636,16 +636,16 @@ module('Acceptance | Target Profile Insights', function (hooks) {
await click(screen.getByRole('option', { name: '3' }));
await waitForElementToBeRemoved(() => screen.queryByRole('listbox'));

await clickByName('Enregistrer le RT');
await clickByName('Voir le détail du résultat thématique Mon nouveau RT');
await clickByName('Enregistrer le badge');
await clickByName('Voir le détail du badge Mon nouveau badge');

// then
assert.strictEqual(currentURL(), '/target-profiles/1/badges/1');
assert.dom(screen.getByText('1')).exists();
assert.dom(screen.getByText('Mon nouveau RT')).exists();
assert.dom(screen.getByText('Mon nouveau badge')).exists();
assert.dom(screen.getByText('troll.png')).exists();
assert.dom(screen.getByText('MY_BADGE')).exists();
assert.dom(screen.getByText('message de mon RT')).exists();
assert.dom(screen.getByText('message de mon badge')).exists();
assert.dom(screen.getByText('Je mets du png je fais ce que je veux')).exists();
assert.dom(screen.getByText('Certifiable')).exists();
assert.dom(screen.getByText('Lacunes')).exists();
Expand All @@ -672,7 +672,7 @@ module('Acceptance | Target Profile Insights', function (hooks) {
// when
const screen = await visit('/target-profiles/1');
await clickByName('Clés de lecture');
await clickByName('Nouveau résultat thématique');
await clickByName('Nouveau badge');
await clickByName('Annuler');

// then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ module('Integration | Component | Badges::CampaignCriterion', function (hooks) {
criterion.save.throws({
errors: [
{
detail: "Il est interdit de modifier un critère d'un résultat thématique déjà acquis par un utilisateur.",
detail: "Il est interdit de modifier un critère d'un badge déjà acquis par un utilisateur.",
},
],
});
Expand All @@ -164,7 +164,7 @@ module('Integration | Component | Badges::CampaignCriterion', function (hooks) {

// then
sinon.assert.calledWith(notificationErrorStub, {
message: "Il est interdit de modifier un critère d'un résultat thématique déjà acquis par un utilisateur.",
message: "Il est interdit de modifier un critère d'un badge déjà acquis par un utilisateur.",
});
assert.ok(true);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ module('Integration | Component | complementary-certifications/attach-badges/bad
.dom(
screen.getByRole('alert', {
value:
'Seul un profil cible comportant au moins un résultat thématique certifiant peut être rattaché à une certification complémentaire. Le profil cible que vous avez sélectionné ne comporte pas de résultat thématique certifiant. Veuillez le modifier puis rafraîchir cette page ou bien sélectionner un autre profil cible.',
'Seul un profil cible comportant au moins un badge certifiant peut être rattaché à une certification complémentaire. Le profil cible que vous avez sélectionné ne comporte pas de badge certifiant. Veuillez le modifier puis rafraîchir cette page ou bien sélectionner un autre profil cible.',
}),
)
.exists();
Expand Down Expand Up @@ -92,7 +92,7 @@ module('Integration | Component | complementary-certifications/attach-badges/bad

// then
assert.dom(await screen.queryByRole('alert')).doesNotExist();
const table = screen.getByRole('table', { name: 'Liste des résultats thématiques' });
const table = screen.getByRole('table', { name: 'Liste des badges' });
assert.dom(within(table).getByRole('cell', { name: '1000' })).exists();
assert.dom(within(table).getByRole('cell', { name: 'canards' })).exists();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ module('Integration | Component | complementary-certifications/attach-badges/lis
const screen = await render(<template><List /></template>);

// then
assert.dom(screen.getByRole('table', { name: 'Liste des résultats thématiques' })).exists();
assert.dom(screen.getByRole('table', { name: 'Liste des badges' })).exists();
const rows = screen.getAllByRole('row');
assert.strictEqual(rows.length, 1);
});
Expand Down
Loading