All files / components/Teams TeamMemberForm.jsx

100% Statements 49/49
100% Branches 6/6
100% Functions 3/3
100% Lines 49/49

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 661x 1x 1x 1x   21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x   21x 4x 1x 1x 1x 3x 3x   21x   21x   21x 21x 21x 21x 21x 21x 21x 21x   21x 21x 21x       21x 21x   21x 21x 21x 21x 21x 21x           21x   1x  
import { Button, Form } from "react-bootstrap";
import { useForm } from "react-hook-form";
import { useNavigate } from "react-router";
import RosterStudentDropdown from "main/components/RosterStudent/RosterStudentDropdown";
 
function TeamMemberForm({
  initialContents,
  rosterStudents,
  submitAction,
  buttonLabel = "Add Member",
  cancelDisabled = false,
}) {
  // Stryker disable all
  const {
    setValue,
    setError,
    formState: { errors },
    handleSubmit,
  } = useForm({ defaultValues: initialContents || {} });
  // Stryker restore all
 
  const onSubmit = (data) => {
    if (!data.rosterStudentId) {
      setError("rosterStudentId", { message: "Please select a student" });
      return;
    }
    submitAction(data);
  };
 
  const navigate = useNavigate();
 
  const testIdPrefix = "TeamMemberForm";
 
  return (
    <Form onSubmit={handleSubmit(onSubmit)}>
      <Form.Group className="mb-3">
        <Form.Label htmlFor="rosterStudentId">Select Student</Form.Label>
        <RosterStudentDropdown
          rosterStudents={rosterStudents}
          setValue={setValue}
          isInvalid={Boolean(errors.rosterStudentId)}
        />
        {errors.rosterStudentId && (
          <Form.Control.Feedback type="invalid">
            {errors.rosterStudentId.message}
          </Form.Control.Feedback>
        )}
      </Form.Group>
      <Button type="submit" data-testid={testIdPrefix + "-submit"}>
        {buttonLabel}
      </Button>
      {!cancelDisabled && (
        <Button
          variant="Secondary"
          onClick={() => navigate(-1)}
          data-testid={testIdPrefix + "-cancel"}
        >
          Cancel
        </Button>
      )}
    </Form>
  );
}
 
export default TeamMemberForm;