All files / components/RosterStudent DroppedStudentsTable.jsx

100% Statements 55/55
100% Branches 4/4
100% Functions 4/4
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 691x 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   69x 1x 1x 1x 1x 1x 1x   69x 1x 1x   69x 69x 69x 69x 69x 69x     69x 1x 1x   69x 69x     69x 69x 69x 69x 69x     69x  
import { useBackendMutation } from "main/utils/useBackend";
import { toast } from "react-toastify";
import OurTable, { ButtonColumn } from "main/components/OurTable";
import React from "react";
 
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"}
    />
  );
}