mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-30 04:01:31 +08:00 
			
		
		
		
	test(calendar): relation as custom title
This commit is contained in:
		
							parent
							
								
									6f2a0f9ee1
								
							
						
					
					
						commit
						ca7cff45c9
					
				| @ -3,9 +3,10 @@ import FNote from "../entities/fnote.js"; | ||||
| import froca from "../services/froca.js"; | ||||
| import FAttribute from "../entities/fattribute.js"; | ||||
| 
 | ||||
| type AttributeDefinitions = { [key in `#${string}`]: string; } | ||||
| type AttributeDefinitions = { [key in `#${string}`]: string; }; | ||||
| type RelationDefinitions = { [key in `~${string}`]: string; }; | ||||
| 
 | ||||
| interface NoteDefinition extends AttributeDefinitions { | ||||
| interface NoteDefinition extends AttributeDefinitions, RelationDefinitions { | ||||
|     id?: string | undefined; | ||||
|     title: string; | ||||
| } | ||||
| @ -42,21 +43,41 @@ export function buildNotes(notes: NoteDefinition[]) { | ||||
| 
 | ||||
|         let position = 0; | ||||
|         for (const [ key, value ] of Object.entries(noteDef)) { | ||||
|             const attributeId = utils.randomString(12); | ||||
|             const name = key.substring(1); | ||||
| 
 | ||||
|             let attribute: FAttribute | null = null; | ||||
|             if (key.startsWith("#")) { | ||||
|                 const attributeId = utils.randomString(12); | ||||
|                 const attribute = new FAttribute(froca, { | ||||
|                 attribute = new FAttribute(froca, { | ||||
|                     noteId: note.noteId, | ||||
|                     attributeId: attributeId, | ||||
|                     attributeId, | ||||
|                     type: "label", | ||||
|                     name: key.substring(1), | ||||
|                     value: value, | ||||
|                     position: position, | ||||
|                     name, | ||||
|                     value, | ||||
|                     position, | ||||
|                     isInheritable: false | ||||
|                 }); | ||||
|                 froca.attributes[attributeId] = attribute; | ||||
|                 note.attributes.push(attributeId); | ||||
|             } | ||||
| 
 | ||||
|             if (key.startsWith("~")) { | ||||
|                 console.log("Created relation with ", name, value); | ||||
|                 attribute = new FAttribute(froca, { | ||||
|                     noteId: note.noteId, | ||||
|                     attributeId, | ||||
|                     type: "relation", | ||||
|                     name, | ||||
|                     value, | ||||
|                     position, | ||||
|                     isInheritable: false | ||||
|                 }); | ||||
|             } | ||||
| 
 | ||||
|             if (!attribute) { | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             froca.attributes[attributeId] = attribute; | ||||
|             note.attributes.push(attributeId); | ||||
|             position++; | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -46,6 +46,12 @@ function mockServer() { | ||||
|                         attributes: [] | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
| 
 | ||||
|             async post(url: string, data: {}) { | ||||
|                 if (url === "tree/load") { | ||||
|                     throw new Error(`A module tried to load from the server the following notes: ${data.noteIds.join(",")}\nThis is not supported, use Froca mocking instead and ensure the note exist in the mock.`) | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     }; | ||||
|  | ||||
| @ -85,4 +85,17 @@ describe("Building events", () => { | ||||
|         expect(events[1]).toMatchObject({ title: "Note 2", start: "2025-05-07" }); | ||||
|     }); | ||||
| 
 | ||||
|     it("supports relation as custom title", async () => { | ||||
|         const noteIds = buildNotes([ | ||||
|             { id: "mySharedTitle", title: "My shared title" }, | ||||
|             { title: "Note 1", "~myTitle": "mySharedTitle", "#startDate": "2025-05-05", "#calendar:title": "~myTitle" }, | ||||
|             { title: "Note 2", "#startDate": "2025-05-07", "#calendar:title": "~myTitle" }, | ||||
|         ]); | ||||
|         const events = await CalendarView.buildEvents(noteIds); | ||||
| 
 | ||||
|         expect(events).toHaveLength(2); | ||||
|         expect(events[0]).toMatchObject({ title: "My shared title", start: "2025-05-05" }); | ||||
|         expect(events[1]).toMatchObject({ title: "Note 2", start: "2025-05-07" }); | ||||
|     }); | ||||
| 
 | ||||
| }); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Elian Doran
						Elian Doran