Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
0eee422
GitHub Classroom Autograding Workflow
github-classroom[bot] Sep 25, 2025
792ef24
DB functions changes
Dniroshana Feb 1, 2026
d25b54f
DB functions updatedDB functions updated
Dniroshana Feb 1, 2026
28858e2
Update index.html to include script tags for test, polyfills, and mai…
Dniroshana Feb 1, 2026
4ab732a
Update readTeacherInfo function to use dummy data for SQL query
Dniroshana Mar 19, 2026
9f9b8a4
Fix readTeacherInfo function to execute a proper SQL query instead of…
Dniroshana Mar 19, 2026
d04db55
Update package.json scripts to use node with legacy provider for comp…
Dniroshana Mar 19, 2026
b1c3c8e
Refactor package.json scripts to remove legacy provider for compatibi…
Dniroshana Mar 19, 2026
92e1d96
Add Node.js setup step to workflow
Dniroshana Mar 19, 2026
2c6176d
Update start script in package.json to include legacy provider for co…
Dniroshana Mar 19, 2026
cb3c08b
Merge branch 'main' of https://github.com/OpenUOM/capstone-project-as…
Dniroshana Mar 19, 2026
5f65f7e
Update test script in package.json to include NODE_OPTIONS for compat…
Dniroshana Mar 19, 2026
5fe6bd2
Refactor search method in TeacherTableComponent for improved readabil…
Dniroshana Mar 19, 2026
93008e9
Update proxy configuration to unify target URLs for /test and default…
Dniroshana Mar 19, 2026
0e26150
Refactor proxy configuration for cleaner structure and improved reada…
Dniroshana Mar 19, 2026
ca661eb
Update classroom.yml
Dniroshana Mar 19, 2026
7441c44
Refactor package.json and proxy configuration for improved clarity an…
Dniroshana Mar 19, 2026
a6a06c2
Merge branch 'main' of https://github.com/OpenUOM/capstone-project-as…
Dniroshana Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
192 changes: 192 additions & 0 deletions .github/workflows/classroom.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
name: Autograding Tests
'on':
- workflow_dispatch
- repository_dispatch
permissions:
checks: write
actions: read
contents: read
jobs:
run-autograding-tests:
runs-on: ubuntu-latest
if: github.actor != 'github-classroom[bot]'
steps:
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Checkout code
uses: actions/checkout@v4
- name: Backend List Teachers
id: backend-list-teachers
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Backend List Teachers
setup-command: npm install
command: npm test -- -t "GET /listTeachers should show all teachers"
timeout: 10
max-score: 10
- name: Backend Add Teacher
id: backend-add-teacher
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Backend Add Teacher
setup-command: npm install
command: npm test -- -t "POST /addTeacher should show a newly added teacher"
timeout: 10
max-score: 10
- name: Backend Edit Teacher
id: backend-edit-teacher
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Backend Edit Teacher
setup-command: npm install
command: npm test -- -t "POST /editTeacher should show a newly added teacher"
timeout: 10
max-score: 10
- name: Backend Delete Teacher
id: backend-delete-teacher
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Backend Delete Teacher
setup-command: npm install
command: npm test -- -t "POST /deleteTeacher should delete a teacher"
timeout: 10
max-score: 10
- name: Backend List Students
id: backend-list-students
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Backend List Students
setup-command: npm install
command: npm test -- -t "GET /listStudents should show all students"
timeout: 10
max-score: 10
- name: Backend Add Student
id: backend-add-student
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Backend Add Student
setup-command: npm install
command: npm test -- -t "POST /addStudent should show a newly added student"
timeout: 10
max-score: 10
- name: Backend Edit Student
id: backend-edit-student
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Backend Edit Student
setup-command: npm install
command: npm test -- -t "POST /editStudent should edit a Student"
timeout: 10
max-score: 10
- name: Backend Delete Student
id: backend-delete-student
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Backend Delete Student
setup-command: npm install
command: npm test -- -t "POST /deleteStudent should delete a student"
timeout: 10
max-score: 10
- name: Dummy Test
id: dummy-test
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Dummy Test
setup-command: npm install
command: file=./test/dummy.test.js npm run test --prefix ./frontend
timeout: 10
- name: Frontend Add Student
id: frontend-add-student
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Frontend Add Student
setup-command: npm install
command: file=./test/student-add.test.js npm run test --prefix ./frontend
timeout: 10
max-score: 10
- name: Frontend Delete Student
id: frontend-delete-student
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Frontend Delete Student
setup-command: npm install
command: file=./test/student-delete.test.js npm run test --prefix ./frontend
timeout: 10
max-score: 10
- name: Frontend Edit Student
id: frontend-edit-student
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Frontend Edit Student
setup-command: npm install
command: file=./test/student-edit.test.js npm run test --prefix ./frontend
timeout: 10
max-score: 10
- name: Frontend Search Student
id: frontend-search-student
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Frontend Search Student
setup-command: npm install
command: file=./test/student-search.test.js npm run test --prefix ./frontend
timeout: 10
max-score: 10
- name: Frontend Add Teacher
id: frontend-add-teacher
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Frontend Add Teacher
setup-command: npm install
command: file=./test/teacher-add.test.js npm run test --prefix ./frontend
timeout: 10
max-score: 10
- name: Frontend Delete Teacher
id: frontend-delete-teacher
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Frontend Delete Teacher
setup-command: npm install
command: file=./test/teacher-delete.test.js npm run test --prefix ./frontend
timeout: 10
max-score: 10
- name: Frontend Edit Teacher
id: frontend-edit-teacher
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Frontend Edit Teacher
setup-command: npm install
command: file=./test/teacher-edit.test.js npm run test --prefix ./frontend
timeout: 10
max-score: 10
- name: Frontend Search Teacher
id: frontend-search-teacher
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Frontend Search Teacher
setup-command: npm install
command: file=./test/teacher-search.test.js npm run test --prefix ./frontend
timeout: 10
max-score: 10
- name: Autograding Reporter
uses: classroom-resources/autograding-grading-reporter@v1
env:
BACKEND-LIST-TEACHERS_RESULTS: "${{steps.backend-list-teachers.outputs.result}}"
BACKEND-ADD-TEACHER_RESULTS: "${{steps.backend-add-teacher.outputs.result}}"
BACKEND-EDIT-TEACHER_RESULTS: "${{steps.backend-edit-teacher.outputs.result}}"
BACKEND-DELETE-TEACHER_RESULTS: "${{steps.backend-delete-teacher.outputs.result}}"
BACKEND-LIST-STUDENTS_RESULTS: "${{steps.backend-list-students.outputs.result}}"
BACKEND-ADD-STUDENT_RESULTS: "${{steps.backend-add-student.outputs.result}}"
BACKEND-EDIT-STUDENT_RESULTS: "${{steps.backend-edit-student.outputs.result}}"
BACKEND-DELETE-STUDENT_RESULTS: "${{steps.backend-delete-student.outputs.result}}"
DUMMY-TEST_RESULTS: "${{steps.dummy-test.outputs.result}}"
FRONTEND-ADD-STUDENT_RESULTS: "${{steps.frontend-add-student.outputs.result}}"
FRONTEND-DELETE-STUDENT_RESULTS: "${{steps.frontend-delete-student.outputs.result}}"
FRONTEND-EDIT-STUDENT_RESULTS: "${{steps.frontend-edit-student.outputs.result}}"
FRONTEND-SEARCH-STUDENT_RESULTS: "${{steps.frontend-search-student.outputs.result}}"
FRONTEND-ADD-TEACHER_RESULTS: "${{steps.frontend-add-teacher.outputs.result}}"
FRONTEND-DELETE-TEACHER_RESULTS: "${{steps.frontend-delete-teacher.outputs.result}}"
FRONTEND-EDIT-TEACHER_RESULTS: "${{steps.frontend-edit-teacher.outputs.result}}"
FRONTEND-SEARCH-TEACHER_RESULTS: "${{steps.frontend-search-teacher.outputs.result}}"
with:
runners: backend-list-teachers,backend-add-teacher,backend-edit-teacher,backend-delete-teacher,backend-list-students,backend-add-student,backend-edit-student,backend-delete-student,dummy-test,frontend-add-student,frontend-delete-student,frontend-edit-student,frontend-search-student,frontend-add-teacher,frontend-delete-teacher,frontend-edit-teacher,frontend-search-teacher
75 changes: 38 additions & 37 deletions backend/database.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const dbinitialize = async () => {
}

const readTeachers = async () => {
const sql = `SELECT * FROM dummyData`
const sql = `SELECT * FROM teacher`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
Expand All @@ -37,10 +37,10 @@ const readTeachers = async () => {
}

const readTeacherInfo = async (id) => {
const sql = `SELECT * FROM dummyData`
const sql = `SELECT * FROM teacher WHERE id = ?`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
.raw(sql, [id])
.then((data) => {
resolve(data);
})
Expand All @@ -51,12 +51,12 @@ const readTeacherInfo = async (id) => {
}

const addTeacher = async (id, name, age) => {
const sql = `SELECT * FROM dummyData`
const sql = `INSERT INTO teacher(id,name,age) VALUES (?,?,?)`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
.then((data) => {
resolve(data);
.raw(sql, [id, name, age])
.then(() => {
resolve({status: "Successfully inserted Teacher"})
})
.catch((error) => {
reject(error);
Expand All @@ -65,12 +65,12 @@ const addTeacher = async (id, name, age) => {
}

const updateTeacher = async (name, age, id) => {
const sql = `SELECT * FROM dummyData`
const sql = `UPDATE teacher SET name=?, age=? WHERE id=?`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
.then((data) => {
resolve(data);
.raw(sql, [name, age, id])
.then(() => {
resolve({status: "Successfully updated Teacher"})
})
.catch((error) => {
reject(error);
Expand All @@ -79,12 +79,12 @@ const updateTeacher = async (name, age, id) => {
}

const deleteTeacher = async (id) => {
const sql = `SELECT * FROM dummyData`
const sql = `DELETE FROM teacher WHERE id = ?`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
.then((data) => {
resolve(data);
.raw(sql, [id])
.then(() => {
resolve({status: "Successfully deleted Teacher"})
})
.catch((error) => {
reject(error);
Expand All @@ -93,12 +93,12 @@ const deleteTeacher = async (id) => {
}

const readStudents = async () => {
const sql = `SELECT * FROM dummyData`
const sql = `SELECT * FROM student`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
.then((data) => {
resolve(data);
.then((student) => {
resolve(student);
})
.catch((error) => {
reject(error);
Expand All @@ -107,40 +107,40 @@ const readStudents = async () => {
}

const readStudentInfo = async (id) => {
const sql = `SELECT * FROM dummyData`
const sql = `SELECT * FROM student WHERE id = ?`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
.then((data) => {
resolve(data);
.raw(sql, [id])
.then((student) => {
resolve(student);
})
.catch((error) => {
reject(error);
});
});
}

const addStudent = async (id, name, age, religion) => {
const sql = `SELECT * FROM dummyData`
const addStudent = async (id, name, age, hometown) => {
const sql = `INSERT INTO student(id,name,age,hometown) VALUES (?,?,?,?)`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
.then((data) => {
resolve(data);
.raw(sql, [id, name, age, hometown])
.then(() => {
resolve({status: "Successfully inserted Student"})
})
.catch((error) => {
reject(error);
});
});
}

const updateStudent = async (name, age, religion, id) => {
const sql = `SELECT * FROM dummyData`
const updateStudent = async (name, age, id, hometown) => {
const sql = `UPDATE student SET name=?, age=?, hometown=? WHERE id=?`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
.then((data) => {
resolve(data);
.raw(sql, [name, age, id, hometown])
.then(() => {
resolve({status: "Successfully updated Student"})
})
.catch((error) => {
reject(error);
Expand All @@ -149,19 +149,20 @@ const updateStudent = async (name, age, religion, id) => {
}

const deleteStudent = async (id) => {
const sql = `SELECT * FROM dummyData`
const sql = `DELETE FROM student WHERE id = ?`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
.then((data) => {
resolve(data);
.raw(sql, [id])
.then(() => {
resolve({status: "Successfully deleted Student"})
})
.catch((error) => {
reject(error);
});
});
}


module.exports = {
readTeachers,
readStudents,
Expand All @@ -173,4 +174,4 @@ module.exports = {
readTeacherInfo,
updateStudent,
updateTeacher
};
};
5 changes: 4 additions & 1 deletion frontend/angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,5 +132,8 @@
}
}
}},
"defaultProject": "capstone-frontend"
"defaultProject": "capstone-frontend",
"cli": {
"analytics": "e8b5f3c2-5d6e-4d3e-9f7b-8f4e9c3d2a1b"
}
}
Loading