# All files / src/pages RegistrationPage.js

100% Statements 17/17
100% Branches 4/4
100% Functions 2/2
100% Lines 17/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75

    100x

    100x
    100x

    100x
    6x
    6x

    6x
    3x
    3x
    3x

    3x
    3x
    1x
    1x

    2x
    2x

    100x

     import { useNavigate } from 'react-router-dom';
    import NavLink from '../components/NavLink/NavLink';
    import PageNavigation from '../components/PageNavigation/PageNavigation';
    import RegistrationForm from '../components/RegistrationForm/RegistrationForm';
    import Toast from '../components/Toast/Toast';
    import { DOCS_URL } from '../constants/navigation';
    import { useRegistrationForm } from '../hooks/useRegistrationForm';
    import { useToast } from '../hooks/useToast';
    import { getRegistrations, handleSubmit } from '../module/module';
    import './RegistrationPage.css';

    function RegistrationPage() {
      const navigate = useNavigate();
      const {
        formValues,
        fieldErrors,
        setFieldErrors,
        onChange,
        validateAllFields,
        isSubmitDisabled
      } = useRegistrationForm();
      const { toastMessage, toastType, showToast } = useToast();

      const onSubmit = (e) => {
        const nextErrors = validateAllFields();
        setFieldErrors(nextErrors);

        if (Object.keys(nextErrors).length > 0) {
          e.preventDefault();
          showToast('Veuillez corriger les erreurs du formulaire.', 'error');
          return;
        }

        try {
          handleSubmit(e);
          const highlightIndex = getRegistrations().length - 1;
          navigate('/list', { state: { highlightIndex } });
        } catch (error) {
          e.preventDefault();
          showToast(error.message || 'Une erreur est survenue', 'error');
        }
      };

      return (
        <div className="registration-page" data-testid="registration-page">
          <RegistrationForm
            formValues={formValues}
            fieldErrors={fieldErrors}
            isSubmitDisabled={isSubmitDisabled}
            onChange={onChange}
            onSubmit={onSubmit}
          />

          <PageNavigation variant="below-form" ariaLabel="Navigation inscription">
            <NavLink to="/" testId="go-to-home">
              Accueil
            </NavLink>
            <NavLink to="/list" testId="go-to-list">
              Liste des inscrits
            </NavLink>
            <NavLink to="/legacy" testId="go-to-legacy">
              Mode legacy
            </NavLink>
            <NavLink href={DOCS_URL} external testId="go-to-docs">
              Documentation
            </NavLink>
          </PageNavigation>

          <Toast message={toastMessage} type={toastType} />
        </div>
      );
    }

    export default RegistrationPage;