ci: use Gitea API for releases #2
+10
-1
@@ -72,5 +72,14 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
return { parseStudyLoadTable, parseProfilePage };
|
||||
function parseOfferedCourses(html) {
|
||||
return extractRows(html)
|
||||
.filter((tds) => tds.length >= 2)
|
||||
.map((tds) => ({
|
||||
courseCode: tds[0].split('-')[0].trim(),
|
||||
description: tds[1]
|
||||
}));
|
||||
}
|
||||
|
||||
return { parseStudyLoadTable, parseProfilePage, parseOfferedCourses };
|
||||
});
|
||||
|
||||
@@ -4,9 +4,11 @@ const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
const { parseStudyLoadTable } = require('../parsers.js');
|
||||
const { parseProfilePage } = require('../parsers.js');
|
||||
const { parseOfferedCourses } = require('../parsers.js');
|
||||
|
||||
const fixture = fs.readFileSync(path.join(__dirname, 'fixtures', 'study-load-table.html'), 'utf8');
|
||||
const profileFixture = fs.readFileSync(path.join(__dirname, 'fixtures', 'profile.html'), 'utf8');
|
||||
const offeredFixture = fs.readFileSync(path.join(__dirname, 'fixtures', 'offered-courses.html'), 'utf8');
|
||||
|
||||
test('parseStudyLoadTable extracts all course rows', () => {
|
||||
const rows = parseStudyLoadTable(fixture);
|
||||
@@ -57,3 +59,15 @@ test('parseProfilePage degrades gracefully on empty input', () => {
|
||||
const p = parseProfilePage('');
|
||||
assert.deepStrictEqual(p, {});
|
||||
});
|
||||
|
||||
test('parseOfferedCourses extracts course code and description', () => {
|
||||
const courses = parseOfferedCourses(offeredFixture);
|
||||
const it3206 = courses.find(c => c.courseCode === 'IT 3206');
|
||||
assert.ok(it3206, 'should find IT 3206');
|
||||
assert.strictEqual(it3206.description, 'INTEGRATIVE PROGRAMMING AND TECHNOLOGY');
|
||||
});
|
||||
|
||||
test('parseOfferedCourses strips group suffix from code', () => {
|
||||
const courses = parseOfferedCourses(offeredFixture);
|
||||
assert.ok(courses.every(c => !/Group/.test(c.courseCode)));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user