diff --git a/src/client/components/features/Alternance/Rechercher/RechercherAlternance.test.tsx b/src/client/components/features/Alternance/Rechercher/RechercherAlternance.test.tsx index 3b546bde37..dddc722f8d 100644 --- a/src/client/components/features/Alternance/Rechercher/RechercherAlternance.test.tsx +++ b/src/client/components/features/Alternance/Rechercher/RechercherAlternance.test.tsx @@ -154,7 +154,9 @@ describe('RechercherAlternance', () => { expect(messageResultats).toBeInTheDocument(); - const resultListOffre = await within(await screen.findByRole('list', { name: 'Offres d’alternances' })).findAllByTestId('RésultatRechercherSolution'); + const resultatsUl = await screen.findAllByRole('list', { name: 'Offres d’alternances' }); + // eslint-disable-next-line testing-library/no-node-access + const resultListOffre = resultatsUl[0].children; expect(resultListOffre).toHaveLength(alternanceFixture.length); expect(await screen.findByText(alternanceFixture[0].titre)).toBeInTheDocument(); expect(await screen.findByText(alternanceFixture[1].titre)).toBeInTheDocument(); @@ -177,7 +179,9 @@ describe('RechercherAlternance', () => { await user.click(onglet); expect(onglet).toHaveAttribute('aria-selected', 'true'); - const resultListEntreprise = await within(await screen.findByRole('list', { name: 'Entreprises' })).findAllByTestId('RésultatRechercherSolution'); + const resultatsUl = await screen.findAllByRole('list', { name: 'Entreprises' }); + // eslint-disable-next-line testing-library/no-node-access + const resultListEntreprise = resultatsUl[0].children; expect(resultListEntreprise).toHaveLength(entrepriseFixture.length); expect(await screen.findByText(entrepriseFixture[0].nom)).toBeVisible(); expect(await screen.findByText(entrepriseFixture[1].nom)).toBeVisible(); diff --git a/src/client/components/features/EmploisEurope/Rechercher/RechercherEmploisEurope.test.tsx b/src/client/components/features/EmploisEurope/Rechercher/RechercherEmploisEurope.test.tsx index 59b5caabfd..ea6a0b65f8 100644 --- a/src/client/components/features/EmploisEurope/Rechercher/RechercherEmploisEurope.test.tsx +++ b/src/client/components/features/EmploisEurope/Rechercher/RechercherEmploisEurope.test.tsx @@ -77,7 +77,8 @@ describe('RechercherEmploisEurope', () => { , ); const resultatsUl = await screen.findAllByRole('list', { name: 'Offres d’emplois en Europe' }); - const resultats = await within(resultatsUl[0]).findAllByTestId('RésultatRechercherSolution'); + // eslint-disable-next-line testing-library/no-node-access + const resultats = resultatsUl[0].children; // THEN expect(resultats).toHaveLength(resultatsService.offreList.length); @@ -133,8 +134,8 @@ describe('RechercherEmploisEurope', () => { ); const resultatsUl = await screen.findAllByRole('list', { name: 'Offres d’emplois en Europe' }); - - const resultats = await within(resultatsUl[0]).findAllByTestId('RésultatRechercherSolution'); + // eslint-disable-next-line testing-library/no-node-access + const resultats = resultatsUl[0].children; // THEN expect(resultats).toHaveLength(resultatsService.offreList.length); @@ -181,8 +182,8 @@ describe('RechercherEmploisEurope', () => { ); const resultatsUl = await screen.findAllByRole('list', { name: 'Offres d’emplois en Europe' }); - - const resultats = await within(resultatsUl[0]).findAllByTestId('RésultatRechercherSolution'); + // eslint-disable-next-line testing-library/no-node-access + const resultats = resultatsUl[0].children; // THEN expect(resultats).toHaveLength(resultatsService.offreList.length); @@ -229,8 +230,8 @@ describe('RechercherEmploisEurope', () => { ); const resultatsUl = await screen.findAllByRole('list', { name: 'Offres d’emplois en Europe' }); - - const resultats = await within(resultatsUl[0]).findAllByTestId('RésultatRechercherSolution'); + // eslint-disable-next-line testing-library/no-node-access + const resultats = resultatsUl[0].children; // THEN expect(resultats).toHaveLength(resultatsService.offreList.length); @@ -367,7 +368,8 @@ describe('RechercherEmploisEurope', () => { ); const resultatsUl = await screen.findAllByRole('list', { name: 'Offres d’emplois en Europe' }); - const resultats = await within(resultatsUl[0]).findAllByTestId('RésultatRechercherSolution'); + // eslint-disable-next-line testing-library/no-node-access + const resultats = resultatsUl[0].children; // THEN expect(resultats).toHaveLength(resultatsService.offreList.length); @@ -508,7 +510,8 @@ describe('RechercherEmploisEurope', () => { , ); const resultatsUl = await screen.findAllByRole('list', { name: 'Offres d’emplois en Europe' }); - const resultats = await within(resultatsUl[0]).findAllByTestId('RésultatRechercherSolution'); + // eslint-disable-next-line testing-library/no-node-access + const resultats = resultatsUl[0].children; // THEN expect(resultats).toHaveLength(resultatsService.offreList.length); diff --git a/src/client/components/features/Engagement/Rechercher/RechercherMission.test.tsx b/src/client/components/features/Engagement/Rechercher/RechercherMission.test.tsx index b12d0221b7..49a241a43b 100644 --- a/src/client/components/features/Engagement/Rechercher/RechercherMission.test.tsx +++ b/src/client/components/features/Engagement/Rechercher/RechercherMission.test.tsx @@ -71,7 +71,9 @@ describe('RechercherMission', () => { ); expect(await screen.findByText('2 missions de service civique pour Culture et Loisirs')).toBeInTheDocument(); - expect(await screen.findAllByTestId('RésultatRechercherSolution')).toHaveLength(2); + const resultatsUl = await screen.findAllByRole('list', { name: /Offre pour/ }); + // eslint-disable-next-line testing-library/no-node-access + expect(resultatsUl[0].children).toHaveLength(2); expect(missionEngagementServiceMock.rechercherMission).toHaveBeenCalledWith(expect.objectContaining({ domain: 'culture-loisirs', page: '1', @@ -123,7 +125,8 @@ describe('RechercherMission', () => { expect(screen.getByRole('option', { name: '30 km' })).toBeInTheDocument(); expect(await screen.findByText('2 missions de service civique')).toBeInTheDocument(); - expect(await screen.findAllByTestId('RésultatRechercherSolution')).toHaveLength(2); + // eslint-disable-next-line testing-library/no-node-access + expect((await screen.findAllByRole('list', { name: /Offre pour/ }))[0].children).toHaveLength(2); expect(missionEngagementServiceMock.rechercherMission).toHaveBeenCalledWith({ distanceCommune: '30', page: '1', @@ -149,7 +152,8 @@ describe('RechercherMission', () => { ); expect(await screen.findByText('2 missions de bénévolat pour Environnement')).toBeInTheDocument(); - expect(await screen.findAllByTestId('RésultatRechercherSolution')).toHaveLength(2); + // eslint-disable-next-line testing-library/no-node-access + expect((await screen.findAllByRole('list', { name: /Offre pour/ }))[0].children).toHaveLength(2); expect(missionEngagementServiceMock.rechercherMission).toHaveBeenCalledWith({ domain: 'environnement', page: '1', @@ -202,7 +206,8 @@ describe('RechercherMission', () => { expect(screen.getByRole('option', { name: '100 km' })).toBeInTheDocument(); expect(await screen.findByText('2 missions de bénévolat')).toBeInTheDocument(); - expect(await screen.findAllByTestId('RésultatRechercherSolution')).toHaveLength(2); + // eslint-disable-next-line testing-library/no-node-access + expect((await screen.findAllByRole('list', { name: /Offre pour/ }))[0].children).toHaveLength(2); expect(missionEngagementServiceMock.rechercherMission).toHaveBeenCalledWith({ distanceCommune: '100', page: '1', diff --git a/src/client/components/features/JobEte/Rechercher/RechercherJobEte.test.tsx b/src/client/components/features/JobEte/Rechercher/RechercherJobEte.test.tsx index c2fbb4da92..8abdff8a89 100644 --- a/src/client/components/features/JobEte/Rechercher/RechercherJobEte.test.tsx +++ b/src/client/components/features/JobEte/Rechercher/RechercherJobEte.test.tsx @@ -173,11 +173,12 @@ describe('RechercherJobEte', () => { ); // WHEN - const résultatRechercheOffreEmploiList = await screen.findAllByTestId('RésultatRechercherSolution'); + // eslint-disable-next-line testing-library/no-node-access + const resultatRechercheOffreEmploiList = (await screen.findAllByRole('list', { name: 'Offres de jobs d’été' }))[0].children; const rechercheOffreEmploiNombreRésultats = await screen.findByText('3 offres de jobs d’été pour boulanger'); // THEN - expect(résultatRechercheOffreEmploiList).toHaveLength(3); + expect(resultatRechercheOffreEmploiList).toHaveLength(3); expect(rechercheOffreEmploiNombreRésultats).toBeInTheDocument(); expect(offreServiceMock.rechercherJobEte).toHaveBeenCalledWith({ motCle: 'boulanger', page: '1' }); }); diff --git "a/src/client/components/features/Job\303\211tudiant/Rechercher/RechercherJob\303\211tudiant.test.tsx" "b/src/client/components/features/Job\303\211tudiant/Rechercher/RechercherJob\303\211tudiant.test.tsx" index 92ee81a8fd..42c9a8d86d 100644 --- "a/src/client/components/features/Job\303\211tudiant/Rechercher/RechercherJob\303\211tudiant.test.tsx" +++ "b/src/client/components/features/Job\303\211tudiant/Rechercher/RechercherJob\303\211tudiant.test.tsx" @@ -173,11 +173,13 @@ describe('RechercherJobÉtudiant', () => { ); // WHEN - const résultatRechercheOffreEmploiList = await screen.findAllByTestId('RésultatRechercherSolution'); + const resultatsUl = await screen.findAllByRole('list', { name: 'Offres de jobs étudiants' }); + // eslint-disable-next-line testing-library/no-node-access + const resultatRechercheOffreEmploiList = resultatsUl[0].children; const rechercheOffreEmploiNombreRésultats = await screen.findByText('3 offres de jobs étudiants pour boulanger'); // THEN - expect(résultatRechercheOffreEmploiList).toHaveLength(3); + expect(resultatRechercheOffreEmploiList).toHaveLength(3); expect(rechercheOffreEmploiNombreRésultats).toBeInTheDocument(); expect(offreServiceMock.rechercherJobÉtudiant).toHaveBeenCalledWith({ motCle: 'boulanger', page: '1' }); }); diff --git a/src/client/components/features/OffreEmploi/Rechercher/RechercherOffreEmploi.test.tsx b/src/client/components/features/OffreEmploi/Rechercher/RechercherOffreEmploi.test.tsx index b61352c1db..263d240d76 100644 --- a/src/client/components/features/OffreEmploi/Rechercher/RechercherOffreEmploi.test.tsx +++ b/src/client/components/features/OffreEmploi/Rechercher/RechercherOffreEmploi.test.tsx @@ -158,11 +158,13 @@ describe('RechercherOffreEmploi', () => { ); // WHEN - const résultatRechercheOffreEmploiList = await screen.findAllByTestId('RésultatRechercherSolution'); + const resultatsUl = await screen.findAllByRole('list', { name: 'Offres d‘emplois' }); + // eslint-disable-next-line testing-library/no-node-access + const resultatRechercheOffreEmploiList = resultatsUl[0].children; const rechercheOffreEmploiNombreRésultats = await screen.findByText('3 offres d‘emplois pour boulanger'); // THEN - expect(résultatRechercheOffreEmploiList).toHaveLength(3); + expect(resultatRechercheOffreEmploiList).toHaveLength(3); expect(rechercheOffreEmploiNombreRésultats).toBeInTheDocument(); }); }); diff --git a/src/client/components/features/Stages3eme/Rechercher/RechercherStages3eme.test.tsx b/src/client/components/features/Stages3eme/Rechercher/RechercherStages3eme.test.tsx index 8e1ca65882..b7f713d8a3 100644 --- a/src/client/components/features/Stages3eme/Rechercher/RechercherStages3eme.test.tsx +++ b/src/client/components/features/Stages3eme/Rechercher/RechercherStages3eme.test.tsx @@ -2,7 +2,7 @@ * @jest-environment jsdom */ -import { render, screen, within } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; import { mockUseRouter } from '~/client/components/useRouter.mock'; import { mockSmallScreen } from '~/client/components/window.mock'; @@ -34,8 +34,8 @@ describe('La recherche des stages de 3ème', () => { expect(titre).toBeVisible(); }); }); - describe('quand le composant est affiché pour une recherche avec résultats', () => { - it('affiche les résultats de la recherche', async () => { + describe('quand le composant est affiché pour une recherche avec 1 résultat', () => { + it('affiche le résultat de la recherche', async () => { // GIVEN mockSmallScreen(); mockUseRouter({ query: { location: 'here' } }); @@ -62,7 +62,8 @@ describe('La recherche des stages de 3ème', () => { ); const resultatsUl = await screen.findAllByRole('list', { name: 'Stages de 3ème' }); - const resultats = await within(resultatsUl[0]).findAllByTestId('RésultatRechercherSolution'); + // eslint-disable-next-line testing-library/no-node-access + const resultats = resultatsUl[0].children; // THEN expect(resultats).toHaveLength(resultatRecherche.nombreDeResultats); @@ -72,4 +73,57 @@ describe('La recherche des stages de 3ème', () => { expect(resultats[0]).toHaveTextContent('75000 Paris'); }); }); + describe('quand le composant est affiché pour une recherche avec plusieurs résultats', () => { + it('affiche le résultat de la recherche', async () => { + // GIVEN + mockSmallScreen(); + mockUseRouter({ query: { location: 'here' } }); + const stage3emeServiceMock = aStage3emeService(); + const resultatRecherche = aResultatRechercheStage3eme({ + nombreDeResultats: 2, + resultats: [ + { + adresse: { + codeDepartement: '75', + codePostal: '75000', + ligne: '1 rue de la Paix', + ville: 'Paris', + }, + domaine: 'Informatique', + nomEntreprise: 'Entreprise 1', + }, + { + adresse: { + codeDepartement: '75', + codePostal: '75000', + ligne: '2 rue de la Paix', + ville: 'Paris', + }, + domaine: 'Informatique', + nomEntreprise: 'Entreprise 2', + }, + ], + }); + jest.spyOn(stage3emeServiceMock, 'rechercherStage3eme').mockResolvedValue(createSuccess(resultatRecherche)); + + // WHEN + render( + + ); + const resultatsUl = await screen.findAllByRole('list', { name: 'Stages de 3ème' }); + // eslint-disable-next-line testing-library/no-node-access + const resultats = resultatsUl[0].children; + + // THEN + expect(resultats).toHaveLength(resultatRecherche.nombreDeResultats); + expect(resultats[0]).toHaveTextContent('Entreprise 1'); + expect(resultats[0]).toHaveTextContent('Informatique'); + expect(resultats[0]).toHaveTextContent('1 rue de la Paix'); + expect(resultats[0]).toHaveTextContent('75000 Paris'); + expect(resultats[1]).toHaveTextContent('Entreprise 2'); + expect(resultats[1]).toHaveTextContent('Informatique'); + expect(resultats[1]).toHaveTextContent('2 rue de la Paix'); + expect(resultats[1]).toHaveTextContent('75000 Paris'); + }); + }); }); diff --git a/src/client/components/features/Stages3eme/Rechercher/RechercherStages3eme.tsx b/src/client/components/features/Stages3eme/Rechercher/RechercherStages3eme.tsx index 8aba6e9fd1..55c291106f 100644 --- a/src/client/components/features/Stages3eme/Rechercher/RechercherStages3eme.tsx +++ b/src/client/components/features/Stages3eme/Rechercher/RechercherStages3eme.tsx @@ -12,6 +12,7 @@ import { LightHero, LightHeroPrimaryText, LightHeroSecondaryText } from '~/clien import { useDependency } from '~/client/context/dependenciesContainer.context'; import { Stage3emeService } from '~/client/services/stage3eme/stage3eme.service'; import { formatRechercherSolutionDocumentTitle } from '~/client/utils/formatRechercherSolutionDocumentTitle.util'; +import { isSuccess } from '~/server/errors/either'; import { Erreur } from '~/server/errors/erreur.types'; import { ResultatRechercheStage3eme } from '~/server/stage-3eme/domain/stage3eme'; @@ -31,7 +32,7 @@ export default function RechercherStages3eme() { stage3emeService.rechercherStage3eme() .then((response) => { - if (response.instance === 'success') { + if (isSuccess(response)) { setTitle(formatRechercherSolutionDocumentTitle(`${PREFIX_TITRE_PAGE}${response.result.nombreDeResultats === 0 ? ' - Aucun résultat' : ''}`)); setStage3emeList(response.result); } else {