All files / components/UCSBOrganization UCSBOrganizationTable.jsx

100% Statements 35/35
100% Branches 4/4
100% Functions 3/3
100% Lines 35/35

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 481x 1x 1x 1x       1x 1x   1x 28x 28x 1x 1x 1x 28x 28x 28x 28x     28x   28x 28x 28x 28x 28x 28x   28x 7x 7x   7x 7x   7x 28x 28x 28x 28x 28x     28x  
import React from "react";
import OurTable, { ButtonColumn } from "main/components/OurTable";
import { useBackendMutation } from "main/utils/useBackend";
import {
  cellToAxiosParamsDelete,
  onDeleteSuccess,
} from "main/utils/UCSBOrganizationUtils";
import { useNavigate } from "react-router";
import { hasRole } from "main/utils/useCurrentUser";
 
export default function UCSBOrganizationTable({ organizations, currentUser }) {
  const navigate = useNavigate();
  const editCallback = (cell) => {
    const orgCode = cell.row.original.orgCode;
    navigate(`/ucsborganization/edit/${orgCode}`);
  };
  const deleteMutation = useBackendMutation(
    cellToAxiosParamsDelete,
    { onSuccess: onDeleteSuccess },
    ["/api/ucsborganizations/all"],
  );
 
  const deleteCallback = (cell) => deleteMutation.mutate(cell);
 
  const columns = [
    { header: "Code", accessorKey: "orgCode" },
    { header: "Short Name", accessorKey: "orgTranslationShort" },
    { header: "Full Name", accessorKey: "orgTranslation" },
    { header: "Inactive?", accessorKey: "inactive" },
  ];
 
  if (hasRole(currentUser, "ROLE_ADMIN")) {
    columns.push(
      ButtonColumn("Edit", "primary", editCallback, "UCSBOrganizationTable"),
    );
    columns.push(
      ButtonColumn("Delete", "danger", deleteCallback, "UCSBOrganizationTable"),
    );
  }
  return (
    <OurTable
      data={organizations}
      columns={columns}
      testid={"UCSBOrganizationTable"}
    />
  );
}