All files / pages/RequestType RequestTypeIndexPage.jsx

100% Statements 40/40
100% Branches 4/4
100% Functions 2/2
100% Lines 40/40

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 541x 1x   1x 1x 1x 1x   1x 19x   19x 19x 19x 19x 19x 19x 19x 19x 19x 19x     19x 18x 18x 13x 18x 11x 11x 11x 11x 11x 11x       11x 18x   19x 19x 19x 19x 19x 19x 19x 19x         19x  
import React from "react";
import { useBackend } from "main/utils/useBackend";
 
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import RequestTypeTable from "main/components/RequestType/RequestTypeTable";
import { Button } from "react-bootstrap";
import { useCurrentUser, hasRole } from "main/utils/currentUser";
 
export default function RequestTypeIndexPage() {
  const currentUser = useCurrentUser();
 
  const {
    data: requestTypes,
    error: _error,
    status: _status,
  } = useBackend(
    // Stryker disable next-line all : don't test internal caching of React Query
    ["/api/requesttypes/all"],
    { method: "GET", url: "/api/requesttypes/all" },
    // Stryker disable next-line all : don't test default value of empty list
    [],
  );
 
  const createButton = () => {
    if (
      hasRole(currentUser, "ROLE_PROFESSOR") ||
      hasRole(currentUser, "ROLE_ADMIN")
    ) {
      return (
        <Button
          variant="primary"
          href="/requesttypes/post"
          style={{ float: "right" }}
        >
          Create RequestType
        </Button>
      );
    }
  };
 
  return (
    <BasicLayout>
      <div className="pt-2">
        {createButton()}
        <h1>RequestType</h1>
        <RequestTypeTable
          requestTypes={requestTypes}
          currentUser={currentUser}
        />
      </div>
    </BasicLayout>
  );
}