All files / components/HelpRequest HelpRequestTable.jsx

100% Statements 47/47
100% Branches 5/5
100% Functions 4/4
100% Lines 47/47

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 631x 1x 1x 1x       1x 1x   1x 15x   15x 1x 1x 1x   15x 15x 15x 15x 15x   15x   15x 2x 2x 2x   15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x   15x 9x 9x   9x 9x   9x   15x 15x 15x 15x 15x     15x  
import React from "react";
import OurTable, { ButtonColumn } from "main/components/OurTable";
import { useBackendMutation } from "main/utils/useBackend";
import {
    cellToAxiosParamsDelete,
    onDeleteSuccess,
} from "main/utils/HelpRequestUtils";
import { useNavigate } from "react-router";
import { hasRole } from "main/utils/useCurrentUser";
 
export default function HelpRequestTable({ helpRequests, currentUser }) {
    const navigate = useNavigate();
 
    const editCallback = (cell) => {
        const id = cell.row.original.id;
        navigate(`/helprequest/edit/${id}`);
    };
 
    // Stryker disable all : hard to test for query caching / invalidation key
    const deleteMutation = useBackendMutation(
        cellToAxiosParamsDelete,
        { onSuccess: onDeleteSuccess },
        ["/api/helprequest/all"],
    );
    // Stryker restore all
 
    const deleteCallback = async (cell) => {
        const id = cell.row.original.id;
        deleteMutation.mutate({ row: { values: { id }, original: {} } });
    };
 
    const columns = [
        { header: "id", accessorKey: "id" },
        { header: "Requester Email", accessorKey: "requesterEmail" },
        { header: "Table Or Breakout Room", accessorKey: "tableOrBreakoutRoom" },
        { header: "Team ID", accessorKey: "teamId" },
        { header: "Request Time", accessorKey: "requestTime" },
        { header: "Explanation", accessorKey: "explanation" },
        {
            header: "Solved",
            id: "solved",
            cell: ({ row }) => row.original.solved.toString(),
        },
    ];
 
    if (hasRole(currentUser, "ROLE_ADMIN")) {
        columns.push(
            ButtonColumn("Edit", "primary", editCallback, "HelpRequestTable"),
        );
        columns.push(
            ButtonColumn("Delete", "danger", deleteCallback, "HelpRequestTable"),
        );
    }
 
    return (
        <OurTable
            data={helpRequests}
            columns={columns}
            testid={"HelpRequestTable"}
        />
    );
}