diff --git a/backend/package.json b/backend/package.json index 3a89eb87..40d49982 100644 --- a/backend/package.json +++ b/backend/package.json @@ -12,7 +12,7 @@ "format": "prettier --write src/", "format-check": "prettier --check src/", "lint": "eslint . --fix", - "pretest:unit": "npm run build", + "pretest:unit": "tsx ../docs/api/generate.ts && npm run build", "test:unit": "vitest --run" }, "dependencies": { diff --git a/backend/src/controllers/teacher-invitations.ts b/backend/src/controllers/teacher-invitations.ts index 4956f3e2..5f003f7f 100644 --- a/backend/src/controllers/teacher-invitations.ts +++ b/backend/src/controllers/teacher-invitations.ts @@ -1,6 +1,6 @@ import { Request, Response } from 'express'; -import { requireFields } from './error-helper'; -import { createInvitation, deleteInvitation, getAllInvitations, getInvitation, updateInvitation } from '../services/teacher-invitations'; +import { requireFields } from './error-helper.js'; +import { createInvitation, deleteInvitation, getAllInvitations, getInvitation, updateInvitation } from '../services/teacher-invitations.js'; import { TeacherInvitationData } from '@dwengo-1/common/interfaces/teacher-invitation'; export async function getAllInvitationsHandler(req: Request, res: Response): Promise { diff --git a/backend/src/interfaces/group.ts b/backend/src/interfaces/group.ts index 2a8287a3..792086d4 100644 --- a/backend/src/interfaces/group.ts +++ b/backend/src/interfaces/group.ts @@ -8,7 +8,7 @@ import { getGroupRepository } from '../data/repositories.js'; import { AssignmentDTO } from '@dwengo-1/common/interfaces/assignment'; import { Class } from '../entities/classes/class.entity.js'; import { StudentDTO } from '@dwengo-1/common/interfaces/student'; -import { mapToClassDTO } from './class'; +import { mapToClassDTO } from './class.js'; export function mapToGroup(groupDto: GroupDTO, clazz: Class): Group { const assignmentDto = groupDto.assignment as AssignmentDTO; diff --git a/backend/src/interfaces/submission.ts b/backend/src/interfaces/submission.ts index aa88f4a1..e179d458 100644 --- a/backend/src/interfaces/submission.ts +++ b/backend/src/interfaces/submission.ts @@ -2,9 +2,9 @@ import { Submission } from '../entities/assignments/submission.entity.js'; import { mapToGroupDTO } from './group.js'; import { mapToStudentDTO } from './student.js'; import { SubmissionDTO, SubmissionDTOId } from '@dwengo-1/common/interfaces/submission'; -import { getSubmissionRepository } from '../data/repositories'; -import { Student } from '../entities/users/student.entity'; -import { Group } from '../entities/assignments/group.entity'; +import { getSubmissionRepository } from '../data/repositories.js'; +import { Student } from '../entities/users/student.entity.js'; +import { Group } from '../entities/assignments/group.entity.js'; export function mapToSubmissionDTO(submission: Submission): SubmissionDTO { return { diff --git a/backend/src/interfaces/teacher-invitation.ts b/backend/src/interfaces/teacher-invitation.ts index 8fef17af..88b66f7a 100644 --- a/backend/src/interfaces/teacher-invitation.ts +++ b/backend/src/interfaces/teacher-invitation.ts @@ -1,9 +1,9 @@ import { TeacherInvitation } from '../entities/classes/teacher-invitation.entity.js'; import { mapToUserDTO } from './user.js'; import { TeacherInvitationDTO } from '@dwengo-1/common/interfaces/teacher-invitation'; -import { getTeacherInvitationRepository } from '../data/repositories'; -import { Teacher } from '../entities/users/teacher.entity'; -import { Class } from '../entities/classes/class.entity'; +import { getTeacherInvitationRepository } from '../data/repositories.js'; +import { Teacher } from '../entities/users/teacher.entity.js'; +import { Class } from '../entities/classes/class.entity.js'; import { ClassStatus } from '@dwengo-1/common/util/class-join-request'; export function mapToTeacherInvitationDTO(invitation: TeacherInvitation): TeacherInvitationDTO { diff --git a/backend/src/routes/teacher-invitations.ts b/backend/src/routes/teacher-invitations.ts index 772b1351..23b943d0 100644 --- a/backend/src/routes/teacher-invitations.ts +++ b/backend/src/routes/teacher-invitations.ts @@ -5,7 +5,7 @@ import { getAllInvitationsHandler, getInvitationHandler, updateInvitationHandler, -} from '../controllers/teacher-invitations'; +} from '../controllers/teacher-invitations.js'; const router = express.Router({ mergeParams: true }); diff --git a/backend/src/services/questions.ts b/backend/src/services/questions.ts index 49bf9e92..a16c277b 100644 --- a/backend/src/services/questions.ts +++ b/backend/src/services/questions.ts @@ -10,7 +10,7 @@ import { AnswerDTO, AnswerId } from '@dwengo-1/common/interfaces/answer'; import { mapToAssignment } from '../interfaces/assignment.js'; import { AssignmentDTO } from '@dwengo-1/common/interfaces/assignment'; import { fetchStudent } from './students.js'; -import { NotFoundException } from '../exceptions/not-found-exception'; +import { NotFoundException } from '../exceptions/not-found-exception.js'; import { FALLBACK_VERSION_NUM } from '../config.js'; export async function getQuestionsAboutLearningObjectInAssignment( diff --git a/backend/src/services/teacher-invitations.ts b/backend/src/services/teacher-invitations.ts index 07f61bae..aead8715 100644 --- a/backend/src/services/teacher-invitations.ts +++ b/backend/src/services/teacher-invitations.ts @@ -1,11 +1,11 @@ -import { fetchTeacher } from './teachers'; -import { getTeacherInvitationRepository } from '../data/repositories'; -import { mapToInvitation, mapToTeacherInvitationDTO } from '../interfaces/teacher-invitation'; -import { addClassTeacher, fetchClass } from './classes'; +import { fetchTeacher } from './teachers.js'; +import { getTeacherInvitationRepository } from '../data/repositories.js'; +import { mapToInvitation, mapToTeacherInvitationDTO } from '../interfaces/teacher-invitation.js'; +import { addClassTeacher, fetchClass } from './classes.js'; import { TeacherInvitationData, TeacherInvitationDTO } from '@dwengo-1/common/interfaces/teacher-invitation'; -import { ConflictException } from '../exceptions/conflict-exception'; -import { NotFoundException } from '../exceptions/not-found-exception'; -import { TeacherInvitation } from '../entities/classes/teacher-invitation.entity'; +import { ConflictException } from '../exceptions/conflict-exception.js'; +import { NotFoundException } from '../exceptions/not-found-exception.js'; +import { TeacherInvitation } from '../entities/classes/teacher-invitation.entity.js'; import { ClassStatus } from '@dwengo-1/common/util/class-join-request'; export async function getAllInvitations(username: string, sent: boolean): Promise { diff --git a/frontend/eslint.config.ts b/frontend/eslint.config.ts index 9ca1a08b..b7f15371 100644 --- a/frontend/eslint.config.ts +++ b/frontend/eslint.config.ts @@ -21,7 +21,14 @@ const vueConfig = defineConfigWithVueTs( { name: "app/files-to-ignore", - ignores: ["**/dist/**", "**/dist-ssr/**", "**/coverage/**", "prettier.config.js"], + ignores: [ + "**/dist/**", + "**/dist-ssr/**", + "**/coverage/**", + "prettier.config.js", + "**/test-results/**", + "**/playwright-report/**", + ], }, pluginVue.configs["flat/essential"], diff --git a/frontend/src/components/MenuBar.vue b/frontend/src/components/MenuBar.vue index 328d607a..847dca84 100644 --- a/frontend/src/components/MenuBar.vue +++ b/frontend/src/components/MenuBar.vue @@ -80,13 +80,14 @@ > {{ t("classes") }} - - {{ t("discussions") }} - + + + + + + + +