All files / components/Assignments IndividualAssignmentForm.jsx

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

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 791x 1x   1x 69x 69x 69x 69x 69x   69x 69x 69x 69x   69x 69x 69x 69x 69x 69x 69x 69x 69x 69x   69x 69x     69x 69x     69x 69x 69x 69x 69x     69x 69x 69x 69x 69x 69x 69x   69x 69x 69x 69x     69x 69x     69x 69x 69x 69x 69x   69x 69x 69x     69x 69x           69x  
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>
        <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="checkbox"
          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="creationTarget">
          Repository Creation Target
        </Form.Label>
        <Form.Control
          as="select"
          defaultValue={"STUDENTS_ONLY"}
          data-testid={"IndividualAssignmentForm-creationTarget"}
          {...register("creationTarget")}
        >
          <option value="STUDENTS_ONLY">Students Only</option>
          <option value="STAFF_ONLY">Staff Only</option>
          <option value="STUDENTS_AND_STAFF">Both Students and Staff</option>
        </Form.Control>
      </Form.Group>
      <Form.Group>
        <Button type="submit" data-testid="IndividualAssignmentForm-submit">
          Create
        </Button>
      </Form.Group>
    </Form>
  );
}