fix(backend): Testen AssignmentRepository gerepareerd na refactoring.
This commit is contained in:
		
							parent
							
								
									202cf4e33c
								
							
						
					
					
						commit
						a3be3699f2
					
				
					 1 changed files with 34 additions and 38 deletions
				
			
		|  | @ -2,66 +2,60 @@ import { beforeAll, describe, expect, it } from 'vitest'; | |||
| import { setupTestApp } from '../../setup-tests.js'; | ||||
| import { getAttachmentRepository, getLearningObjectRepository } from '../../../src/data/repositories.js'; | ||||
| import { AttachmentRepository } from '../../../src/data/content/attachment-repository.js'; | ||||
| import { LearningObjectRepository } from '../../../src/data/content/learning-object-repository.js'; | ||||
| import example from '../../test-assets/learning-objects/pn-werkingnotebooks/pn-werkingnotebooks-example.js'; | ||||
| import { LearningObject } from '../../../src/entities/content/learning-object.entity.js'; | ||||
| import { Attachment } from '../../../src/entities/content/attachment.entity.js'; | ||||
| import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier.js'; | ||||
| 
 | ||||
| const NEWER_TEST_SUFFIX = 'nEweR'; | ||||
| 
 | ||||
| async function createTestLearningObjects(learningObjectRepo: LearningObjectRepository): Promise<{ | ||||
|     older: LearningObject; | ||||
|     newer: LearningObject; | ||||
| }> { | ||||
|     const olderExample = example.createLearningObject(); | ||||
|     await learningObjectRepo.save(olderExample); | ||||
| 
 | ||||
|     const newerExample = example.createLearningObject(); | ||||
|     newerExample.title = 'Newer example'; | ||||
|     newerExample.version = 100; | ||||
| 
 | ||||
|     return { | ||||
|         older: olderExample, | ||||
|         newer: newerExample, | ||||
|     }; | ||||
| } | ||||
| import {testLearningObjectPnNotebooks} from "../../test_assets/content/learning-objects.testdata"; | ||||
| import {v4 as uuidV4} from "uuid"; | ||||
| 
 | ||||
| describe('AttachmentRepository', () => { | ||||
|     let attachmentRepo: AttachmentRepository; | ||||
|     let exampleLearningObjects: { older: LearningObject; newer: LearningObject }; | ||||
|     let newLearningObject: LearningObject; | ||||
|     let attachmentsOlderLearningObject: Attachment[]; | ||||
| 
 | ||||
|     beforeAll(async () => { | ||||
|         await setupTestApp(); | ||||
| 
 | ||||
|         attachmentsOlderLearningObject = testLearningObjectPnNotebooks.attachments as Attachment[]; | ||||
| 
 | ||||
|         attachmentRepo = getAttachmentRepository(); | ||||
|         exampleLearningObjects = await createTestLearningObjects(getLearningObjectRepository()); | ||||
|     }); | ||||
|         const learningObjectRepo = getLearningObjectRepository(); | ||||
| 
 | ||||
|     it('can add attachments to learning objects without throwing an error', async () => { | ||||
|         attachmentsOlderLearningObject = Object.values(example.createAttachment).map((fn) => fn(exampleLearningObjects.older)); | ||||
|         const newLearningObjectData = structuredClone(testLearningObjectPnNotebooks); | ||||
|         newLearningObjectData.title = 'Newer example'; | ||||
|         newLearningObjectData.version = 101; | ||||
|         newLearningObjectData.attachments = []; | ||||
|         newLearningObjectData.uuid = uuidV4(); | ||||
|         newLearningObjectData.content = Buffer.from("Content of the newer example"); | ||||
| 
 | ||||
|         await Promise.all(attachmentsOlderLearningObject.map(async (attachment) => attachmentRepo.save(attachment))); | ||||
|         newLearningObject = learningObjectRepo.create(newLearningObjectData); | ||||
|         await learningObjectRepo.save(newLearningObject); | ||||
|     }); | ||||
| 
 | ||||
|     let attachmentOnlyNewer: Attachment; | ||||
|     it('allows us to add attachments with the same name to a different learning object without throwing an error', async () => { | ||||
|         attachmentOnlyNewer = Object.values(example.createAttachment)[0](exampleLearningObjects.newer); | ||||
|         attachmentOnlyNewer.content.write(NEWER_TEST_SUFFIX); | ||||
|         attachmentOnlyNewer = structuredClone(attachmentsOlderLearningObject[0]); | ||||
|         attachmentOnlyNewer.learningObject = newLearningObject; | ||||
|         attachmentOnlyNewer.content = Buffer.from("New attachment content"); | ||||
| 
 | ||||
|         await attachmentRepo.save(attachmentOnlyNewer); | ||||
|         await attachmentRepo.save(attachmentRepo.create(attachmentOnlyNewer)); | ||||
|     }); | ||||
| 
 | ||||
|     let olderLearningObjectId: LearningObjectIdentifier; | ||||
|     it('returns the correct attachment when queried by learningObjectId and attachment name', async () => { | ||||
|         olderLearningObjectId = { | ||||
|             hruid: exampleLearningObjects.older.hruid, | ||||
|             language: exampleLearningObjects.older.language, | ||||
|             version: exampleLearningObjects.older.version, | ||||
|             hruid: testLearningObjectPnNotebooks.hruid, | ||||
|             language: testLearningObjectPnNotebooks.language, | ||||
|             version: testLearningObjectPnNotebooks.version, | ||||
|         }; | ||||
| 
 | ||||
|         const result = await attachmentRepo.findByLearningObjectIdAndName(olderLearningObjectId, attachmentsOlderLearningObject[0].name); | ||||
|         expect(result).toBe(attachmentsOlderLearningObject[0]); | ||||
|         const result = await attachmentRepo.findByLearningObjectIdAndName( | ||||
|             olderLearningObjectId, | ||||
|             attachmentsOlderLearningObject[0].name | ||||
|         ); | ||||
|         expect(result).not.toBeNull(); | ||||
|         expect(result!.name).toEqual(attachmentsOlderLearningObject[0].name); | ||||
|         expect(result!.content).toEqual(attachmentsOlderLearningObject[0].content); | ||||
|     }); | ||||
| 
 | ||||
|     it('returns null when queried by learningObjectId and non-existing attachment name', async () => { | ||||
|  | @ -71,10 +65,12 @@ describe('AttachmentRepository', () => { | |||
| 
 | ||||
|     it('returns the newer version of the attachment when only queried by hruid, language and attachment name (but not version)', async () => { | ||||
|         const result = await attachmentRepo.findByMostRecentVersionOfLearningObjectAndName( | ||||
|             exampleLearningObjects.older.hruid, | ||||
|             exampleLearningObjects.older.language, | ||||
|             testLearningObjectPnNotebooks.hruid, | ||||
|             testLearningObjectPnNotebooks.language, | ||||
|             attachmentOnlyNewer.name | ||||
|         ); | ||||
|         expect(result).toBe(attachmentOnlyNewer); | ||||
|         expect(result).not.toBeNull(); | ||||
|         expect(result!.name).toEqual(attachmentOnlyNewer.name); | ||||
|         expect(result!.content).toEqual(attachmentOnlyNewer.content); | ||||
|     }); | ||||
| }); | ||||
|  |  | |||
		Reference in a new issue
	
	 Gerald Schmittinger
						Gerald Schmittinger