test(backend): Test voor AttachmentRepository toegevoegd.
Ook bug in getter voor AttachmentRepository opgelost.
This commit is contained in:
		
							parent
							
								
									1417907933
								
							
						
					
					
						commit
						fb2d293b57
					
				
					 2 changed files with 88 additions and 1 deletions
				
			
		|  | @ -116,4 +116,4 @@ export const getLearningPathRepository = repositoryGetter< | ||||||
| export const getAttachmentRepository = repositoryGetter< | export const getAttachmentRepository = repositoryGetter< | ||||||
|     Attachment, |     Attachment, | ||||||
|     AttachmentRepository |     AttachmentRepository | ||||||
| >(Assignment); | >(Attachment); | ||||||
|  |  | ||||||
							
								
								
									
										87
									
								
								backend/tests/data/content/attachment-repository.test.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								backend/tests/data/content/attachment-repository.test.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,87 @@ | ||||||
|  | import {beforeAll, describe, expect, it} from "vitest"; | ||||||
|  | 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 example from "../../test-assets/learning-objects/pn_werkingnotebooks/pn-werkingnotebooks-example"; | ||||||
|  | import {LearningObject} from "../../../src/entities/content/learning-object.entity"; | ||||||
|  | import {Attachment} from "../../../src/entities/content/attachment.entity"; | ||||||
|  | import {LearningObjectIdentifier} from "../../../src/entities/content/learning-object-identifier"; | ||||||
|  | 
 | ||||||
|  | const NEWER_TEST_SUFFIX = "nEweR"; | ||||||
|  | 
 | ||||||
|  | function createTestLearningObjects(learningObjectRepo: LearningObjectRepository): {older: LearningObject, newer: LearningObject} { | ||||||
|  |     let olderExample = example.createLearningObject(); | ||||||
|  |     learningObjectRepo.save(olderExample); | ||||||
|  | 
 | ||||||
|  |     let newerExample = example.createLearningObject(); | ||||||
|  |     newerExample.title = "Newer example"; | ||||||
|  |     newerExample.version = 100; | ||||||
|  | 
 | ||||||
|  |     return { | ||||||
|  |         older: olderExample, | ||||||
|  |         newer: newerExample, | ||||||
|  |     }; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | describe("AttachmentRepository", () => { | ||||||
|  |     let attachmentRepo: AttachmentRepository; | ||||||
|  |     let exampleLearningObjects: {older: LearningObject, newer: LearningObject}; | ||||||
|  |     let attachmentsOlderLearningObject: Attachment[]; | ||||||
|  | 
 | ||||||
|  |     beforeAll(async () => { | ||||||
|  |         await setupTestApp(); | ||||||
|  |         attachmentRepo = getAttachmentRepository(); | ||||||
|  |         exampleLearningObjects = createTestLearningObjects(getLearningObjectRepository()); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it("can add attachments to learning objects without throwing an error", () => { | ||||||
|  |         attachmentsOlderLearningObject = Object | ||||||
|  |             .values(example.createAttachment) | ||||||
|  |             .map(fn => fn(exampleLearningObjects.older)); | ||||||
|  | 
 | ||||||
|  |         for (let attachment of attachmentsOlderLearningObject) { | ||||||
|  |             attachmentRepo.save(attachment); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     let attachmentOnlyNewer: Attachment; | ||||||
|  |     it("allows us to add attachments with the same name to a different learning object without throwing an error", () => { | ||||||
|  |         attachmentOnlyNewer = Object.values(example.createAttachment)[0](exampleLearningObjects.newer); | ||||||
|  |         attachmentOnlyNewer.content.write(NEWER_TEST_SUFFIX); | ||||||
|  | 
 | ||||||
|  |         attachmentRepo.save(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 | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         const result = await attachmentRepo.findByLearningObjectIdAndName( | ||||||
|  |             olderLearningObjectId, | ||||||
|  |             attachmentsOlderLearningObject[0].name | ||||||
|  |         ); | ||||||
|  |         expect(result).toBe(attachmentsOlderLearningObject[0]); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it("returns null when queried by learningObjectId and non-existing attachment name", async () => { | ||||||
|  |         const result = await attachmentRepo.findByLearningObjectIdAndName( | ||||||
|  |             olderLearningObjectId, | ||||||
|  |             "non-existing name" | ||||||
|  |         ); | ||||||
|  |         expect(result).toBe(null); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     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, | ||||||
|  |             attachmentOnlyNewer.name | ||||||
|  |         ); | ||||||
|  |         expect(result).toBe(attachmentOnlyNewer); | ||||||
|  |     }); | ||||||
|  | }); | ||||||
		Reference in a new issue
	
	 Gerald Schmittinger
						Gerald Schmittinger