diff --git a/src/components/Menu.js b/src/components/Menu.js index f4a0c88..f316ba4 100644 --- a/src/components/Menu.js +++ b/src/components/Menu.js @@ -97,25 +97,37 @@ function Menu() { aria-expanded={activeMenu === 'cnfs'} aria-controls="menu-cnfs" onClick={onClickMenu} - {...(location.pathname.startsWith('/aide-candidat') || location.pathname.startsWith('/aide-structure') ? { 'aria-current': true } : {})}> - Recrutement + { + ...(location.pathname.startsWith('/nouveau-formulaire-conseiller') || + location.pathname.startsWith('/nouveau-formulaire-structure') || + location.pathname.startsWith('/nouveau-formulaire-coordinateur') ? { 'aria-current': true } : {}) + }> + Candidature diff --git a/src/views/candidature-structure/CandidatureStructure.test.jsx b/src/views/candidature-structure/CandidatureStructure.test.jsx index bca7d3b..da9f944 100644 --- a/src/views/candidature-structure/CandidatureStructure.test.jsx +++ b/src/views/candidature-structure/CandidatureStructure.test.jsx @@ -49,6 +49,7 @@ describe('candidature structure', () => { expect(etapeInformationsDeStructure).toHaveAttribute('id', 'informations-de-structure'); const siretOuRidet = within(etapeInformationsDeStructure).getByLabelText('SIRET / RIDET * Format attendu : SIRET (12345678901234) ou RIDET (123456789)'); + expect(siretOuRidet).toHaveAttribute('pattern', '^(?:[0-9]{6,10}|[0-9]{14})$'); expect(siretOuRidet).toHaveAttribute('id', 'siret'); expect(siretOuRidet).toBeRequired(); @@ -209,11 +210,10 @@ describe('candidature structure', () => { 'montée en compétences du public (ateliers numériques, initiations au numérique), gratuites,'); within(listDetail[1]).getByText('Qu’il consacre une partie de son temps aux rencontres locales et ' + 'nationales organisées pour la communauté et la formation continue, etc,'); - within(listDetail[2]).getByText('Qu’il revête une tenue vestimentaire dédiée fournie par l’Etat,'); - within(listDetail[3]).getByText('Tout mettre en oeuvre pour sélectionner le candidat dans un délai maximum d’un mois sur la plateforme,'); - within(listDetail[4]).getByText('Signer dans les 15 jours suivants un contrat avec ce candidat,'); - within(listDetail[5]).getByText('Laisser partir le conseiller numérique en formation initiale ou continue,'); - within(listDetail[6]).getByText('Mettre à sa disposition les moyens et ' + + within(listDetail[2]).getByText('Tout mettre en oeuvre pour sélectionner le candidat dans un délai maximum d’un mois sur la plateforme,'); + within(listDetail[3]).getByText('Signer dans les 15 jours suivants un contrat avec ce candidat,'); + within(listDetail[4]).getByText('Laisser partir le conseiller numérique en formation initiale ou continue,'); + within(listDetail[5]).getByText('Mettre à sa disposition les moyens et ' + 'équipements pour réaliser sa mission (ordinateur, téléphone portable, voiture si nécessaire),'); const confirmationEngagement = screen.getByLabelText('Je confirme avoir lu et pris connaissance des conditions d’engagement.*'); @@ -459,7 +459,7 @@ describe('candidature structure', () => { vi.useRealTimers(); }); - it('quand je valide le formulaire alors j’envoie toute les données nescessaires', async () => { + it('quand je valide le formulaire alors j’envoie toute les données nescessaires en renseignant un siret', async () => { // GIVEN const formData = [ [ @@ -557,6 +557,7 @@ describe('candidature structure', () => { 'telephone': '+33123456789' }, 'nom': 'AGENCE NATIONALE DE LA COHESION DES TERRITOIRES', + 'ridet': null, 'nomCommune': 'Paris 7e Arrondissement', 'codePostal': '75007', 'codeCommune': '75107', @@ -567,7 +568,115 @@ describe('candidature structure', () => { vi.useRealTimers(); }); + it('quand je valide le formulaire alors j’envoie toute les données nescessaires en renseignant un ridet', async () => { + // GIVEN + const formData = [ + [ + 'siret', + '1234567' + ], + [ + 'denomination', + 'AGENCE NATIONALE DE LA COHESION DES TERRITOIRES' + ], + [ + 'adresse', + '20 AVENUE DE SEGUR, 75007 PARIS' + ], + [ + 'type', + 'COMMUNE' + ], + [ + 'prenom', + 'Jean' + ], + [ + 'nom', + 'Dupont' + ], + [ + 'fonction', + 'Test' + ], + [ + 'email', + 'jean.dupont@example.com' + ], + [ + 'telephone', + '+33123456789' + ], + [ + 'nombreConseillersSouhaites', + '1' + ], + [ + 'aIdentifieCandidat', + 'oui' + ], + [ + 'dateDebutMission', + '2024-12-12' + ], + [ + 'motivation', + 'je suis motivé !' + ], + [ + 'confirmationEngagement', + 'on' + ], + [ + 'g-recaptcha-response', + '1' + ], + [ + 'cf-turnstile-response', + '1' + ] + ]; + + const { buildStructureData } = renderHook(() => useApiAdmin.useApiAdmin()).result.current; + const { getGeoLocationFromAddress } = renderHook(() => useEntrepriseFinder()).result.current; + let geoLocation; + + // WHEN + await act(async () => { + geoLocation = await getGeoLocationFromAddress('20 AVENUE DE SEGUR, 75007 PARIS'); + }); + const result = await buildStructureData(formData, geoLocation, '75107'); + + // THEN + expect(result).toBe(JSON.stringify({ + 'siret': null, + 'type': 'COMMUNE', + 'nombreConseillersSouhaites': '1', + 'aIdentifieCandidat': true, + 'dateDebutMission': '2024-12-12', + 'motivation': 'je suis motivé !', + 'confirmationEngagement': true, + 'cf-turnstile-response': '1', + 'location': { 'type': 'Point', 'coordinates': [2.3115, 48.8548] }, + 'contact': { + 'prenom': 'Jean', + 'nom': 'Dupont', + 'fonction': 'Test', + 'email': 'jean.dupont@example.com', + 'telephone': '+33123456789' + }, + 'nom': 'AGENCE NATIONALE DE LA COHESION DES TERRITOIRES', + 'ridet': '1234567', + 'nomCommune': 'Paris 7e Arrondissement', + 'codePostal': '75007', + 'codeCommune': '75107', + 'codeDepartement': '75', + 'codeRegion': '11', + 'codeCom': null, + })); + vi.useRealTimers(); + }); it('quand je candidate et qu’une erreur serveur survient, alors le message d’erreur s’affiche et le captcha est rénitialisé', async () => { // GIVEN vi.useFakeTimers(); diff --git a/src/views/candidature-structure/CompanyFinder.jsx b/src/views/candidature-structure/CompanyFinder.jsx index b72cb85..d140692 100644 --- a/src/views/candidature-structure/CompanyFinder.jsx +++ b/src/views/candidature-structure/CompanyFinder.jsx @@ -12,7 +12,7 @@ export default function CompanyFinder({ onSearch, errors }) { handleSearch(event.target.value)} - pattern="^(?:[0-9]{9}|[0-9]{14})$" + pattern="^(?:[0-9]{6,10}|[0-9]{14})$" maxlength="14" error={errors.siret} > diff --git a/src/views/candidature-structure/Engagement.jsx b/src/views/candidature-structure/Engagement.jsx index 94167b9..3132b58 100644 --- a/src/views/candidature-structure/Engagement.jsx +++ b/src/views/candidature-structure/Engagement.jsx @@ -9,7 +9,6 @@ export default function Engagement() {