All files / components/Users RoleEmailForm.jsx

100% Statements 40/40
100% Branches 3/3
100% Functions 2/2
100% Lines 40/40

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 561x 1x 1x   23x 23x 23x 23x 23x 23x 23x 23x   23x   23x   23x 23x   23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x   23x 23x       23x 23x   23x 23x 23x 23x 23x         23x   1x  
import { Button, Form } from "react-bootstrap";
import { useForm } from "react-hook-form";
import { useNavigate } from "react-router";
 
function RoleEmailForm({ submitAction, buttonLabel = "Create" }) {
  // Stryker disable all
  const {
    register,
    formState: { errors },
    handleSubmit,
  } = useForm();
  // Stryker restore all
 
  const navigate = useNavigate();
 
  const testIdPrefix = "RoleEmailForm";
 
  // Stryker disable next-line Regex
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
 
  return (
    <Form onSubmit={handleSubmit(submitAction)}>
      <Form.Group className="mb-3">
        <Form.Label htmlFor="email">Email</Form.Label>
        <Form.Control
          // Stryker disable next-line all
          data-testid={testIdPrefix + "-email"}
          id="email"
          type="text"
          isInvalid={Boolean(errors.email)}
          {...register("email", {
            required: "Email is required.",
            pattern: emailRegex,
          })}
        />
        <Form.Control.Feedback type="invalid">
          {errors.email && "A valid email is required."}
        </Form.Control.Feedback>
      </Form.Group>
 
      <Button type="submit" data-testid={testIdPrefix + "-submit"}>
        {buttonLabel}
      </Button>
      <Button
        variant="Secondary"
        onClick={() => navigate(-1)}
        data-testid={testIdPrefix + "-cancel"}
      >
        Cancel
      </Button>
    </Form>
  );
}
 
export default RoleEmailForm;