All files / components/Teams TeamMemberForm.jsx

100% Statements 49/49
100% Branches 4/4
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 66 67 681x 1x 1x 1x   24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x   24x   24x   24x 3x 3x   24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x       24x 24x 24x       24x 24x   24x 24x 24x 24x 24x 24x           24x   1x  
import { Button, Form } from "react-bootstrap";
import { useForm, Controller } 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 {
    control,
    formState: { errors },
    handleSubmit,
  } = useForm({ defaultValues: initialContents || {} });
  // Stryker restore all
 
  const navigate = useNavigate();
 
  const testIdPrefix = "TeamMemberForm";
 
  const onSubmit = (data) => {
    submitAction(data);
  };
 
  return (
    <Form onSubmit={handleSubmit(onSubmit)}>
      <Form.Group className="mb-3">
        <Form.Label htmlFor="rosterStudentId">Select Student</Form.Label>
        <Controller
          name="rosterStudentId"
          control={control}
          rules={{ required: "Select a student." }}
          render={({ field }) => (
            <RosterStudentDropdown
              rosterStudents={rosterStudents}
              {...field}
              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;