All files / components/Jobs JobsTable.js

100% Statements 17/17
100% Branches 5/5
100% Functions 7/7
100% Lines 17/17

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          179x       23x   23x 177x 176x 176x   1x     23x         177x 177x               177x 177x 177x 177x                                       23x 12x                   23x                  
import React from "react";
import OurTable, { DateColumn } from "main/components/OurTable";
import { Link } from "react-router-dom";
 
export function truncateLines(lines) {
  return lines.slice(0, 10).join("\n");
}
 
export default function JobsTable({ jobs }) {
  const testid = "JobsTable";
 
  const truncateLog = (log) => {
    if (log) {
      const lines = log.split("\n");
      return truncateLines(lines);
    }
    return "";
  };
 
  const columns = [
    {
      Header: "id",
      accessor: "id", // accessor is the "key" in the data
    },
    DateColumn("Created", (cell) => cell.row.original.createdAt),
    DateColumn("Updated", (cell) => cell.row.original.updatedAt),
    {
      Header: "Status",
      accessor: "status",
    },
    {
      Header: "Log",
      Cell: ({ cell }) => {
        const log = cell.row.original.log;
        const id = cell.row.original.id;
        const truncatedLog = truncateLog(log);
        return (
          <div>
            <pre>{truncatedLog}</pre>
            {log && log.split("\n").length > 10 && (
              <div>
                <pre>...</pre>
                <Link
                  to={`/admin/jobs/logs/${id}`}
                  data-testid={`${testid}-see-entire-log-${id}`}
                >
                  [See entire log]
                </Link>
              </div>
            )}
          </div>
        );
      },
    },
  ];
 
  const sortees = React.useMemo(
    () => [
      {
        id: "id",
        desc: true,
      },
    ],
    // Stryker disable next-line all
    [],
  );
 
  return (
    <OurTable
      data={jobs}
      columns={columns}
      testid={testid}
      initialState={{ sortBy: sortees }}
    />
  );
}