All files / pages/Admin AdminsIndexPage.jsx

100% Statements 39/39
100% Branches 2/2
100% Functions 2/2
100% Lines 39/39

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 531x 1x 1x 1x 1x 1x   1x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x     6x 6x 6x 6x 6x 6x 6x 6x       6x   6x 6x 6x 6x 6x 6x 6x 6x 6x 6x   6x 6x           6x  
import React from "react";
import { useBackend } from "main/utils/useBackend";
import { Link } from "react-router";
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import RoleEmailTable from "main/components/Users/RoleEmailTable";
import { Button } from "react-bootstrap";
 
export default function AdminsIndexPage() {
  const {
    data: instructors,
    error: _error,
    status: _status,
  } = useBackend(
    // Stryker disable next-line all : don't test internal caching of React Query
    ["/api/admin/all"],
    { method: "GET", url: "/api/admin/all" },
    // Stryker disable next-line all : don't test default value of empty list
    [],
  );
 
  const createButton = () => {
    return (
      <Button
        variant="primary"
        as={Link}
        to="/admin/admins/create"
        style={{ float: "right" }}
      >
        New Admin
      </Button>
    );
  };
 
  return (
    <BasicLayout>
      <div className="pt-2">
        {createButton()}
        <h1>Admins</h1>
        <RoleEmailTable
          data={instructors}
          deleteEndpoint="/api/admin/delete"
          getEndpoint="/api/admin/all"
          testIdPrefix="AdminsIndexPage"
        />
        <p>
          Note: Initial admins that are set in the <code>ADMIN_EMAILS</code>
          &nbsp; configuration cannot be deleted through the application.
        </p>
      </div>
    </BasicLayout>
  );
}