All files / components/Assignments IndividualAssignmentForm.jsx

100% Statements 56/56
100% Branches 2/2
100% Functions 1/1
100% Lines 56/56

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 76 77 78 79 801x 1x   1x 51x 51x 51x 51x 51x   51x 51x 51x 51x   51x 51x 51x 51x 51x 51x 51x 51x 51x 51x   51x 51x     51x 51x     51x 51x 51x 51x 51x     51x 51x 51x 51x 51x 51x 51x   51x 51x 51x 51x     51x 51x     51x 51x 51x 51x 51x 51x   51x 51x 51x     51x 51x           51x  
import { useForm } from "react-hook-form";
import { Button, Form } from "react-bootstrap";
 
export default function IndividualAssignmentForm({ submitAction }) {
  const {
    register,
    formState: { errors },
    handleSubmit,
  } = useForm();
 
  return (
    <Form
      onSubmit={handleSubmit(submitAction)}
      data-testid="IndividualAssignmentForm"
    >
      <Form.Group className="mb-3">
        <Form.Label htmlFor="repoPrefix">Repository Prefix</Form.Label>
        <Form.Control
          id="repoPrefix"
          type="text"
          isInvalid={Boolean(errors.repoPrefix)}
          data-testid="IndividualAssignmentForm-repoPrefix"
          {...register("repoPrefix", {
            required: "Repository Prefix is required.",
          })}
        />
        <Form.Control.Feedback type="invalid">
          {errors.repoPrefix?.message}
        </Form.Control.Feedback>
      </Form.Group>
      <Form.Group className="mb-3">
        <Form.Label htmlFor="assignmentPrivacy">
          Private Repositories?
        </Form.Label>
        <Form.Check
          id="assignmentPrivacy"
          type="switch"
          data-testid="IndividualAssignmentForm-assignmentPrivacy"
          {...register("assignmentPrivacy")}
        />
      </Form.Group>
      <Form.Group className="mb-3">
        <Form.Label htmlFor="permissions">Student Permissions</Form.Label>
        <Form.Control
          as="select"
          defaultValue={"MAINTAIN"}
          data-testid={"IndividualAssignmentForm-permissions"}
          {...register("permissions")}
        >
          <option value="READ">Read</option>
          <option value="WRITE">Write</option>
          <option value="MAINTAIN">Maintain</option>
          <option value="ADMIN">Admin</option>
        </Form.Control>
      </Form.Group>
      <Form.Group className="mb-3">
        <Form.Label htmlFor="creationOption">
          Create Repositories for
        </Form.Label>
        <Form.Control
          as="select"
          id="creationOption"
          defaultValue="STUDENTS_ONLY"
          data-testid="IndividualAssignmentForm-creationOption"
          {...register("creationOption")}
        >
          <option value="STUDENTS_ONLY">Students Only</option>
          <option value="STAFF_ONLY">Staff Only</option>
          <option value="STUDENTS_AND_STAFF">Students and Staff</option>
        </Form.Control>
      </Form.Group>
      <Form.Group>
        <Button type="submit" data-testid="IndividualAssignmentForm-submit">
          Create
        </Button>
      </Form.Group>
    </Form>
  );
}