From 678ced55ba36d3bbb5c93c5b470e8e3920a2bbc7 Mon Sep 17 00:00:00 2001 From: Laure Jablonski Date: Mon, 10 Mar 2025 21:01:09 +0100 Subject: [PATCH] style: verander de structuur van de testmap --- .../{ => assignments}/assignments.test.ts | 8 +- .../data/{ => assignments}/groups.test.ts | 11 +- .../{ => assignments}/submissions.test.ts | 21 +- .../{ => classes}/class-join-request.test.ts | 14 +- .../tests/data/{ => classes}/classes.test.ts | 6 +- .../{ => classes}/teacher-invitation.test.ts | 10 +- .../data/{ => content}/attachments.test.ts | 12 +- .../{ => content}/learning-objects.test.ts | 10 +- .../data/{ => content}/learning-paths.test.ts | 8 +- .../data/{ => questions}/answers.test.ts | 16 +- .../data/{ => questions}/questions.test.ts | 16 +- .../tests/data/{ => users}/students.test.ts | 8 +- .../tests/data/{ => users}/teachers.test.ts | 8 +- backend/tests/setup-tests.ts | 676 ++---------------- .../assignments/assignments.testdata.ts | 41 ++ .../assignments/groups.testdata.ts | 36 + .../assignments/submission.testdata.ts | 71 ++ .../classes/class-join-requests.testdata.ts | 44 ++ .../test_assets/classes/classes.testdata.ts | 54 ++ .../classes/teacher-invitations.testdata.ts | 41 ++ .../content/attachments.testdata.ts | 17 + .../content/learning-objects.testdata.ts | 149 ++++ .../content/learning-paths.testdata.ts | 104 +++ .../test_assets/questions/answers.testdata.ts | 36 + .../questions/questions.testdata.ts | 51 ++ .../test_assets/users/students.testdata.ts | 59 ++ .../test_assets/users/teachers.testdata.ts | 33 + 27 files changed, 854 insertions(+), 706 deletions(-) rename backend/tests/data/{ => assignments}/assignments.test.ts (85%) rename backend/tests/data/{ => assignments}/groups.test.ts (82%) rename backend/tests/data/{ => assignments}/submissions.test.ts (77%) rename backend/tests/data/{ => classes}/class-join-request.test.ts (77%) rename backend/tests/data/{ => classes}/classes.test.ts (81%) rename backend/tests/data/{ => classes}/teacher-invitation.test.ts (86%) rename backend/tests/data/{ => content}/attachments.test.ts (67%) rename backend/tests/data/{ => content}/learning-objects.test.ts (73%) rename backend/tests/data/{ => content}/learning-paths.test.ts (77%) rename backend/tests/data/{ => questions}/answers.test.ts (81%) rename backend/tests/data/{ => questions}/questions.test.ts (76%) rename backend/tests/data/{ => users}/students.test.ts (84%) rename backend/tests/data/{ => users}/teachers.test.ts (85%) create mode 100644 backend/tests/test_assets/assignments/assignments.testdata.ts create mode 100644 backend/tests/test_assets/assignments/groups.testdata.ts create mode 100644 backend/tests/test_assets/assignments/submission.testdata.ts create mode 100644 backend/tests/test_assets/classes/class-join-requests.testdata.ts create mode 100644 backend/tests/test_assets/classes/classes.testdata.ts create mode 100644 backend/tests/test_assets/classes/teacher-invitations.testdata.ts create mode 100644 backend/tests/test_assets/content/attachments.testdata.ts create mode 100644 backend/tests/test_assets/content/learning-objects.testdata.ts create mode 100644 backend/tests/test_assets/content/learning-paths.testdata.ts create mode 100644 backend/tests/test_assets/questions/answers.testdata.ts create mode 100644 backend/tests/test_assets/questions/questions.testdata.ts create mode 100644 backend/tests/test_assets/users/students.testdata.ts create mode 100644 backend/tests/test_assets/users/teachers.testdata.ts diff --git a/backend/tests/data/assignments.test.ts b/backend/tests/data/assignments/assignments.test.ts similarity index 85% rename from backend/tests/data/assignments.test.ts rename to backend/tests/data/assignments/assignments.test.ts index 1048ce95..d091722f 100644 --- a/backend/tests/data/assignments.test.ts +++ b/backend/tests/data/assignments/assignments.test.ts @@ -1,11 +1,11 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { setupTestApp } from '../setup-tests'; -import { AssignmentRepository } from '../../src/data/assignments/assignment-repository'; +import { setupTestApp } from '../../setup-tests'; +import { AssignmentRepository } from '../../../src/data/assignments/assignment-repository'; import { getAssignmentRepository, getClassRepository, -} from '../../src/data/repositories'; -import { ClassRepository } from '../../src/data/classes/class-repository'; +} from '../../../src/data/repositories'; +import { ClassRepository } from '../../../src/data/classes/class-repository'; describe('AssignmentRepository', () => { let assignmentRepository: AssignmentRepository; diff --git a/backend/tests/data/groups.test.ts b/backend/tests/data/assignments/groups.test.ts similarity index 82% rename from backend/tests/data/groups.test.ts rename to backend/tests/data/assignments/groups.test.ts index a1e749f8..d82f7e1f 100644 --- a/backend/tests/data/groups.test.ts +++ b/backend/tests/data/assignments/groups.test.ts @@ -1,14 +1,13 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { setupTestApp } from '../setup-tests'; -import { GroupRepository } from '../../src/data/assignments/group-repository'; +import { setupTestApp } from '../../setup-tests'; +import { GroupRepository } from '../../../src/data/assignments/group-repository'; import { getAssignmentRepository, getClassRepository, getGroupRepository, -} from '../../src/data/repositories'; -import { AssignmentRepository } from '../../src/data/assignments/assignment-repository'; -import { ClassRepository } from '../../src/data/classes/class-repository'; -import { Class } from '../../src/entities/classes/class.entity'; +} from '../../../src/data/repositories'; +import { AssignmentRepository } from '../../../src/data/assignments/assignment-repository'; +import { ClassRepository } from '../../../src/data/classes/class-repository'; describe('GroupRepository', () => { let groupRepository: GroupRepository; diff --git a/backend/tests/data/submissions.test.ts b/backend/tests/data/assignments/submissions.test.ts similarity index 77% rename from backend/tests/data/submissions.test.ts rename to backend/tests/data/assignments/submissions.test.ts index 3c7265b8..16b74a32 100644 --- a/backend/tests/data/submissions.test.ts +++ b/backend/tests/data/assignments/submissions.test.ts @@ -1,22 +1,19 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { setupTestApp } from '../setup-tests'; -import { SubmissionRepository } from '../../src/data/assignments/submission-repository'; +import { setupTestApp } from '../../setup-tests'; +import { SubmissionRepository } from '../../../src/data/assignments/submission-repository'; import { getAssignmentRepository, getClassRepository, getGroupRepository, getStudentRepository, getSubmissionRepository, -} from '../../src/data/repositories'; -import { LearningObject } from '../../src/entities/content/learning-object.entity'; -import { LearningObjectIdentifier } from '../../src/entities/content/learning-object-identifier'; -import { Language } from '../../src/entities/content/language'; -import { subscribe } from 'diagnostics_channel'; -import { Student } from '../../src/entities/users/student.entity'; -import { StudentRepository } from '../../src/data/users/student-repository'; -import { GroupRepository } from '../../src/data/assignments/group-repository'; -import { AssignmentRepository } from '../../src/data/assignments/assignment-repository'; -import { ClassRepository } from '../../src/data/classes/class-repository'; +} from '../../../src/data/repositories'; +import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier'; +import { Language } from '../../../src/entities/content/language'; +import { StudentRepository } from '../../../src/data/users/student-repository'; +import { GroupRepository } from '../../../src/data/assignments/group-repository'; +import { AssignmentRepository } from '../../../src/data/assignments/assignment-repository'; +import { ClassRepository } from '../../../src/data/classes/class-repository'; describe('SubmissionRepository', () => { let submissionRepository: SubmissionRepository; diff --git a/backend/tests/data/class-join-request.test.ts b/backend/tests/data/classes/class-join-request.test.ts similarity index 77% rename from backend/tests/data/class-join-request.test.ts rename to backend/tests/data/classes/class-join-request.test.ts index 771fdcdc..23aabcb6 100644 --- a/backend/tests/data/class-join-request.test.ts +++ b/backend/tests/data/classes/class-join-request.test.ts @@ -1,15 +1,15 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { setupTestApp } from '../setup-tests'; -import { ClassJoinRequestRepository } from '../../src/data/classes/class-join-request-repository'; +import { setupTestApp } from '../../setup-tests'; +import { ClassJoinRequestRepository } from '../../../src/data/classes/class-join-request-repository'; import { getClassJoinRequestRepository, getClassRepository, getStudentRepository, -} from '../../src/data/repositories'; -import { StudentRepository } from '../../src/data/users/student-repository'; -import { Class } from '../../src/entities/classes/class.entity'; -import { ClassRepository } from '../../src/data/classes/class-repository'; -import { Student } from '../../src/entities/users/student.entity'; +} from '../../../src/data/repositories'; +import { StudentRepository } from '../../../src/data/users/student-repository'; +import { Class } from '../../../src/entities/classes/class.entity'; +import { ClassRepository } from '../../../src/data/classes/class-repository'; +import { Student } from '../../../src/entities/users/student.entity'; describe('ClassJoinRequestRepository', () => { let classJoinRequestRepository: ClassJoinRequestRepository; diff --git a/backend/tests/data/classes.test.ts b/backend/tests/data/classes/classes.test.ts similarity index 81% rename from backend/tests/data/classes.test.ts rename to backend/tests/data/classes/classes.test.ts index 442cbd23..22306ba6 100644 --- a/backend/tests/data/classes.test.ts +++ b/backend/tests/data/classes/classes.test.ts @@ -1,7 +1,7 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { ClassRepository } from '../../src/data/classes/class-repository'; -import { setupTestApp } from '../setup-tests'; -import { getClassRepository } from '../../src/data/repositories'; +import { ClassRepository } from '../../../src/data/classes/class-repository'; +import { setupTestApp } from '../../setup-tests'; +import { getClassRepository } from '../../../src/data/repositories'; describe('ClassRepository', () => { let classRepository: ClassRepository; diff --git a/backend/tests/data/teacher-invitation.test.ts b/backend/tests/data/classes/teacher-invitation.test.ts similarity index 86% rename from backend/tests/data/teacher-invitation.test.ts rename to backend/tests/data/classes/teacher-invitation.test.ts index 9fe5712f..f5257286 100644 --- a/backend/tests/data/teacher-invitation.test.ts +++ b/backend/tests/data/classes/teacher-invitation.test.ts @@ -1,13 +1,13 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { setupTestApp } from '../setup-tests'; +import { setupTestApp } from '../../setup-tests'; import { getClassRepository, getTeacherInvitationRepository, getTeacherRepository, -} from '../../src/data/repositories'; -import { TeacherInvitationRepository } from '../../src/data/classes/teacher-invitation-repository'; -import { TeacherRepository } from '../../src/data/users/teacher-repository'; -import { ClassRepository } from '../../src/data/classes/class-repository'; +} from '../../../src/data/repositories'; +import { TeacherInvitationRepository } from '../../../src/data/classes/teacher-invitation-repository'; +import { TeacherRepository } from '../../../src/data/users/teacher-repository'; +import { ClassRepository } from '../../../src/data/classes/class-repository'; describe('ClassRepository', () => { let teacherInvitationRepository: TeacherInvitationRepository; diff --git a/backend/tests/data/attachments.test.ts b/backend/tests/data/content/attachments.test.ts similarity index 67% rename from backend/tests/data/attachments.test.ts rename to backend/tests/data/content/attachments.test.ts index 82be74d9..a5a3d35f 100644 --- a/backend/tests/data/attachments.test.ts +++ b/backend/tests/data/content/attachments.test.ts @@ -1,13 +1,13 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { setupTestApp } from '../setup-tests'; +import { setupTestApp } from '../../setup-tests'; import { getAttachmentRepository, getLearningObjectRepository, -} from '../../src/data/repositories'; -import { AttachmentRepository } from '../../src/data/content/attachment-repository'; -import { LearningObjectRepository } from '../../src/data/content/learning-object-repository'; -import { LearningObjectIdentifier } from '../../src/entities/content/learning-object-identifier'; -import { Language } from '../../src/entities/content/language'; +} from '../../../src/data/repositories'; +import { AttachmentRepository } from '../../../src/data/content/attachment-repository'; +import { LearningObjectRepository } from '../../../src/data/content/learning-object-repository'; +import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier'; +import { Language } from '../../../src/entities/content/language'; describe('AttachmentRepository', () => { let attachmentRepository: AttachmentRepository; diff --git a/backend/tests/data/learning-objects.test.ts b/backend/tests/data/content/learning-objects.test.ts similarity index 73% rename from backend/tests/data/learning-objects.test.ts rename to backend/tests/data/content/learning-objects.test.ts index 40a3adb7..629aa318 100644 --- a/backend/tests/data/learning-objects.test.ts +++ b/backend/tests/data/content/learning-objects.test.ts @@ -1,9 +1,9 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { LearningObjectRepository } from '../../src/data/content/learning-object-repository'; -import { getLearningObjectRepository } from '../../src/data/repositories'; -import { setupTestApp } from '../setup-tests'; -import { LearningObjectIdentifier } from '../../src/entities/content/learning-object-identifier'; -import { Language } from '../../src/entities/content/language'; +import { LearningObjectRepository } from '../../../src/data/content/learning-object-repository'; +import { getLearningObjectRepository } from '../../../src/data/repositories'; +import { setupTestApp } from '../../setup-tests'; +import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier'; +import { Language } from '../../../src/entities/content/language'; describe('LearningObjectRepository', () => { let learningObjectRepository: LearningObjectRepository; diff --git a/backend/tests/data/learning-paths.test.ts b/backend/tests/data/content/learning-paths.test.ts similarity index 77% rename from backend/tests/data/learning-paths.test.ts rename to backend/tests/data/content/learning-paths.test.ts index 9cd68ffe..984fd995 100644 --- a/backend/tests/data/learning-paths.test.ts +++ b/backend/tests/data/content/learning-paths.test.ts @@ -1,8 +1,8 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { getLearningPathRepository } from '../../src/data/repositories'; -import { LearningPathRepository } from '../../src/data/content/learning-path-repository'; -import { setupTestApp } from '../setup-tests'; -import { Language } from '../../src/entities/content/language'; +import { getLearningPathRepository } from '../../../src/data/repositories'; +import { LearningPathRepository } from '../../../src/data/content/learning-path-repository'; +import { setupTestApp } from '../../setup-tests'; +import { Language } from '../../../src/entities/content/language'; describe('LearningPathRepository', () => { let learningPathRepository: LearningPathRepository; diff --git a/backend/tests/data/answers.test.ts b/backend/tests/data/questions/answers.test.ts similarity index 81% rename from backend/tests/data/answers.test.ts rename to backend/tests/data/questions/answers.test.ts index 52956b6e..6ee63d2e 100644 --- a/backend/tests/data/answers.test.ts +++ b/backend/tests/data/questions/answers.test.ts @@ -1,16 +1,16 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { setupTestApp } from '../setup-tests'; -import { AnswerRepository } from '../../src/data/questions/answer-repository'; +import { setupTestApp } from '../../setup-tests'; +import { AnswerRepository } from '../../../src/data/questions/answer-repository'; import { getAnswerRepository, getQuestionRepository, getTeacherRepository, -} from '../../src/data/repositories'; -import { QuestionRepository } from '../../src/data/questions/question-repository'; -import { LearningObjectIdentifier } from '../../src/entities/content/learning-object-identifier'; -import { Language } from '../../src/entities/content/language'; -import { Question } from '../../src/entities/questions/question.entity'; -import { TeacherRepository } from '../../src/data/users/teacher-repository'; +} from '../../../src/data/repositories'; +import { QuestionRepository } from '../../../src/data/questions/question-repository'; +import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier'; +import { Language } from '../../../src/entities/content/language'; +import { Question } from '../../../src/entities/questions/question.entity'; +import { TeacherRepository } from '../../../src/data/users/teacher-repository'; describe('AnswerRepository', () => { let answerRepository: AnswerRepository; diff --git a/backend/tests/data/questions.test.ts b/backend/tests/data/questions/questions.test.ts similarity index 76% rename from backend/tests/data/questions.test.ts rename to backend/tests/data/questions/questions.test.ts index 0060b996..ad47e5b3 100644 --- a/backend/tests/data/questions.test.ts +++ b/backend/tests/data/questions/questions.test.ts @@ -1,16 +1,16 @@ import { beforeAll, describe, expect, it } from 'vitest'; -import { setupTestApp } from '../setup-tests'; -import { QuestionRepository } from '../../src/data/questions/question-repository'; +import { setupTestApp } from '../../setup-tests'; +import { QuestionRepository } from '../../../src/data/questions/question-repository'; import { getLearningObjectRepository, getQuestionRepository, getStudentRepository, -} from '../../src/data/repositories'; -import { StudentRepository } from '../../src/data/users/student-repository'; -import { LearningObjectRepository } from '../../src/data/content/learning-object-repository'; -import { LearningObjectIdentifier } from '../../src/entities/content/learning-object-identifier'; -import { Language } from '../../src/entities/content/language'; -import { Question } from '../../src/entities/questions/question.entity'; +} from '../../../src/data/repositories'; +import { StudentRepository } from '../../../src/data/users/student-repository'; +import { LearningObjectRepository } from '../../../src/data/content/learning-object-repository'; +import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier'; +import { Language } from '../../../src/entities/content/language'; +import { Question } from '../../../src/entities/questions/question.entity'; describe('QuestionRepository', () => { let questionRepository: QuestionRepository; diff --git a/backend/tests/data/students.test.ts b/backend/tests/data/users/students.test.ts similarity index 84% rename from backend/tests/data/students.test.ts rename to backend/tests/data/users/students.test.ts index ce1ee586..9fa52819 100644 --- a/backend/tests/data/students.test.ts +++ b/backend/tests/data/users/students.test.ts @@ -1,8 +1,8 @@ -import { setupTestApp } from '../setup-tests.js'; -import { Student } from '../../src/entities/users/student.entity.js'; +import { setupTestApp } from '../../setup-tests.js'; +import { Student } from '../../../src/entities/users/student.entity.js'; import { describe, it, expect, beforeAll } from 'vitest'; -import { StudentRepository } from '../../src/data/users/student-repository.js'; -import { getStudentRepository } from '../../src/data/repositories.js'; +import { StudentRepository } from '../../../src/data/users/student-repository.js'; +import { getStudentRepository } from '../../../src/data/repositories.js'; const username = 'teststudent'; const firstName = 'John'; diff --git a/backend/tests/data/teachers.test.ts b/backend/tests/data/users/teachers.test.ts similarity index 85% rename from backend/tests/data/teachers.test.ts rename to backend/tests/data/users/teachers.test.ts index eba34946..5aa69907 100644 --- a/backend/tests/data/teachers.test.ts +++ b/backend/tests/data/users/teachers.test.ts @@ -1,8 +1,8 @@ -import { setupTestApp } from '../setup-tests.js'; import { describe, it, expect, beforeAll } from 'vitest'; -import { TeacherRepository } from '../../src/data/users/teacher-repository.js'; -import { Teacher } from '../../src/entities/users/teacher.entity.js'; -import { getTeacherRepository } from '../../src/data/repositories.js'; +import { TeacherRepository } from '../../../src/data/users/teacher-repository'; +import { setupTestApp } from '../../setup-tests'; +import { getTeacherRepository } from '../../../src/data/repositories'; +import { Teacher } from '../../../src/entities/users/teacher.entity'; const username = 'testteacher'; const firstName = 'John'; diff --git a/backend/tests/setup-tests.ts b/backend/tests/setup-tests.ts index 92e886bf..5f1bcbfd 100644 --- a/backend/tests/setup-tests.ts +++ b/backend/tests/setup-tests.ts @@ -1,30 +1,18 @@ -import { Assignment } from '../src/entities/assignments/assignment.entity.js'; -import { Group } from '../src/entities/assignments/group.entity.js'; -import { Submission } from '../src/entities/assignments/submission.entity.js'; -import { - ClassJoinRequest, - ClassJoinRequestStatus, -} from '../src/entities/classes/class-join-request.entity.js'; -import { Class } from '../src/entities/classes/class.entity.js'; -import { TeacherInvitation } from '../src/entities/classes/teacher-invitation.entity.js'; -import { Attachment } from '../src/entities/content/attachment.entity.js'; -import { Language } from '../src/entities/content/language.js'; -import { - ContentType, - LearningObject, - ReturnValue, -} from '../src/entities/content/learning-object.entity.js'; -import { - LearningPath, - LearningPathNode, - LearningPathTransition, -} from '../src/entities/content/learning-path.entity.js'; -import { Answer } from '../src/entities/questions/answer.entity.js'; -import { Question } from '../src/entities/questions/question.entity.js'; -import { Student } from '../src/entities/users/student.entity.js'; -import { Teacher } from '../src/entities/users/teacher.entity.js'; import { forkEntityManager, initORM } from '../src/orm.js'; import dotenv from 'dotenv'; +import { makeTestStudents } from './test_assets/users/students.testdata.js'; +import { makeTestTeachers } from './test_assets/users/teachers.testdata.js'; +import { makeTestLearningObjects } from './test_assets/content/learning-objects.testdata.js'; +import { makeTestLearningPaths } from './test_assets/content/learning-paths.testdata.js'; +import { makeTestClasses } from './test_assets/classes/classes.testdata.js'; +import { makeTestAssignemnts } from './test_assets/assignments/assignments.testdata.js'; +import { makeTestGroups } from './test_assets/assignments/groups.testdata.js'; +import { makeTestTeacherInvitations } from './test_assets/classes/teacher-invitations.testdata.js'; +import { makeTestClassJoinRequests } from './test_assets/classes/class-join-requests.testdata.js'; +import { makeTestAttachments } from './test_assets/content/attachments.testdata.js'; +import { makeTestQuestions } from './test_assets/questions/questions.testdata.js'; +import { makeTestAnswers } from './test_assets/questions/answers.testdata.js'; +import { makeTestSubmissions } from './test_assets/assignments/submission.testdata.js'; export async function setupTestApp() { dotenv.config({ path: '.env.test' }); @@ -32,616 +20,44 @@ export async function setupTestApp() { const em = forkEntityManager(); - const student01 = em.create(Student, { - username: 'Noordkaap', - firstName: 'Stijn', - lastName: 'Meuris', - }); + const students = makeTestStudents(em); + const teachers = makeTestTeachers(em); + const learningObjects = makeTestLearningObjects(em); + const learningPaths = makeTestLearningPaths(em); + const classes = makeTestClasses(em, students, teachers); + const assignments = makeTestAssignemnts(em, classes); + const groups = makeTestGroups(em, students, assignments); - const student02 = em.create(Student, { - username: 'DireStraits', - firstName: 'Mark', - lastName: 'Knopfler', - }); + assignments[0].groups = groups.slice(0, 3); + assignments[1].groups = groups.slice(3, 4); - const student03 = em.create(Student, { - username: 'Tool', - firstName: 'Maynard', - lastName: 'Keenan', - }); + const teacherInvitations = makeTestTeacherInvitations( + em, + teachers, + classes + ); + const classJoinRequests = makeTestClassJoinRequests(em, students, classes); + const attachments = makeTestAttachments(em, learningObjects); - const student04 = em.create(Student, { - username: 'SmashingPumpkins', - firstName: 'Billy', - lastName: 'Corgan', - }); + learningObjects[1].attachments = attachments; - const student05 = em.create(Student, { - username: 'PinkFloyd', - firstName: 'David', - lastName: 'Gilmoure', - }); - - const student06 = em.create(Student, { - username: 'TheDoors', - firstName: 'Jim', - lastName: 'Morisson', - }); - - const student07 = em.create(Student, { - username: 'Nirvana', - firstName: 'Kurt', - lastName: 'Cobain', - }); - - const teacher01 = em.create(Teacher, { - username: 'FooFighters', - firstName: 'Dave', - lastName: 'Grohl', - }); - - const teacher02 = em.create(Teacher, { - username: 'LimpBizkit', - firstName: 'Fred', - lastName: 'Durst', - }); - - const teacher03 = em.create(Teacher, { - username: 'Staind', - firstName: 'Aaron', - lastName: 'Lewis', - }); - - const teacher04 = em.create(Teacher, { - username: 'ZesdeMetaal', - firstName: 'Wannes', - lastName: 'Cappelle', - }); - - const returnValue: ReturnValue = new ReturnValue(); - returnValue.callbackSchema = ''; - returnValue.callbackUrl = ''; - const learningObject01 = em.create(LearningObject, { - hruid: 'id01', - language: Language.English, - version: '1', - admins: [], - title: 'Undertow', - description: 'debute', - contentType: ContentType.Markdown, - keywords: [], - teacherExclusive: false, - skosConcepts: [], - educationalGoals: [], - copyright: '', - license: '', - estimatedTime: 45, - returnValue: returnValue, - available: true, - contentLocation: '', - attachments: [], - content: Buffer.from( - "there's a shadow just behind me, shrouding every step i take, making every promise empty pointing every finger at me" - ), - }); - - const learningObject02 = em.create(LearningObject, { - hruid: 'id02', - language: Language.English, - version: '1', - admins: [], - title: 'Aenema', - description: 'second album', - contentType: ContentType.Markdown, - keywords: [], - teacherExclusive: false, - skosConcepts: [], - educationalGoals: [], - copyright: '', - license: '', - estimatedTime: 80, - returnValue: returnValue, - available: true, - contentLocation: '', - attachments: [], - content: Buffer.from( - "I've been crawling on my belly clearing out what could've been I've been wallowing in my own confused and insecure delusions" - ), - }); - - const learningObject03 = em.create(LearningObject, { - hruid: 'id03', - language: Language.English, - version: '1', - admins: [], - title: 'love over gold', - description: 'third album', - contentType: ContentType.Markdown, - keywords: [], - teacherExclusive: false, - skosConcepts: [], - educationalGoals: [], - copyright: '', - license: '', - estimatedTime: 55, - returnValue: returnValue, - available: true, - contentLocation: '', - attachments: [], - content: Buffer.from( - 'he wrote me a prescription, he said you are depressed, \ - but I am glad you came to see me to get this off your chest, \ - come back and see me later next patient please \ - send in another victim of industrial disease' - ), - }); - - const learningObject04 = em.create(LearningObject, { - hruid: 'id04', - language: Language.English, - version: '1', - admins: [], - title: 'making movies', - description: 'fifth album', - contentType: ContentType.Markdown, - keywords: [], - teacherExclusive: false, - skosConcepts: [], - educationalGoals: [], - copyright: '', - license: '', - estimatedTime: 55, - returnValue: returnValue, - available: true, - contentLocation: '', - attachments: [], - content: Buffer.from( - 'I put my hand upon the lever \ - Said let it rock and let it roll \ - I had the one-arm bandit fever \ - There was an arrow through my heart and my soul' - ), - }); - - const learningObject05 = em.create(LearningObject, { - hruid: 'id05', - language: Language.English, - version: '1', - admins: [], - title: 'on every street', - description: 'sixth album', - contentType: ContentType.Markdown, - keywords: [], - teacherExclusive: false, - skosConcepts: [], - educationalGoals: [], - copyright: '', - license: '', - estimatedTime: 55, - returnValue: returnValue, - available: true, - contentLocation: '', - attachments: [], - content: Buffer.from( - 'calling Elvis, is anybody home, calling elvis, I am here all alone' - ), - }); - - const learningPathNode01: LearningPathNode = new LearningPathNode(); - const learningPathNode02: LearningPathNode = new LearningPathNode(); - const learningPathNode03: LearningPathNode = new LearningPathNode(); - const learningPathNode04: LearningPathNode = new LearningPathNode(); - const learningPathNode05: LearningPathNode = new LearningPathNode(); - - const transitions01: LearningPathTransition = new LearningPathTransition(); - const transitions02: LearningPathTransition = new LearningPathTransition(); - const transitions03: LearningPathTransition = new LearningPathTransition(); - const transitions04: LearningPathTransition = new LearningPathTransition(); - const transitions05: LearningPathTransition = new LearningPathTransition(); - - transitions01.condition = 'true'; - transitions01.next = learningPathNode02; - - transitions02.condition = 'true'; - transitions02.next = learningPathNode02; - - transitions03.condition = 'true'; - transitions03.next = learningPathNode04; - - transitions04.condition = 'true'; - transitions04.next = learningPathNode05; - - transitions05.condition = 'true'; - transitions05.next = learningPathNode05; - - learningPathNode01.instruction = ''; - learningPathNode01.language = Language.English; - learningPathNode01.learningObjectHruid = 'id01'; - learningPathNode01.startNode = true; - learningPathNode01.transitions = [transitions01]; - learningPathNode01.version = '1'; - - learningPathNode02.instruction = ''; - learningPathNode02.language = Language.English; - learningPathNode02.learningObjectHruid = 'id02'; - learningPathNode02.startNode = false; - learningPathNode02.transitions = [transitions02]; - learningPathNode02.version = '1'; - - learningPathNode03.instruction = ''; - learningPathNode03.language = Language.English; - learningPathNode03.learningObjectHruid = 'id03'; - learningPathNode03.startNode = true; - learningPathNode03.transitions = [transitions03]; - learningPathNode03.version = '1'; - - learningPathNode04.instruction = ''; - learningPathNode04.language = Language.English; - learningPathNode04.learningObjectHruid = 'id04'; - learningPathNode04.startNode = false; - learningPathNode04.transitions = [transitions04]; - learningPathNode04.version = '1'; - - learningPathNode05.instruction = ''; - learningPathNode05.language = Language.English; - learningPathNode05.learningObjectHruid = 'id05'; - learningPathNode05.startNode = false; - learningPathNode05.transitions = [transitions05]; - learningPathNode05.version = '1'; - - const nodes01: Array = [ - // learningPathNode01, - // learningPathNode02, - ]; - const learningPath01 = em.create(LearningPath, { - hruid: 'id01', - language: Language.English, - admins: [], - title: 'repertoire Tool', - description: 'all about Tool', - image: '', - nodes: nodes01, - }); - - const nodes02: Array = [ - // learningPathNode03, - // learningPathNode04, - // learningPathNode05, - ]; - const learningPath02 = em.create(LearningPath, { - hruid: 'id02', - language: Language.English, - admins: [], - title: 'repertoire Dire Straits', - description: 'all about Dire Straits', - image: '', - nodes: nodes02, - }); - - const studentsClass01: Array = [ - student01, - student02, - student03, - student04, - student05, - student06, - ]; - const teacherClass01: Array = [teacher01]; - - const class01 = em.create(Class, { - classId: 'id01', - displayName: 'class01', - teachers: teacherClass01, - students: studentsClass01, - }); - - const studentsClass02: Array = [student01, student02, student04]; - const teacherClass02: Array = [teacher02]; - const class02 = em.create(Class, { - classId: 'id02', - displayName: 'class02', - teachers: teacherClass02, - students: studentsClass02, - }); - - const studentsClass03: Array = [student02, student03, student04]; - const teacherClass03: Array = [teacher03]; - const class03 = em.create(Class, { - classId: 'id03', - displayName: 'class03', - teachers: teacherClass03, - students: studentsClass03, - }); - - const studentsClass04: Array = [student01, student02]; - const teacherClass04: Array = [teacher03]; - const class04 = em.create(Class, { - classId: 'id04', - displayName: 'class04', - teachers: teacherClass04, - students: studentsClass04, - }); - - const assignment01 = em.create(Assignment, { - within: class01, - id: 1, - title: 'dire straits', - description: 'reading', - learningPathHruid: 'id02', - learningPathLanguage: Language.English, - groups: [], - }); - - const assignment02 = em.create(Assignment, { - within: class02, - id: 2, - title: 'tool', - description: 'reading', - learningPathHruid: 'id01', - learningPathLanguage: Language.English, - groups: [], - }); - - const assignment03 = em.create(Assignment, { - within: class01, - id: 3, - title: 'delete', - description: 'will be deleted', - learningPathHruid: 'id02', - learningPathLanguage: Language.English, - groups: [], - }); - - const group01 = em.create(Group, { - assignment: assignment01, - groupNumber: 1, - members: [student01, student02], - }); - - const group02 = em.create(Group, { - assignment: assignment01, - groupNumber: 2, - members: [student03, student04], - }); - - const group03 = em.create(Group, { - assignment: assignment01, - groupNumber: 3, - members: [student05, student06], - }); - - const group04 = em.create(Group, { - assignment: assignment02, - groupNumber: 4, - members: [student04], - }); - - assignment01.groups = [group01, group02, group03]; - assignment02.groups = [group04]; - - const teacherInvitation01 = em.create(TeacherInvitation, { - sender: teacher02, - receiver: teacher01, - class: class02, - }); - - const teacherInvitation02 = em.create(TeacherInvitation, { - sender: teacher02, - receiver: teacher03, - class: class02, - }); - - const teacherInvitation03 = em.create(TeacherInvitation, { - sender: teacher03, - receiver: teacher01, - class: class03, - }); - - const teacherInvitation04 = em.create(TeacherInvitation, { - sender: teacher01, - receiver: teacher02, - class: class01, - }); - - const classJoinRequest01 = em.create(ClassJoinRequest, { - requester: student05, - class: class02, - status: ClassJoinRequestStatus.Open, - }); - - const classJoinRequest02 = em.create(ClassJoinRequest, { - requester: student03, - class: class02, - status: ClassJoinRequestStatus.Open, - }); - - const classJoinRequest03 = em.create(ClassJoinRequest, { - requester: student05, - class: class03, - status: ClassJoinRequestStatus.Open, - }); - - const classJoinRequest04 = em.create(ClassJoinRequest, { - requester: student04, - class: class03, - status: ClassJoinRequestStatus.Open, - }); - - const attachment01 = em.create(Attachment, { - learningObject: learningObject02, - sequenceNumber: 1, - mimeType: '', - content: Buffer.from(''), - }); - - learningObject02.attachments = [attachment01]; - - const question01 = em.create(Question, { - learningObjectLanguage: Language.English, - learningObjectVersion: '1', - learningObjectHruid: 'id05', - sequenceNumber: 1, - author: student01, - timestamp: new Date(), - content: 'question', - }); - - const question02 = em.create(Question, { - learningObjectLanguage: Language.English, - learningObjectVersion: '1', - learningObjectHruid: 'id05', - sequenceNumber: 2, - author: student03, - timestamp: new Date(), - content: 'question', - }); - - const question03 = em.create(Question, { - learningObjectLanguage: Language.English, - learningObjectVersion: '1', - learningObjectHruid: 'id04', - sequenceNumber: 1, - author: student01, - timestamp: new Date(), - content: 'question', - }); - - const question04 = em.create(Question, { - learningObjectLanguage: Language.English, - learningObjectVersion: '1', - learningObjectHruid: 'id01', - sequenceNumber: 1, - author: student02, - timestamp: new Date(), - content: 'question', - }); - - const answer01 = em.create(Answer, { - author: teacher01, - toQuestion: question02, - sequenceNumber: 1, - timestamp: new Date(), - content: 'answer', - }); - - const answer02 = em.create(Answer, { - author: teacher01, - toQuestion: question02, - sequenceNumber: 2, - timestamp: new Date(), - content: 'answer2', - }); - - const answer03 = em.create(Answer, { - author: teacher02, - toQuestion: question04, - sequenceNumber: 1, - timestamp: new Date(), - content: 'answer3', - }); - - const submission01 = em.create(Submission, { - learningObjectHruid: 'id03', - learningObjectLanguage: Language.English, - learningObjectVersion: '1', - submissionNumber: 1, - submitter: student01, - submissionTime: new Date(2025, 2, 20), - onBehalfOf: group01, - content: 'sub1', - }); - - const submission02 = em.create(Submission, { - learningObjectHruid: 'id03', - learningObjectLanguage: Language.English, - learningObjectVersion: '1', - submissionNumber: 2, - submitter: student01, - submissionTime: new Date(2025, 2, 25), - onBehalfOf: group01, - content: '', - }); - - const submission03 = em.create(Submission, { - learningObjectHruid: 'id02', - learningObjectLanguage: Language.English, - learningObjectVersion: '1', - submissionNumber: 1, - submitter: student01, - submissionTime: new Date(2025, 2, 20), - content: '', - }); - - const submission04 = em.create(Submission, { - learningObjectHruid: 'id02', - learningObjectLanguage: Language.English, - learningObjectVersion: '1', - submissionNumber: 2, - submitter: student01, - submissionTime: new Date(2025, 2, 25), - content: '', - }); - - const submission05 = em.create(Submission, { - learningObjectHruid: 'id01', - learningObjectLanguage: Language.English, - learningObjectVersion: '1', - submissionNumber: 1, - submitter: student02, - submissionTime: new Date(2025, 2, 20), - content: '', - }); + const questions = makeTestQuestions(em, students); + const answers = makeTestAnswers(em, teachers, questions); + const submissions = makeTestSubmissions(em, students, groups); await em.persistAndFlush([ - student01, - student02, - student03, - student04, - student05, - student06, - student07, - teacher01, - teacher02, - teacher03, - teacher04, - class01, - class02, - class03, - class04, - learningObject01, - learningObject02, - learningObject03, - learningObject04, - learningObject05, - learningPath01, - learningPath02, - attachment01, - classJoinRequest01, - classJoinRequest02, - classJoinRequest03, - classJoinRequest04, - teacherInvitation01, - teacherInvitation02, - teacherInvitation03, - teacherInvitation04, - assignment01, - assignment02, - assignment03, - group01, - group02, - group03, - group04, - question01, - question02, - question03, - question04, - answer01, - answer02, - answer03, - submission01, - submission02, - submission03, - submission04, - submission05, + ...students, + ...teachers, + ...learningObjects, + ...learningPaths, + ...classes, + ...assignments, + ...groups, + ...teacherInvitations, + ...classJoinRequests, + ...attachments, + ...questions, + ...answers, + ...submissions, ]); } diff --git a/backend/tests/test_assets/assignments/assignments.testdata.ts b/backend/tests/test_assets/assignments/assignments.testdata.ts new file mode 100644 index 00000000..d5dae2d4 --- /dev/null +++ b/backend/tests/test_assets/assignments/assignments.testdata.ts @@ -0,0 +1,41 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +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 { + const assignment01 = em.create(Assignment, { + within: classes[0], + id: 1, + title: 'dire straits', + description: 'reading', + learningPathHruid: 'id02', + learningPathLanguage: Language.English, + groups: [], + }); + + const assignment02 = em.create(Assignment, { + within: classes[1], + id: 2, + title: 'tool', + description: 'reading', + learningPathHruid: 'id01', + learningPathLanguage: Language.English, + groups: [], + }); + + const assignment03 = em.create(Assignment, { + within: classes[0], + id: 3, + title: 'delete', + description: 'will be deleted', + learningPathHruid: 'id02', + learningPathLanguage: Language.English, + groups: [], + }); + + return [assignment01, assignment02, assignment03]; +} diff --git a/backend/tests/test_assets/assignments/groups.testdata.ts b/backend/tests/test_assets/assignments/groups.testdata.ts new file mode 100644 index 00000000..0e9ef201 --- /dev/null +++ b/backend/tests/test_assets/assignments/groups.testdata.ts @@ -0,0 +1,36 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +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 { + const group01 = em.create(Group, { + assignment: assignments[0], + groupNumber: 1, + members: students.slice(0, 2), + }); + + const group02 = em.create(Group, { + assignment: assignments[0], + groupNumber: 2, + members: students.slice(2, 4), + }); + + const group03 = em.create(Group, { + assignment: assignments[0], + groupNumber: 3, + members: students.slice(4, 6), + }); + + const group04 = em.create(Group, { + assignment: assignments[1], + groupNumber: 4, + members: students.slice(3, 4), + }); + + return [group01, group02, group03, group04]; +} diff --git a/backend/tests/test_assets/assignments/submission.testdata.ts b/backend/tests/test_assets/assignments/submission.testdata.ts new file mode 100644 index 00000000..1e943926 --- /dev/null +++ b/backend/tests/test_assets/assignments/submission.testdata.ts @@ -0,0 +1,71 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +import { Submission } from '../../../src/entities/assignments/submission.entity'; +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 { + const submission01 = em.create(Submission, { + learningObjectHruid: 'id03', + learningObjectLanguage: Language.English, + learningObjectVersion: '1', + submissionNumber: 1, + submitter: students[0], + submissionTime: new Date(2025, 2, 20), + onBehalfOf: groups[0], + content: 'sub1', + }); + + const submission02 = em.create(Submission, { + learningObjectHruid: 'id03', + learningObjectLanguage: Language.English, + learningObjectVersion: '1', + submissionNumber: 2, + submitter: students[0], + submissionTime: new Date(2025, 2, 25), + onBehalfOf: groups[0], + content: '', + }); + + const submission03 = em.create(Submission, { + learningObjectHruid: 'id02', + learningObjectLanguage: Language.English, + learningObjectVersion: '1', + submissionNumber: 1, + submitter: students[0], + submissionTime: new Date(2025, 2, 20), + content: '', + }); + + const submission04 = em.create(Submission, { + learningObjectHruid: 'id02', + learningObjectLanguage: Language.English, + learningObjectVersion: '1', + submissionNumber: 2, + submitter: students[0], + submissionTime: new Date(2025, 2, 25), + content: '', + }); + + const submission05 = em.create(Submission, { + learningObjectHruid: 'id01', + learningObjectLanguage: Language.English, + learningObjectVersion: '1', + submissionNumber: 1, + submitter: students[1], + submissionTime: new Date(2025, 2, 20), + content: '', + }); + + return [ + submission01, + submission02, + submission03, + submission04, + submission05, + ]; +} diff --git a/backend/tests/test_assets/classes/class-join-requests.testdata.ts b/backend/tests/test_assets/classes/class-join-requests.testdata.ts new file mode 100644 index 00000000..e770ed6c --- /dev/null +++ b/backend/tests/test_assets/classes/class-join-requests.testdata.ts @@ -0,0 +1,44 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +import { + ClassJoinRequest, + ClassJoinRequestStatus, +} from '../../../src/entities/classes/class-join-request.entity'; +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 { + const classJoinRequest01 = em.create(ClassJoinRequest, { + requester: students[4], + class: classes[1], + status: ClassJoinRequestStatus.Open, + }); + + const classJoinRequest02 = em.create(ClassJoinRequest, { + requester: students[2], + class: classes[1], + status: ClassJoinRequestStatus.Open, + }); + + const classJoinRequest03 = em.create(ClassJoinRequest, { + requester: students[4], + class: classes[2], + status: ClassJoinRequestStatus.Open, + }); + + const classJoinRequest04 = em.create(ClassJoinRequest, { + requester: students[3], + class: classes[2], + status: ClassJoinRequestStatus.Open, + }); + + return [ + classJoinRequest01, + classJoinRequest02, + classJoinRequest03, + classJoinRequest04, + ]; +} diff --git a/backend/tests/test_assets/classes/classes.testdata.ts b/backend/tests/test_assets/classes/classes.testdata.ts new file mode 100644 index 00000000..b3c93747 --- /dev/null +++ b/backend/tests/test_assets/classes/classes.testdata.ts @@ -0,0 +1,54 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +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 { + const studentsClass01 = students.slice(0, 7); + const teacherClass01: Array = teachers.slice(0, 1); + + const class01 = em.create(Class, { + classId: 'id01', + displayName: 'class01', + teachers: teacherClass01, + students: studentsClass01, + }); + + const studentsClass02: Array = students + .slice(0, 2) + .concat(students.slice(3, 4)); + const teacherClass02: Array = teachers.slice(1, 2); + + const class02 = em.create(Class, { + classId: 'id02', + displayName: 'class02', + teachers: teacherClass02, + students: studentsClass02, + }); + + const studentsClass03: Array = students.slice(1, 4); + const teacherClass03: Array = teachers.slice(2, 3); + + const class03 = em.create(Class, { + classId: 'id03', + displayName: 'class03', + teachers: teacherClass03, + students: studentsClass03, + }); + + const studentsClass04: Array = students.slice(0, 2); + const teacherClass04: Array = teachers.slice(2, 3); + + const class04 = em.create(Class, { + classId: 'id04', + displayName: 'class04', + teachers: teacherClass04, + students: studentsClass04, + }); + + return [class01, class02, class03, class04]; +} diff --git a/backend/tests/test_assets/classes/teacher-invitations.testdata.ts b/backend/tests/test_assets/classes/teacher-invitations.testdata.ts new file mode 100644 index 00000000..ad5297ff --- /dev/null +++ b/backend/tests/test_assets/classes/teacher-invitations.testdata.ts @@ -0,0 +1,41 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +import { TeacherInvitation } from '../../../src/entities/classes/teacher-invitation.entity'; +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 { + const teacherInvitation01 = em.create(TeacherInvitation, { + sender: teachers[1], + receiver: teachers[0], + class: classes[1], + }); + + const teacherInvitation02 = em.create(TeacherInvitation, { + sender: teachers[1], + receiver: teachers[2], + class: classes[1], + }); + + const teacherInvitation03 = em.create(TeacherInvitation, { + sender: teachers[2], + receiver: teachers[0], + class: classes[2], + }); + + const teacherInvitation04 = em.create(TeacherInvitation, { + sender: teachers[0], + receiver: teachers[1], + class: classes[0], + }); + + return [ + teacherInvitation01, + teacherInvitation02, + teacherInvitation03, + teacherInvitation04, + ]; +} diff --git a/backend/tests/test_assets/content/attachments.testdata.ts b/backend/tests/test_assets/content/attachments.testdata.ts new file mode 100644 index 00000000..a1d362e3 --- /dev/null +++ b/backend/tests/test_assets/content/attachments.testdata.ts @@ -0,0 +1,17 @@ +import { Connection, EntityManager, IDatabaseDriver } 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 { + const attachment01 = em.create(Attachment, { + learningObject: learningObjects[1], + sequenceNumber: 1, + mimeType: '', + content: Buffer.from(''), + }); + + return [attachment01]; +} diff --git a/backend/tests/test_assets/content/learning-objects.testdata.ts b/backend/tests/test_assets/content/learning-objects.testdata.ts new file mode 100644 index 00000000..479f8102 --- /dev/null +++ b/backend/tests/test_assets/content/learning-objects.testdata.ts @@ -0,0 +1,149 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +import { + ContentType, + LearningObject, + ReturnValue, +} from '../../../src/entities/content/learning-object.entity'; +import { Language } from '../../../src/entities/content/language'; + +export function makeTestLearningObjects( + em: EntityManager> +): Array { + const returnValue: ReturnValue = new ReturnValue(); + returnValue.callbackSchema = ''; + returnValue.callbackUrl = ''; + + const learningObject01 = em.create(LearningObject, { + hruid: 'id01', + language: Language.English, + version: '1', + admins: [], + title: 'Undertow', + description: 'debute', + contentType: ContentType.Markdown, + keywords: [], + teacherExclusive: false, + skosConcepts: [], + educationalGoals: [], + copyright: '', + license: '', + estimatedTime: 45, + returnValue: returnValue, + available: true, + contentLocation: '', + attachments: [], + content: Buffer.from( + "there's a shadow just behind me, shrouding every step i take, making every promise empty pointing every finger at me" + ), + }); + + const learningObject02 = em.create(LearningObject, { + hruid: 'id02', + language: Language.English, + version: '1', + admins: [], + title: 'Aenema', + description: 'second album', + contentType: ContentType.Markdown, + keywords: [], + teacherExclusive: false, + skosConcepts: [], + educationalGoals: [], + copyright: '', + license: '', + estimatedTime: 80, + returnValue: returnValue, + available: true, + contentLocation: '', + attachments: [], + content: Buffer.from( + "I've been crawling on my belly clearing out what could've been I've been wallowing in my own confused and insecure delusions" + ), + }); + + const learningObject03 = em.create(LearningObject, { + hruid: 'id03', + language: Language.English, + version: '1', + admins: [], + title: 'love over gold', + description: 'third album', + contentType: ContentType.Markdown, + keywords: [], + teacherExclusive: false, + skosConcepts: [], + educationalGoals: [], + copyright: '', + license: '', + estimatedTime: 55, + returnValue: returnValue, + available: true, + contentLocation: '', + attachments: [], + content: Buffer.from( + 'he wrote me a prescription, he said you are depressed, \ + but I am glad you came to see me to get this off your chest, \ + come back and see me later next patient please \ + send in another victim of industrial disease' + ), + }); + + const learningObject04 = em.create(LearningObject, { + hruid: 'id04', + language: Language.English, + version: '1', + admins: [], + title: 'making movies', + description: 'fifth album', + contentType: ContentType.Markdown, + keywords: [], + teacherExclusive: false, + skosConcepts: [], + educationalGoals: [], + copyright: '', + license: '', + estimatedTime: 55, + returnValue: returnValue, + available: true, + contentLocation: '', + attachments: [], + content: Buffer.from( + 'I put my hand upon the lever \ + Said let it rock and let it roll \ + I had the one-arm bandit fever \ + There was an arrow through my heart and my soul' + ), + }); + + const learningObject05 = em.create(LearningObject, { + hruid: 'id05', + language: Language.English, + version: '1', + admins: [], + title: 'on every street', + description: 'sixth album', + contentType: ContentType.Markdown, + keywords: [], + teacherExclusive: false, + skosConcepts: [], + educationalGoals: [], + copyright: '', + license: '', + estimatedTime: 55, + returnValue: returnValue, + available: true, + contentLocation: '', + attachments: [], + content: Buffer.from( + 'calling Elvis, is anybody home, calling elvis, I am here all alone' + ), + }); + + return [ + learningObject01, + learningObject02, + learningObject03, + learningObject04, + learningObject05, + ]; +} diff --git a/backend/tests/test_assets/content/learning-paths.testdata.ts b/backend/tests/test_assets/content/learning-paths.testdata.ts new file mode 100644 index 00000000..c540860a --- /dev/null +++ b/backend/tests/test_assets/content/learning-paths.testdata.ts @@ -0,0 +1,104 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +import { + LearningPath, + LearningPathNode, + LearningPathTransition, +} from '../../../src/entities/content/learning-path.entity'; +import { Language } from '../../../src/entities/content/language'; + +export function makeTestLearningPaths( + em: EntityManager> +): Array { + const learningPathNode01: LearningPathNode = new LearningPathNode(); + const learningPathNode02: LearningPathNode = new LearningPathNode(); + const learningPathNode03: LearningPathNode = new LearningPathNode(); + const learningPathNode04: LearningPathNode = new LearningPathNode(); + const learningPathNode05: LearningPathNode = new LearningPathNode(); + + const transitions01: LearningPathTransition = new LearningPathTransition(); + const transitions02: LearningPathTransition = new LearningPathTransition(); + const transitions03: LearningPathTransition = new LearningPathTransition(); + const transitions04: LearningPathTransition = new LearningPathTransition(); + const transitions05: LearningPathTransition = new LearningPathTransition(); + + transitions01.condition = 'true'; + transitions01.next = learningPathNode02; + + transitions02.condition = 'true'; + transitions02.next = learningPathNode02; + + transitions03.condition = 'true'; + transitions03.next = learningPathNode04; + + transitions04.condition = 'true'; + transitions04.next = learningPathNode05; + + transitions05.condition = 'true'; + transitions05.next = learningPathNode05; + + learningPathNode01.instruction = ''; + learningPathNode01.language = Language.English; + learningPathNode01.learningObjectHruid = 'id01'; + learningPathNode01.startNode = true; + learningPathNode01.transitions = [transitions01]; + learningPathNode01.version = '1'; + + learningPathNode02.instruction = ''; + learningPathNode02.language = Language.English; + learningPathNode02.learningObjectHruid = 'id02'; + learningPathNode02.startNode = false; + learningPathNode02.transitions = [transitions02]; + learningPathNode02.version = '1'; + + learningPathNode03.instruction = ''; + learningPathNode03.language = Language.English; + learningPathNode03.learningObjectHruid = 'id03'; + learningPathNode03.startNode = true; + learningPathNode03.transitions = [transitions03]; + learningPathNode03.version = '1'; + + learningPathNode04.instruction = ''; + learningPathNode04.language = Language.English; + learningPathNode04.learningObjectHruid = 'id04'; + learningPathNode04.startNode = false; + learningPathNode04.transitions = [transitions04]; + learningPathNode04.version = '1'; + + learningPathNode05.instruction = ''; + learningPathNode05.language = Language.English; + learningPathNode05.learningObjectHruid = 'id05'; + learningPathNode05.startNode = false; + learningPathNode05.transitions = [transitions05]; + learningPathNode05.version = '1'; + + const nodes01: Array = [ + // learningPathNode01, + // learningPathNode02, + ]; + const learningPath01 = em.create(LearningPath, { + hruid: 'id01', + language: Language.English, + admins: [], + title: 'repertoire Tool', + description: 'all about Tool', + image: '', + nodes: nodes01, + }); + + const nodes02: Array = [ + // learningPathNode03, + // learningPathNode04, + // learningPathNode05, + ]; + const learningPath02 = em.create(LearningPath, { + hruid: 'id02', + language: Language.English, + admins: [], + title: 'repertoire Dire Straits', + description: 'all about Dire Straits', + image: '', + nodes: nodes02, + }); + + return [learningPath01, learningPath02]; +} diff --git a/backend/tests/test_assets/questions/answers.testdata.ts b/backend/tests/test_assets/questions/answers.testdata.ts new file mode 100644 index 00000000..90039922 --- /dev/null +++ b/backend/tests/test_assets/questions/answers.testdata.ts @@ -0,0 +1,36 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +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 { + const answer01 = em.create(Answer, { + author: teachers[0], + toQuestion: questions[1], + sequenceNumber: 1, + timestamp: new Date(), + content: 'answer', + }); + + const answer02 = em.create(Answer, { + author: teachers[0], + toQuestion: questions[1], + sequenceNumber: 2, + timestamp: new Date(), + content: 'answer2', + }); + + const answer03 = em.create(Answer, { + author: teachers[1], + toQuestion: questions[3], + sequenceNumber: 1, + timestamp: new Date(), + content: 'answer3', + }); + + return [answer01, answer02, answer03]; +} diff --git a/backend/tests/test_assets/questions/questions.testdata.ts b/backend/tests/test_assets/questions/questions.testdata.ts new file mode 100644 index 00000000..781cb9c3 --- /dev/null +++ b/backend/tests/test_assets/questions/questions.testdata.ts @@ -0,0 +1,51 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +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 { + const question01 = em.create(Question, { + learningObjectLanguage: Language.English, + learningObjectVersion: '1', + learningObjectHruid: 'id05', + sequenceNumber: 1, + author: students[0], + timestamp: new Date(), + content: 'question', + }); + + const question02 = em.create(Question, { + learningObjectLanguage: Language.English, + learningObjectVersion: '1', + learningObjectHruid: 'id05', + sequenceNumber: 2, + author: students[2], + timestamp: new Date(), + content: 'question', + }); + + const question03 = em.create(Question, { + learningObjectLanguage: Language.English, + learningObjectVersion: '1', + learningObjectHruid: 'id04', + sequenceNumber: 1, + author: students[0], + timestamp: new Date(), + content: 'question', + }); + + const question04 = em.create(Question, { + learningObjectLanguage: Language.English, + learningObjectVersion: '1', + learningObjectHruid: 'id01', + sequenceNumber: 1, + author: students[1], + timestamp: new Date(), + content: 'question', + }); + + return [question01, question02, question03, question04]; +} diff --git a/backend/tests/test_assets/users/students.testdata.ts b/backend/tests/test_assets/users/students.testdata.ts new file mode 100644 index 00000000..5e024085 --- /dev/null +++ b/backend/tests/test_assets/users/students.testdata.ts @@ -0,0 +1,59 @@ +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +import { Student } from '../../../src/entities/users/student.entity'; + +export function makeTestStudents( + em: EntityManager> +): Array { + const student01 = em.create(Student, { + username: 'Noordkaap', + firstName: 'Stijn', + lastName: 'Meuris', + }); + + const student02 = em.create(Student, { + username: 'DireStraits', + firstName: 'Mark', + lastName: 'Knopfler', + }); + + const student03 = em.create(Student, { + username: 'Tool', + firstName: 'Maynard', + lastName: 'Keenan', + }); + + const student04 = em.create(Student, { + username: 'SmashingPumpkins', + firstName: 'Billy', + lastName: 'Corgan', + }); + + const student05 = em.create(Student, { + username: 'PinkFloyd', + firstName: 'David', + lastName: 'Gilmoure', + }); + + const student06 = em.create(Student, { + username: 'TheDoors', + firstName: 'Jim', + lastName: 'Morisson', + }); + + // do not use for any tests, gets deleted in a unit test + const student07 = em.create(Student, { + username: 'Nirvana', + firstName: 'Kurt', + lastName: 'Cobain', + }); + + return [ + student01, + student02, + student03, + student04, + student05, + student06, + student07, + ]; +} diff --git a/backend/tests/test_assets/users/teachers.testdata.ts b/backend/tests/test_assets/users/teachers.testdata.ts new file mode 100644 index 00000000..b53a5c5e --- /dev/null +++ b/backend/tests/test_assets/users/teachers.testdata.ts @@ -0,0 +1,33 @@ +import { Teacher } from '../../../src/entities/users/teacher.entity'; +import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; + +export function makeTestTeachers( + em: EntityManager> +): Array { + const teacher01 = em.create(Teacher, { + username: 'FooFighters', + firstName: 'Dave', + lastName: 'Grohl', + }); + + const teacher02 = em.create(Teacher, { + username: 'LimpBizkit', + firstName: 'Fred', + lastName: 'Durst', + }); + + const teacher03 = em.create(Teacher, { + username: 'Staind', + firstName: 'Aaron', + lastName: 'Lewis', + }); + + // should not be used, gets deleted in a unit test + const teacher04 = em.create(Teacher, { + username: 'ZesdeMetaal', + firstName: 'Wannes', + lastName: 'Cappelle', + }); + + return [teacher01, teacher02, teacher03, teacher04]; +}