ci: use Gitea API for releases #2

Closed
adrianbonpin wants to merge 56 commits from feat/ismis-helper into prod
2 changed files with 24 additions and 1 deletions
Showing only changes of commit 5a9c185a48 - Show all commits
+10 -1
View File
@@ -72,5 +72,14 @@
return result; 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 };
}); });
+14
View File
@@ -4,9 +4,11 @@ const fs = require('node:fs');
const path = require('node:path'); const path = require('node:path');
const { parseStudyLoadTable } = require('../parsers.js'); const { parseStudyLoadTable } = require('../parsers.js');
const { parseProfilePage } = 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 fixture = fs.readFileSync(path.join(__dirname, 'fixtures', 'study-load-table.html'), 'utf8');
const profileFixture = fs.readFileSync(path.join(__dirname, 'fixtures', 'profile.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', () => { test('parseStudyLoadTable extracts all course rows', () => {
const rows = parseStudyLoadTable(fixture); const rows = parseStudyLoadTable(fixture);
@@ -57,3 +59,15 @@ test('parseProfilePage degrades gracefully on empty input', () => {
const p = parseProfilePage(''); const p = parseProfilePage('');
assert.deepStrictEqual(p, {}); 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)));
});