All files / components/MenuItemReview MenuItemReviewTable.jsx

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

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 741x 1x   1x 1x       1x 1x   1x 16x 16x 16x 16x 16x   16x 2x 2x   16x   16x 16x 16x 16x   16x   16x 16x 2x 2x   16x 16x 16x 16x 16x   16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x   16x 10x 10x 10x   10x   16x 16x  
import React from "react";
import OurTable, { ButtonColumn } from "main/components/OurTable";
 
import { useBackendMutation } from "main/utils/useBackend";
import {
  cellToAxiosParamsDelete,
  onDeleteSuccess,
} from "main/utils/menuItemReviewUtils";
import { useNavigate } from "react-router";
import { hasRole } from "main/utils/useCurrentUser";
 
export default function MenuItemReviewTable({
  reviews,
  currentUser,
  testIdPrefix = "MenuItemReviewTable",
}) {
  const navigate = useNavigate();
 
  const editCallback = (cell) => {
    navigate(`/MenuItemReview/edit/${cell.row.original.id}`);
  };
 
  // Stryker disable all : hard to test for query caching
 
  const deleteMutation = useBackendMutation(
    cellToAxiosParamsDelete,
    { onSuccess: onDeleteSuccess },
    ["/api/menuitemreviews/all"],
  );
  // Stryker restore all
 
  // Stryker disable next-line all : TODO try to make a good test for this
  const deleteCallback = async (cell) => {
    deleteMutation.mutate(cell);
  };
 
  const columns = [
    {
      header: "id",
      accessorKey: "id",
    },
 
    {
      header: "itemId",
      accessorKey: "itemId",
    },
    {
      header: "reviewerEmail",
      accessorKey: "reviewerEmail",
    },
    {
      header: "stars",
      accessorKey: "stars",
    },
    {
      header: "dateReviewed",
      accessorKey: "dateReviewed",
    },
    {
      header: "comments",
      accessorKey: "comments",
    },
  ];
 
  if (hasRole(currentUser, "ROLE_ADMIN")) {
    columns.push(ButtonColumn("Edit", "primary", editCallback, testIdPrefix));
    columns.push(
      ButtonColumn("Delete", "danger", deleteCallback, testIdPrefix),
    );
  }
 
  return <OurTable data={reviews} columns={columns} testid={testIdPrefix} />;
}