All files / pages/Articles ArticlesIndexPage.jsx

100% Statements 34/34
100% Branches 3/3
100% Functions 2/2
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 1x   1x 7x   7x 7x 7x 7x 7x 7x 7x 7x 7x     7x 7x 2x 2x 2x 2x 2x 2x       2x 7x   7x 7x 7x 7x 7x 7x       7x  
import React from "react";
import { useBackend } from "main/utils/useBackend";
 
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import ArticlesTable from "main/components/Articles/ArticlesTable";
import { useCurrentUser, hasRole } from "main/utils/useCurrentUser";
import { Button } from "react-bootstrap";
 
export default function ArticlesIndexPage() {
  const currentUser = useCurrentUser();
 
  const {
    data: articles,
    error: _error,
    status: _status,
  } = useBackend(
    // Stryker disable next-line all : don't test internal caching of React Query
    ["/api/articles/all"],{ method: "GET", url: "/api/articles/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="/articles/create"
          style={{ float: "right" }}
        >
          Create Article
        </Button>
      );
    }
  };
 
  return (
    <BasicLayout>
      <div className="pt-2">
        {createButton()}
        <h1>Articles</h1>
        <ArticlesTable articles={articles} currentUser={currentUser} />
      </div>
    </BasicLayout>
  );
}