ISMIS Helper: cross-browser build, CI, PDF fixes, Chrome download fix #1
+13
-1
@@ -81,5 +81,17 @@
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
return { parseStudyLoadTable, parseProfilePage, parseOfferedCourses };
|
function filterStudyLoadCourses(courses) {
|
||||||
|
return (courses || []).filter(
|
||||||
|
(c) => String(c.status || '').trim().toUpperCase() !== 'DISSOLVED'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sumUnits(courses) {
|
||||||
|
return (courses || [])
|
||||||
|
.reduce((sum, c) => sum + (parseFloat(c.units) || 0), 0)
|
||||||
|
.toFixed(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return { parseStudyLoadTable, parseProfilePage, parseOfferedCourses, filterStudyLoadCourses, sumUnits };
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -73,3 +73,25 @@ test('parseOfferedCourses strips group suffix from code', () => {
|
|||||||
const it3206n = courses.find(c => c.courseCode === 'IT 3206N');
|
const it3206n = courses.find(c => c.courseCode === 'IT 3206N');
|
||||||
assert.ok(it3206n, 'should find IT 3206N');
|
assert.ok(it3206n, 'should find IT 3206N');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const { filterStudyLoadCourses, sumUnits } = require('../parsers.js');
|
||||||
|
|
||||||
|
test('filterStudyLoadCourses excludes DISSOLVED courses', () => {
|
||||||
|
const courses = [
|
||||||
|
{ courseCode: 'CS 5105', status: 'DISSOLVED', units: '3.00' },
|
||||||
|
{ courseCode: 'IT 3206', status: 'PARALLEL', units: '3.00' },
|
||||||
|
{ courseCode: 'IT 4102N', status: 'REGULAR', units: '3.00' }
|
||||||
|
];
|
||||||
|
const filtered = filterStudyLoadCourses(courses);
|
||||||
|
assert.deepStrictEqual(filtered.map((c) => c.courseCode), ['IT 3206', 'IT 4102N']);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('filterStudyLoadCourses handles missing status', () => {
|
||||||
|
const filtered = filterStudyLoadCourses([{ courseCode: 'X', status: '', units: '1' }]);
|
||||||
|
assert.strictEqual(filtered.length, 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('sumUnits computes total from course units', () => {
|
||||||
|
const courses = [{ units: '3.00' }, { units: '3.00' }, { units: '2.00' }];
|
||||||
|
assert.strictEqual(sumUnits(courses), '8.00');
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user