All files / components/Jobs InstructorReportSpecificCommonsForm.jsx

100% Statements 46/46
100% Branches 7/7
100% Functions 3/3
100% Lines 46/46

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 651x 1x 1x 1x 1x   61x 61x   61x 61x 61x 61x     61x 61x   61x 61x 61x 61x   61x 1x 1x 1x   61x 2x 2x 2x   61x 36x 36x   61x 9x 9x 9x   25x 25x 25x 25x 25x 25x 25x   25x       25x 25x 25x 25x         25x 1x  
import { Button, Form } from "react-bootstrap";
import { useForm } from "react-hook-form";
import { useState } from "react";
import { useBackend } from "main/utils/useBackend";
import CommonsSelect from "main/components/Commons/CommonsSelect";
 
function InstructorReportSpecificCommonsForm({ submitAction }) {
  const testid = "InstructorReportSpecificCommonsForm";
 
  const { data: commons } = useBackend(
    ["/api/commons/all"],
    { url: "/api/commons/all" },
    [],
  );
 
  const [selectedCommons, setSelectedCommons] = useState(null);
  const [selectedCommonsName, setSelectedCommonsName] = useState(null);
 
  const {
    handleSubmit,
    formState: { _errors },
  } = useForm();
 
  const handleCommonsSelection = (id, name) => {
    setSelectedCommons(id);
    setSelectedCommonsName(name);
  };
 
  const onSubmit = () => {
    const params = { selectedCommons, selectedCommonsName };
    submitAction(params);
  };
 
  if (!commons || commons.length === 0) {
    return <div>There are no commons on which to run this job.</div>;
  }
 
  if (selectedCommons === null) {
    setSelectedCommons(commons[0].id);
    setSelectedCommonsName(commons[0].name);
  }
 
  return (
    <Form onSubmit={handleSubmit(onSubmit)}>
      <CommonsSelect
        commons={commons}
        selectedCommons={selectedCommons}
        handleCommonsSelection={handleCommonsSelection}
        testid={testid}
      />
      <p>
        Click this button to generate an instructor report for the selected
        commons.
      </p>
      <Button
        type="submit"
        data-testid="InstructorReportSpecificCommonsForm-Submit-Button"
      >
        Generate
      </Button>
    </Form>
  );
}
export default InstructorReportSpecificCommonsForm;