diff --git a/src/components/commun/Datepicker.jsx b/src/components/commun/Datepicker.jsx
index 6bf4e64e..38589500 100644
--- a/src/components/commun/Datepicker.jsx
+++ b/src/components/commun/Datepicker.jsx
@@ -1,13 +1,13 @@
import React from 'react';
import PropTypes from 'prop-types';
-export default function Datepicker({ children, id, isRequired = true, onChange }) {
+export default function Datepicker({ children, id, isRequired = true, onChange, min }) {
return (
-
+
);
}
@@ -16,5 +16,6 @@ Datepicker.propTypes = {
children: PropTypes.node,
id: PropTypes.string,
isRequired: PropTypes.bool,
- onChange: PropTypes.func
+ onChange: PropTypes.func,
+ min: PropTypes.string
};
diff --git a/src/views/candidature-conseiller/CandidatureConseiller.jsx b/src/views/candidature-conseiller/CandidatureConseiller.jsx
index ffc9234e..70a9a723 100644
--- a/src/views/candidature-conseiller/CandidatureConseiller.jsx
+++ b/src/views/candidature-conseiller/CandidatureConseiller.jsx
@@ -5,7 +5,6 @@ import SituationEtExperience from './SituationEtExperience';
import Disponibilite from './Disponibilite';
import Motivation from './Motivation';
import EnResume from './EnResume';
-import { situations } from './situations';
import { useScrollToSection } from '../../hooks/useScrollToSection';
import '@gouvfr/dsfr/dist/component/form/form.min.css';
diff --git a/src/views/candidature-conseiller/CandidatureConseiller.test.jsx b/src/views/candidature-conseiller/CandidatureConseiller.test.jsx
index d7c9a026..4d13fc16 100644
--- a/src/views/candidature-conseiller/CandidatureConseiller.test.jsx
+++ b/src/views/candidature-conseiller/CandidatureConseiller.test.jsx
@@ -1,7 +1,7 @@
import { render, screen, within, fireEvent } from '@testing-library/react';
import { describe, expect, it, vi } from 'vitest';
import CandidatureConseiller from './CandidatureConseiller';
-import { textMatcher } from '../../../test/test-utils';
+import { textMatcher, dateDujour } from '../../../test/test-utils';
vi.mock('react-router-dom', () => ({
useLocation: () => ({ hash: '' }),
@@ -239,11 +239,14 @@ describe('candidature conseiller', () => {
it('quand je modifie la date de disponibilité, alors elle s’affiche dans l’encart "En résumé"', () => {
// GIVEN
+ vi.useFakeTimers();
+ vi.setSystemTime(new Date(2023, 11, 12, 13));
render();
+ const date = dateDujour();
// WHEN
const dateDisponibilite = screen.getByLabelText('Choisir une date');
- fireEvent.change(dateDisponibilite, { target: { value: '2023-12-12' } });
+ fireEvent.change(dateDisponibilite, { target: { value: date } });
// THEN
const titreResume = screen.getByText(
@@ -251,6 +254,7 @@ describe('candidature conseiller', () => {
{ selector: 'p' }
);
expect(titreResume).toBeInTheDocument();
+ vi.useRealTimers();
});
it('quand je renseigne un début de nom de ville qui existe alors plusieurs résultats sont affichés', async () => {
@@ -284,6 +288,8 @@ describe('candidature conseiller', () => {
it('quand je coche au moins une case de situation et que je valide le formulaire alors il n’y a pas d’erreur de validation', () => {
// GIVEN
+ vi.useFakeTimers();
+ vi.setSystemTime(new Date(2023, 11, 12, 13));
render();
const prenom = screen.getByLabelText('Prénom *');
fireEvent.change(prenom, { target: { value: 'Jean' } });
@@ -296,7 +302,7 @@ describe('candidature conseiller', () => {
const oui = screen.getByRole('radio', { name: 'Oui' });
fireEvent.click(oui);
const date = screen.getByLabelText('Choisir une date');
- fireEvent.change(date, { target: { value: '2023-12-12' } });
+ fireEvent.change(date, { target: { value: dateDujour() } });
const _5km = screen.getByRole('radio', { name: '5 km' });
fireEvent.click(_5km);
const descriptionMotivation = screen.getByLabelText('Votre message *');
@@ -309,10 +315,13 @@ describe('candidature conseiller', () => {
// THEN
const erreurCheckboxes = screen.queryByText('Vous devez cocher au moins une case', { selector: 'p' });
expect(erreurCheckboxes).not.toBeInTheDocument();
+ vi.useRealTimers();
});
it('quand je ne coche pas de case de situation et que je valide le formulaire alors il y a une erreur de validation', () => {
// GIVEN
+ vi.useFakeTimers();
+ vi.setSystemTime(new Date(2023, 11, 12, 13));
render();
const prenom = screen.getByLabelText('Prénom *');
fireEvent.change(prenom, { target: { value: 'Jean' } });
@@ -323,7 +332,7 @@ describe('candidature conseiller', () => {
const oui = screen.getByRole('radio', { name: 'Oui' });
fireEvent.click(oui);
const date = screen.getByLabelText('Choisir une date');
- fireEvent.change(date, { target: { value: '2023-12-12' } });
+ fireEvent.change(date, { target: { value: dateDujour() } });
const _5km = screen.getByRole('radio', { name: '5 km' });
fireEvent.click(_5km);
const descriptionMotivation = screen.getByLabelText('Votre message *');
@@ -336,5 +345,6 @@ describe('candidature conseiller', () => {
// THEN
const erreurCheckboxes = screen.getByText('Vous devez cocher au moins une case', { selector: 'p' });
expect(erreurCheckboxes).toBeInTheDocument();
+ vi.useRealTimers();
});
});
diff --git a/src/views/candidature-conseiller/Disponibilite.jsx b/src/views/candidature-conseiller/Disponibilite.jsx
index 9cbe6fb3..1ef67d54 100644
--- a/src/views/candidature-conseiller/Disponibilite.jsx
+++ b/src/views/candidature-conseiller/Disponibilite.jsx
@@ -4,6 +4,8 @@ import Datepicker from '../../components/commun/Datepicker';
import PropTypes from 'prop-types';
export default function Disponibilite({ setDateDisponibilite }) {
+ const dateDuJour = new Date().toISOString().slice(0, 10);
+
return (