From e1aba1122243a7e6a1cc26c507078f200e94b714 Mon Sep 17 00:00:00 2001 From: Tibo De Peuter Date: Sun, 23 Mar 2025 13:12:03 +0100 Subject: [PATCH] refactor: Arrays --- .../assignments/assignments.testdata.ts | 2 +- .../test_assets/assignments/groups.testdata.ts | 2 +- .../assignments/submission.testdata.ts | 2 +- .../classes/class-join-requests.testdata.ts | 2 +- .../test_assets/classes/classes.testdata.ts | 16 ++++++++-------- .../classes/teacher-invitations.testdata.ts | 2 +- .../test_assets/content/attachments.testdata.ts | 2 +- .../content/learning-objects.testdata.ts | 2 +- .../content/learning-paths.testdata.ts | 6 +++--- .../test_assets/questions/answers.testdata.ts | 2 +- .../test_assets/questions/questions.testdata.ts | 2 +- .../tests/test_assets/users/students.testdata.ts | 2 +- .../tests/test_assets/users/teachers.testdata.ts | 2 +- eslint.config.ts | 8 +++++++- 14 files changed, 29 insertions(+), 23 deletions(-) diff --git a/backend/tests/test_assets/assignments/assignments.testdata.ts b/backend/tests/test_assets/assignments/assignments.testdata.ts index 5a5a3d5e..8753b0ce 100644 --- a/backend/tests/test_assets/assignments/assignments.testdata.ts +++ b/backend/tests/test_assets/assignments/assignments.testdata.ts @@ -3,7 +3,7 @@ import { Assignment } from '../../../src/entities/assignments/assignment.entity' import { Class } from '../../../src/entities/classes/class.entity'; import { Language } from '../../../src/entities/content/language'; -export function makeTestAssignemnts(em: EntityManager, classes: Array): Array { +export function makeTestAssignemnts(em: EntityManager, classes: Class[]): Assignment[] { const assignment01 = em.create(Assignment, { within: classes[0], id: 1, diff --git a/backend/tests/test_assets/assignments/groups.testdata.ts b/backend/tests/test_assets/assignments/groups.testdata.ts index 199d6f48..a8ff8380 100644 --- a/backend/tests/test_assets/assignments/groups.testdata.ts +++ b/backend/tests/test_assets/assignments/groups.testdata.ts @@ -3,7 +3,7 @@ import { Group } from '../../../src/entities/assignments/group.entity'; import { Assignment } from '../../../src/entities/assignments/assignment.entity'; import { Student } from '../../../src/entities/users/student.entity'; -export function makeTestGroups(em: EntityManager, students: Array, assignments: Array): Array { +export function makeTestGroups(em: EntityManager, students: Student[], assignments: Assignment[]): Group[] { const group01 = em.create(Group, { assignment: assignments[0], groupNumber: 1, diff --git a/backend/tests/test_assets/assignments/submission.testdata.ts b/backend/tests/test_assets/assignments/submission.testdata.ts index 7b56a6cb..4fca5f9b 100644 --- a/backend/tests/test_assets/assignments/submission.testdata.ts +++ b/backend/tests/test_assets/assignments/submission.testdata.ts @@ -4,7 +4,7 @@ import { Language } from '../../../src/entities/content/language'; import { Student } from '../../../src/entities/users/student.entity'; import { Group } from '../../../src/entities/assignments/group.entity'; -export function makeTestSubmissions(em: EntityManager, students: Array, groups: Array): Array { +export function makeTestSubmissions(em: EntityManager, students: Student[], groups: Group[]): Submission[] { const submission01 = em.create(Submission, { learningObjectHruid: 'id03', learningObjectLanguage: Language.English, diff --git a/backend/tests/test_assets/classes/class-join-requests.testdata.ts b/backend/tests/test_assets/classes/class-join-requests.testdata.ts index f0e151ca..632fd392 100644 --- a/backend/tests/test_assets/classes/class-join-requests.testdata.ts +++ b/backend/tests/test_assets/classes/class-join-requests.testdata.ts @@ -3,7 +3,7 @@ import { ClassJoinRequest, ClassJoinRequestStatus } from '../../../src/entities/ import { Student } from '../../../src/entities/users/student.entity'; import { Class } from '../../../src/entities/classes/class.entity'; -export function makeTestClassJoinRequests(em: EntityManager, students: Array, classes: Array): Array { +export function makeTestClassJoinRequests(em: EntityManager, students: Student[], classes: Class[]): ClassJoinRequest[] { const classJoinRequest01 = em.create(ClassJoinRequest, { requester: students[4], class: classes[1], diff --git a/backend/tests/test_assets/classes/classes.testdata.ts b/backend/tests/test_assets/classes/classes.testdata.ts index e122d084..e4372015 100644 --- a/backend/tests/test_assets/classes/classes.testdata.ts +++ b/backend/tests/test_assets/classes/classes.testdata.ts @@ -3,9 +3,9 @@ import { Class } from '../../../src/entities/classes/class.entity'; import { Student } from '../../../src/entities/users/student.entity'; import { Teacher } from '../../../src/entities/users/teacher.entity'; -export function makeTestClasses(em: EntityManager, students: Array, teachers: Array): Array { +export function makeTestClasses(em: EntityManager, students: Student[], teachers: Teacher[]): Class[] { const studentsClass01 = students.slice(0, 7); - const teacherClass01: Array = teachers.slice(0, 1); + const teacherClass01: Teacher[] = teachers.slice(0, 1); const class01 = em.create(Class, { classId: 'id01', @@ -14,8 +14,8 @@ export function makeTestClasses(em: EntityManager, students: Array, tea students: studentsClass01, }); - const studentsClass02: Array = students.slice(0, 2).concat(students.slice(3, 4)); - const teacherClass02: Array = teachers.slice(1, 2); + const studentsClass02: Student[] = students.slice(0, 2).concat(students.slice(3, 4)); + const teacherClass02: Teacher[] = teachers.slice(1, 2); const class02 = em.create(Class, { classId: 'id02', @@ -24,8 +24,8 @@ export function makeTestClasses(em: EntityManager, students: Array, tea students: studentsClass02, }); - const studentsClass03: Array = students.slice(1, 4); - const teacherClass03: Array = teachers.slice(2, 3); + const studentsClass03: Student[] = students.slice(1, 4); + const teacherClass03: Teacher[] = teachers.slice(2, 3); const class03 = em.create(Class, { classId: 'id03', @@ -34,8 +34,8 @@ export function makeTestClasses(em: EntityManager, students: Array, tea students: studentsClass03, }); - const studentsClass04: Array = students.slice(0, 2); - const teacherClass04: Array = teachers.slice(2, 3); + const studentsClass04: Student[] = students.slice(0, 2); + const teacherClass04: Teacher[] = teachers.slice(2, 3); const class04 = em.create(Class, { classId: 'id04', diff --git a/backend/tests/test_assets/classes/teacher-invitations.testdata.ts b/backend/tests/test_assets/classes/teacher-invitations.testdata.ts index 35b471a4..68204a57 100644 --- a/backend/tests/test_assets/classes/teacher-invitations.testdata.ts +++ b/backend/tests/test_assets/classes/teacher-invitations.testdata.ts @@ -3,7 +3,7 @@ import { TeacherInvitation } from '../../../src/entities/classes/teacher-invitat import { Teacher } from '../../../src/entities/users/teacher.entity'; import { Class } from '../../../src/entities/classes/class.entity'; -export function makeTestTeacherInvitations(em: EntityManager, teachers: Array, classes: Array): Array { +export function makeTestTeacherInvitations(em: EntityManager, teachers: Teacher[], classes: Class[]): TeacherInvitation[] { const teacherInvitation01 = em.create(TeacherInvitation, { sender: teachers[1], receiver: teachers[0], diff --git a/backend/tests/test_assets/content/attachments.testdata.ts b/backend/tests/test_assets/content/attachments.testdata.ts index 22242a77..6bc46078 100644 --- a/backend/tests/test_assets/content/attachments.testdata.ts +++ b/backend/tests/test_assets/content/attachments.testdata.ts @@ -2,7 +2,7 @@ import { EntityManager } from '@mikro-orm/core'; import { Attachment } from '../../../src/entities/content/attachment.entity'; import { LearningObject } from '../../../src/entities/content/learning-object.entity'; -export function makeTestAttachments(em: EntityManager, learningObjects: Array): Array { +export function makeTestAttachments(em: EntityManager, learningObjects: LearningObject[]): Attachment[] { const attachment01 = em.create(Attachment, { learningObject: learningObjects[1], name: 'attachment01', diff --git a/backend/tests/test_assets/content/learning-objects.testdata.ts b/backend/tests/test_assets/content/learning-objects.testdata.ts index ba2c230a..bbca8830 100644 --- a/backend/tests/test_assets/content/learning-objects.testdata.ts +++ b/backend/tests/test_assets/content/learning-objects.testdata.ts @@ -4,7 +4,7 @@ import { Language } from '../../../src/entities/content/language'; import { DwengoContentType } from '../../../src/services/learning-objects/processing/content-type'; import { ReturnValue } from '../../../src/entities/content/return-value.entity'; -export function makeTestLearningObjects(em: EntityManager): Array { +export function makeTestLearningObjects(em: EntityManager): LearningObject[] { const returnValue: ReturnValue = new ReturnValue(); returnValue.callbackSchema = ''; returnValue.callbackUrl = ''; diff --git a/backend/tests/test_assets/content/learning-paths.testdata.ts b/backend/tests/test_assets/content/learning-paths.testdata.ts index 3b62b55c..e41773cc 100644 --- a/backend/tests/test_assets/content/learning-paths.testdata.ts +++ b/backend/tests/test_assets/content/learning-paths.testdata.ts @@ -4,7 +4,7 @@ import { Language } from '../../../src/entities/content/language'; import { LearningPathTransition } from '../../../src/entities/content/learning-path-transition.entity'; import { LearningPathNode } from '../../../src/entities/content/learning-path-node.entity'; -export function makeTestLearningPaths(em: EntityManager): Array { +export function makeTestLearningPaths(em: EntityManager): LearningPath[] { const learningPathNode01: LearningPathNode = new LearningPathNode(); const learningPathNode02: LearningPathNode = new LearningPathNode(); const learningPathNode03: LearningPathNode = new LearningPathNode(); @@ -67,7 +67,7 @@ export function makeTestLearningPaths(em: EntityManager): Array { learningPathNode05.transitions = [transitions05]; learningPathNode05.version = 1; - const nodes01: Array = [ + const nodes01: LearningPathNode[] = [ // LearningPathNode01, // LearningPathNode02, ]; @@ -81,7 +81,7 @@ export function makeTestLearningPaths(em: EntityManager): Array { nodes: nodes01, }); - const nodes02: Array = [ + const nodes02: LearningPathNode[] = [ // LearningPathNode03, // LearningPathNode04, // LearningPathNode05, diff --git a/backend/tests/test_assets/questions/answers.testdata.ts b/backend/tests/test_assets/questions/answers.testdata.ts index 4332a70f..ec15527f 100644 --- a/backend/tests/test_assets/questions/answers.testdata.ts +++ b/backend/tests/test_assets/questions/answers.testdata.ts @@ -3,7 +3,7 @@ import { Answer } from '../../../src/entities/questions/answer.entity'; import { Teacher } from '../../../src/entities/users/teacher.entity'; import { Question } from '../../../src/entities/questions/question.entity'; -export function makeTestAnswers(em: EntityManager, teachers: Array, questions: Array): Array { +export function makeTestAnswers(em: EntityManager, teachers: Teacher[], questions: Question[]): Answer[] { const answer01 = em.create(Answer, { author: teachers[0], toQuestion: questions[1], diff --git a/backend/tests/test_assets/questions/questions.testdata.ts b/backend/tests/test_assets/questions/questions.testdata.ts index 0c19109a..8604cf07 100644 --- a/backend/tests/test_assets/questions/questions.testdata.ts +++ b/backend/tests/test_assets/questions/questions.testdata.ts @@ -3,7 +3,7 @@ import { Question } from '../../../src/entities/questions/question.entity'; import { Language } from '../../../src/entities/content/language'; import { Student } from '../../../src/entities/users/student.entity'; -export function makeTestQuestions(em: EntityManager, students: Array): Array { +export function makeTestQuestions(em: EntityManager, students: Student[]): Question[] { const question01 = em.create(Question, { learningObjectLanguage: Language.English, learningObjectVersion: 1, diff --git a/backend/tests/test_assets/users/students.testdata.ts b/backend/tests/test_assets/users/students.testdata.ts index aff29913..7d69db9e 100644 --- a/backend/tests/test_assets/users/students.testdata.ts +++ b/backend/tests/test_assets/users/students.testdata.ts @@ -1,7 +1,7 @@ import { EntityManager } from '@mikro-orm/core'; import { Student } from '../../../src/entities/users/student.entity'; -export function makeTestStudents(em: EntityManager): Array { +export function makeTestStudents(em: EntityManager): Student[] { const student01 = em.create(Student, { username: 'Noordkaap', firstName: 'Stijn', diff --git a/backend/tests/test_assets/users/teachers.testdata.ts b/backend/tests/test_assets/users/teachers.testdata.ts index 7e519f7d..8e791bb1 100644 --- a/backend/tests/test_assets/users/teachers.testdata.ts +++ b/backend/tests/test_assets/users/teachers.testdata.ts @@ -1,7 +1,7 @@ import { Teacher } from '../../../src/entities/users/teacher.entity'; import { EntityManager } from '@mikro-orm/core'; -export function makeTestTeachers(em: EntityManager): Array { +export function makeTestTeachers(em: EntityManager): Teacher[] { const teacher01 = em.create(Teacher, { username: 'FooFighters', firstName: 'Dave', diff --git a/eslint.config.ts b/eslint.config.ts index 5a23b135..a262f812 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -32,6 +32,8 @@ export default [ reportUnusedInlineConfigs: 'error', }, rules: { + '@typescript-eslint/array-type': 'warn', + 'consistent-return': 'off', '@typescript-eslint/consistent-return': 'off', '@typescript-eslint/consistent-type-assertions': 'error', @@ -67,6 +69,9 @@ export default [ leadingUnderscore: 'allow', } ], + 'no-array-constructor': 'off', + '@typescript-eslint/no-array-constructor': 'error', + '@typescript-eslint/no-array-delete': 'error', 'no-dupe-class-members': 'off', '@typescript-eslint/no-dupe-class-members': 'off', @@ -118,6 +123,8 @@ export default [ '@typescript-eslint/promise-function-async': 'warn', + '@typescript-eslint/require-array-sort-compare': 'warn', + 'no-await-in-loop': 'warn', 'no-constructor-return': 'error', 'no-inner-declarations': 'error', @@ -143,7 +150,6 @@ export default [ 'logical-assignment-operators': 'warn', 'max-classes-per-file': 'warn', 'no-alert': 'error', - 'no-array-constructor': 'warn', 'no-bitwise': 'warn', 'no-console': 'warn', 'no-continue': 'warn',