All files / components/RosterStudent DroppedStudentsTable.jsx

100% Statements 54/54
100% Branches 4/4
100% Functions 4/4
100% Lines 54/54

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 67x 67x 67x 67x 67x 67x   67x 67x 67x 67x   67x 67x 67x 67x 67x 67x 67x 67x 67x 67x 67x 67x 67x   67x 1x 1x 1x 1x 1x 1x   67x 1x 1x   67x 67x 67x 67x 67x 67x     67x 1x 1x   67x 67x     67x 67x 67x 67x 67x     67x  
import { useBackendMutation } from "main/utils/useBackend";
import { toast } from "react-toastify";
import OurTable, { ButtonColumn } from "main/components/OurTable";
 
export default function DroppedStudentsTable({ students, courseId }) {
  const columns = [
    {
      header: "id",
      accessorKey: "id",
      id: "id",
    },
 
    {
      header: "Student Id",
      accessorKey: "studentId",
    },
 
    {
      header: "First Name",
      accessorKey: "firstName",
    },
    {
      header: "Last Name",
      accessorKey: "lastName",
    },
    {
      header: "Email",
      accessorKey: "email",
    },
  ];
 
  const cellToAxiosParamsRestore = (cell) => ({
    url: `/api/rosterstudents/restore`,
    method: "PUT",
    params: {
      id: cell.row.original.id,
    },
  });
 
  const restoreSuccess = () => {
    toast("Student successfully restored to course.");
  };
 
  const restoreMutation = useBackendMutation(
    cellToAxiosParamsRestore,
    {
      onSuccess: restoreSuccess,
    },
    [`/api/rosterstudents/course/${courseId}`],
  );
 
  const restoreCallback = (cell) => {
    restoreMutation.mutate(cell);
  };
 
  columns.push(
    ButtonColumn("Restore", "primary", restoreCallback, "RestoreButton"),
  );
 
  return (
    <OurTable
      columns={columns}
      data={students}
      testid={"DroppedStudentsTable"}
    />
  );
}