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 80 81 82 83 84 85 86 87 88 | 1x 1x 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 8x 8x 8x 3x 3x 3x 5x 5x 5x 69x 69x 69x 69x 69x 69x 69x 69x 1x 68x 69x 69x 69x 69x 69x 69x 69x 69x 69x 69x 1x 68x 69x 69x 69x 69x 69x 69x 69x 69x 1x | import { Button, Form } from "react-bootstrap";
import { useForm } from "react-hook-form";
import { useBackend } from "main/utils/useBackend";
import React from "react";
function CanvasApiForm({
submitAction,
buttonLabel = "Connect Canvas",
courseId,
}) {
const {
register,
formState: { errors },
handleSubmit,
reset,
setError,
} = useForm();
const { data: canvasInfo } = useBackend(
// Stryker disable next-line all : don't test internal caching of React Query
[`/api/courses/getCanvasInfo?courseId=${courseId}`],
// Stryker disable next-line StringLiteral : The default value for an empty ("") method is GET. Therefore, there is no way to kill a mutation that transforms "GET" to ""
{ method: "GET", url: `/api/courses/getCanvasInfo?courseId=${courseId}` },
// Stryker disable next-line all : don't test default value of empty list
[],
);
const testIdPrefix = "CanvasApiForm";
return (
<Form
onSubmit={handleSubmit((data) => {
const token = data.canvasApiToken.trim();
const courseIdVal = data.canvasCourseId.trim();
if (!token && !courseIdVal) {
setError("root", { message: "Please fill in at least one field." });
return;
}
submitAction({ canvasApiToken: token, canvasCourseId: courseIdVal });
reset();
})}
>
<Form.Group className="mb-3">
<Form.Label htmlFor="canvasApiToken">Canvas API Token</Form.Label>
<Form.Control
data-testid={testIdPrefix + "-canvasApiToken"}
id="canvasApiToken"
type="text"
placeholder={
canvasInfo.canvasApiToken
? `Current Token: ${canvasInfo.canvasApiToken}`
: "Token not set yet."
}
isInvalid={Boolean(errors.canvasApiToken)}
{...register("canvasApiToken")}
/>
</Form.Group>
<Form.Group className="mb-3">
<Form.Label htmlFor="canvasCourseId">Canvas Course ID</Form.Label>
<Form.Control
data-testid={testIdPrefix + "-canvasCourseId"}
id="canvasCourseId"
type="text"
placeholder={
canvasInfo.canvasCourseId
? `Current Course ID: ${canvasInfo.canvasCourseId}`
: "Course ID not set yet."
}
isInvalid={Boolean(errors.canvasCourseId)}
{...register("canvasCourseId")}
/>
</Form.Group>
{errors.root && (
<Form.Text className="text-danger d-block mb-2">
{errors.root.message}
</Form.Text>
)}
<Button type="submit" data-testid={testIdPrefix + "-submit"}>
{buttonLabel}
</Button>
</Form>
);
}
export default CanvasApiForm;
|