All files / pages AdminCoursesIndexPage.jsx

100% Statements 35/35
100% Branches 3/3
100% Functions 2/2
100% Lines 35/35

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 1x   1x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x     10x 10x 4x 4x 4x 4x 4x 4x       4x 10x   10x 10x 10x 10x 10x 10x       10x  
import React from "react";
import { useBackend } from "main/utils/useBackend";
 
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import CoursesTable from "main/components/Courses/CoursesTable";
import { useCurrentUser, hasRole } from "main/utils/currentUser";
import { Button } from "react-bootstrap";
 
export default function CoursesIndexPage() {
  const { data: currentUser } = useCurrentUser();
  const {
    data: courses,
    error: _error,
    status: _status,
  } = useBackend(
    // Stryker disable next-line all : don't test internal caching of React Query
    ["/api/course/all"],
    { url: "/api/course/all" },
    // Stryker disable next-line all : don't test default value of empty list
    [],
  );
 
  const createButton = () => {
    if (hasRole(currentUser, "ROLE_ADMIN")) {
      return (
        <Button
          variant="primary"
          href="/admin/createcourses"
          style={{ float: "right" }}
        >
          Create Course
        </Button>
      );
    }
  };
 
  return (
    <BasicLayout>
      <div className="pt-2">
        {createButton()}
        <h1>Courses</h1>
        <CoursesTable courses={courses} currentUser={currentUser} />
      </div>
    </BasicLayout>
  );
}