All files / components/Sections SectionsOverTimeTable.js

100% Statements 23/23
100% Branches 0/0
100% Functions 20/20
100% Lines 23/23

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 111 112 113 114 115 116 117 118 119 120              91x       13x               10x     37x       30x                 22x   8x               22x         37x           37x         22x       37x         22x       37x         22x       37x         22x       37x         22x               22x       10x   10x   10x            
import SectionsOverTimeTableBase from "main/components/SectionsOverTimeTableBase";
 
import { yyyyqToQyy } from "main/utils/quarterUtilities.js";
import { convertToFraction, formatDays, formatInstructors, formatLocation, formatTime, isSection } from "main/utils/sectionUtils.js";
 
 
function getFirstVal(values) {
    return values[0];
};
 
function getCourseId(courseIds) {
    return courseIds[0].substring(0, courseIds[0].length - 2);
}
 
export default function SectionsOverTimeTable({ sections }) {
 
 
    // Stryker enable all 
    // Stryker disable BooleanLiteral
    const columns = [
        {
            Header: 'Quarter',
            accessor: (row) => yyyyqToQyy(row.courseInfo.quarter),
            disableGroupBy: true,
            id: 'quarter',
 
            Cell: ({ cell: { value } }) => value
 
        },
        {
            Header: 'Course ID',
            accessor: 'courseInfo.courseId',
            disableGroupBy: true,
 
            aggregate: getCourseId,
            Aggregated: ({ cell: { value } }) => `${value}`,
 
            Cell: ({ cell: { value } }) => value.substring(0, value.length - 2)
        },
        {
            Header: 'Title',
            accessor: 'courseInfo.title',
            disableGroupBy: true,
 
            aggregate: getFirstVal,
            Aggregated: ({ cell: { value } }) => `${value}`
        },
        {
            // Stryker disable next-line StringLiteral: this column is hidden, very hard to test
            Header: 'Is Section?',
            accessor: (row) => isSection(row.section.section),
            // Stryker disable next-line StringLiteral: this column is hidden, very hard to test
            id: 'isSection',
        },
        {
            Header: 'Enrolled',
            accessor: (row) => convertToFraction(row.section.enrolledTotal, row.section.maxEnroll),
            disableGroupBy: true,
            id: 'enrolled',
 
            aggregate: getFirstVal,
            Aggregated: ({ cell: { value } }) => `${value}`
        },
        {
            Header: 'Location',
            accessor: (row) => formatLocation(row.section.timeLocations),
            disableGroupBy: true,
            id: 'location',
 
            aggregate: getFirstVal,
            Aggregated: ({ cell: { value } }) => `${value}`
        },
        {
            Header: 'Days',
            accessor: (row) => formatDays(row.section.timeLocations),
            disableGroupBy: true,
            id: 'days',
 
            aggregate: getFirstVal,
            Aggregated: ({ cell: { value } }) => `${value}`
        },
        {
            Header: 'Time',
            accessor: (row) => formatTime(row.section.timeLocations),
            disableGroupBy: true,
            id: 'time',
 
            aggregate: getFirstVal,
            Aggregated: ({ cell: { value } }) => `${value}`
        },
        {
            Header: 'Instructor',
            accessor: (row) => formatInstructors(row.section.instructors),
            disableGroupBy: true,
            id: 'instructor',
 
            aggregate: getFirstVal,
            Aggregated: ({ cell: { value } }) => `${value}`
        },        
        {
            Header: 'Enroll Code',
            accessor: 'section.enrollCode', 
            disableGroupBy: true,
 
            aggregate: getFirstVal,
            Aggregated: ({ cell: { value } }) => `${value}`
        }
    ];
 
    const testid = "SectionsOverTimeTable";
 
    const columnsToDisplay = columns;
 
    return <SectionsOverTimeTableBase
        data={sections}
        columns={columnsToDisplay}
        testid={testid}
    />;
};