All files / pages/Requests CompletedRequestsPage.jsx

100% Statements 34/34
100% Branches 5/5
100% Functions 1/1
100% Lines 34/34

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 471x 1x 1x 1x   1x 11x   11x 5x 5x   11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x     11x 11x     11x 11x 11x 11x 11x 11x 11x 11x           11x  
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import { useBackend } from "main/utils/useBackend";
import RecommendationRequestTable from "main/components/RecommendationRequest/RecommendationRequestTable";
import { hasRole, useCurrentUser } from "main/utils/currentUser";
 
export default function CompletedRequestsPage() {
  const { data: currentUser } = useCurrentUser();
 
  const apiEndpoint = hasRole(currentUser, "ROLE_PROFESSOR")
    ? "/api/recommendationrequest/professor/all"
    : "/api/recommendationrequest/requester/all";
 
  const {
    data: requests,
    error: _error,
    status: _status,
  } = useBackend(
    // Stryker disable next-line all : don't test internal caching of React Query
    [apiEndpoint],
    {
      // Stryker disable next-line all : GET is the default, so mutating this to "" doesn't introduce a bug
      method: "GET",
      url: apiEndpoint,
    },
    // Stryker disable next-line all : it's hard to test GET requests that are still in progress
    [],
  );
 
  const completedRequests = requests.filter(
    (request) => request.status === "COMPLETED" || request.status === "DENIED",
  );
 
  return (
    <BasicLayout>
      <div className="pt-2">
        <h1>Completed Requests</h1>
        <div data-testid="RecommendationRequestTable">
          <RecommendationRequestTable
            requests={completedRequests}
            currentUser={currentUser}
          />
        </div>
      </div>
    </BasicLayout>
  );
}