diff --git a/fixtures/actualites.tsx b/fixtures/actualites.tsx index 60381d9f2..b69c63faa 100644 --- a/fixtures/actualites.tsx +++ b/fixtures/actualites.tsx @@ -46,7 +46,7 @@ export function uneActualiteRaw(): ActualitesRaw { titre: 'Invitation à la journée présentiel du 31 octobre 2024', etiquettes: [], contenu: - '
Rdv demain aux nouveaux locaux de la Fabrique
Vous êtes perdu ?', + 'Rdv demain aux nouveaux locaux de la Fabrique
Vous êtes perdu ?', }, ], dateDerniereModification: '2024-10-30', diff --git a/package.json b/package.json index 9579d6fd6..47326c17d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pass-emploi-web", - "version": "5.1.1", + "version": "5.1.2", "private": true, "engines": { "node": "22.11.0" diff --git a/services/actualites.service.ts b/services/actualites.service.ts index d707eb711..c0e5850cd 100644 --- a/services/actualites.service.ts +++ b/services/actualites.service.ts @@ -22,7 +22,7 @@ export async function getActualites( ] = await Promise.all([fetchJson(urlTags), fetchJson(urlActualites)]) if (!articlesJson.length) return - const articlesTries = articlesJson.sort(comparerArticles) + const articlesTries = articlesJson.toSorted(comparerArticles) return { articles: articlesTries.map((article: ArticleJson) => ({ id: article.id, @@ -55,11 +55,7 @@ function extraireEtiquettes( return article.tags .map((idTag) => tagsJson.find(({ id }) => id === idTag)) .filter((tag) => tag !== undefined) - .map((tag) => ({ - id: tag!.id, - nom: tag!.name, - couleur: tag!.description, - })) + .map((tag) => ({ id: tag.id, nom: tag.name, couleur: tag.description })) } function getUrlActualites(structure: StructureConseiller) { diff --git a/tests/utils/actualitesContext.test.tsx b/tests/utils/actualitesContext.test.tsx index c6b1ceeed..11c2c4bc7 100644 --- a/tests/utils/actualitesContext.test.tsx +++ b/tests/utils/actualitesContext.test.tsx @@ -23,9 +23,10 @@ describe('ActualitesProvdider', () => { ) }) - it('recupère les actualités et transforme les liens', () => { + it('recupère les actualités, transforme les liens et supprime les paragraphes vides', () => { // Then expect(getActualites).toHaveBeenCalledWith(conseiller.structure) + expect(screen.getAllByRole('paragraph')).toHaveLength(1) expect(screen.getByRole('paragraph')).toHaveTextContent( 'Rdv demain aux nouveaux locaux de la Fabrique' ) diff --git a/utils/actualitesContext.tsx b/utils/actualitesContext.tsx index 107362994..04a595826 100644 --- a/utils/actualitesContext.tsx +++ b/utils/actualitesContext.tsx @@ -38,7 +38,7 @@ export function ActualitesProvider({ articles: actualitesRaw.articles.map((article) => ({ ...article, titre: parse(article.titre), - contenu: parse(transformerLiensExternes(article.contenu)), + contenu: parse(nettoyerEtFormater(article.contenu)), })), } ) @@ -56,6 +56,16 @@ export function useActualites(): ActualitesParsees | undefined { return useContext(ActualitesContext) } +function nettoyerEtFormater(str: string): string { + let resultat = supprimerParagraphesVides(str) + resultat = transformerLiensExternes(resultat) + return resultat +} + +function supprimerParagraphesVides(str: string): string { + return str.replace(/(\s*<\/p>)|(
)/g, '') +} + function transformerLiensExternes(str: string): string { const aTagRegex = /]*href=['"]([^'"]+)['"][^>]*>([\s\S]*?)<\/a>/g