All files / components/Commons PagedProfitsTable.js

100% Statements 21/21
100% Branches 4/4
100% Functions 9/9
100% Lines 21/21

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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110                5x   134x 134x   134x   134x 134x         134x                               134x   134x 1x 1x       134x 3x 1x         134x       41x         41x         41x                 134x 30x                     134x                                            
import React from "react";
import OurTable from "main/components/OurTable";
import { Button } from "react-bootstrap";
import { useBackend } from "main/utils/useBackend";
import { useParams } from "react-router-dom";
import { timestampToDate } from "main/utils/dateUtils";
 
 
const PagedProfitsTable = () => {
 
    const testId = "PagedProfitsTable";
    const refreshJobsIntervalMilliseconds = 5000;
 
    const [selectedPage, setSelectedPage] = React.useState(0);
 
    const PROFIT_PAGE_SIZE = 5;
    const { commonsId } = useParams();
 
    // Stryker disable all
    const {
        data: page
    } = useBackend(
        ["/api/profits/paged/commonsid"],
        {
            method: "GET",
            url: "/api/profits/paged/commonsid", 
            params: {
                commonsId: commonsId,
                pageNumber: selectedPage,
                pageSize: PROFIT_PAGE_SIZE,
            }
        },
        {content: [], totalPages: 0},
        { refetchInterval: refreshJobsIntervalMilliseconds }
    );
    // Stryker restore  all
 
    const testid = "PagedProfitsTable";
 
    const previousPageCallback = () => {
        return () => {
            setSelectedPage(selectedPage - 1);
        }
    }
 
    const nextPageCallback = () => {
        return () => {
            setSelectedPage(selectedPage + 1);
        }
    }
 
    const columns = 
        [
            {
                Header: "Profit",
                accessor: "amount",
                Cell: ({value}) => `$${value.toFixed(2)}`,
            },
            {
                Header: "Date",
                accessor: "timestamp",
                Cell: ({ value }) => timestampToDate(value),
            },
            {
                Header: "Health",
                accessor: "avgCowHealth",
                Cell: ({value}) => `${value.toFixed(2) + '%'}`
            },
            {
                Header: "Cows",
                accessor: "numCows",
            },
        ];
 
 
    const sortees = React.useMemo(
        () => [
            {
                id: "timestamp",
                desc: true
            }
        ],
        // Stryker disable next-line all
        []
    );
 
 
    return (
        <>
            <p>Page: {selectedPage + 1}</p>
            {selectedPage > 0 && <Button data-testid={`${testId}-previous-button`}onClick={previousPageCallback()}>
                Previous</Button>}
            {selectedPage < page.totalPages - 1 && <Button data-testid={`${testId}-next-button`} onClick={nextPageCallback()} >Next</Button>}
            <div 
                data-testid="PagedProfitsTable-container" 
                style={{display: 'flex'}}
            >
                    < OurTable
                        data={page.content}
                        columns={columns}
                        testid={testid}
                        initialState={{ sortBy: sortees }}
                    />
            </div>
        </>
    );
    
}; 
 
export default PagedProfitsTable;