Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
189 changes: 189 additions & 0 deletions .github/workflows/classroom.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
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:
- 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
95 changes: 48 additions & 47 deletions backend/database.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,19 @@ function init(db) {
}

const knex_db = require("./db-config");
const testBase = require("./test/testBase");

const dbinitialize = async () => {
testBase.resetDatabase(knex_db);
}

const readTeachers = async () => {
const sql = `SELECT * FROM dummyData`
const sql = `SELECT * FROM teacher`
return new Promise((resolve, reject) => {
knex_db
.raw(sql)
.then((data) => {
resolve(data);
.then((teachers) => {
resolve(teachers);
})
.catch((error) => {
reject(error);
Expand All @@ -37,12 +38,12 @@ 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)
.then((data) => {
resolve(data);
.raw(sql, [id])
.then((teacher) => {
resolve(teacher);
})
.catch((error) => {
reject(error);
Expand All @@ -51,12 +52,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 +66,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 +80,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 +94,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((students) => {
resolve(students);
})
.catch((error) => {
reject(error);
Expand All @@ -107,54 +108,54 @@ 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, hometown, id) => {
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, hometown, id])
.then(() => {
resolve({status: "Successfully updated Student"})
})
.catch((error) => {
reject(error);
});
});
}
}

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);
Expand All @@ -163,14 +164,14 @@ const deleteStudent = async (id) => {
}

module.exports = {
readTeachers,
readStudents,
addStudent,
addTeacher,
readTeachers,
readTeacherInfo,
updateTeacher,
deleteTeacher,
deleteStudent,
readStudents,
readStudentInfo,
readTeacherInfo,
addStudent,
updateStudent,
updateTeacher
deleteStudent
};
Loading