From 5779fd380ea9a125beb86f30c11009c05ca89dad Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Tue, 11 Aug 2020 00:04:42 +0200 Subject: [PATCH] LinkResolver: Add more tests --- lib/utils/link_resolver.dart | 17 +------------- test/link_resolver_test.dart | 45 ++++++++++++++++++++++++++++++++---- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/lib/utils/link_resolver.dart b/lib/utils/link_resolver.dart index 3a006a46..f6ce63c6 100644 --- a/lib/utils/link_resolver.dart +++ b/lib/utils/link_resolver.dart @@ -11,7 +11,7 @@ class LinkResolver { if (link.startsWith('[[') && link.endsWith(']]') && link.length > 4) { // FIXME: What if the case is different? - spec = link.substring(2, link.length - 2) + ".md"; + spec = link.substring(2, link.length - 2); } if (link.startsWith('./')) { @@ -40,18 +40,3 @@ class LinkResolver { return null; } } - -// Test to write -// 1. [[Fire]] resolves to base folder [[Fire.md]] -// 2. [[Fire.md]] resolve to base folder [[Fire.md]] -// 3. [[Hello/Fire]] resolves to Hello/Fire.md -// 4. [[Hello | pipe]] resolves correctly -// 5. [[Hello Dear]] should resolve correctly -// 6. [[Hello Dear ]] check how it works in Obsidian (ignored extra spaces) -// 7. Should resolve to 'txt' files as well - -// Normal Links -// 4. ./Fire.md -> resovles -// 5. Fire.md -> resolves -// 6. Fire2.md -> fails to resolve -// 7. Complex path ../../Foo/../bar/d.md diff --git a/test/link_resolver_test.dart b/test/link_resolver_test.dart index 5b58efbb..061cc533 100644 --- a/test/link_resolver_test.dart +++ b/test/link_resolver_test.dart @@ -17,6 +17,8 @@ void main() { await generateNote(tempDir.path, "Hello.md"); await generateNote(tempDir.path, "Fire.md"); + await generateNote(tempDir.path, "Folder/Water.md"); + await generateNote(tempDir.path, "Air Bender.md"); await rootFolder.loadRecursively(); }); @@ -25,12 +27,36 @@ void main() { tempDir.deleteSync(recursive: true); }); - test('Should process simple wiki links', () { + test('[[Fire]] resolves to base folder `Fire.md`', () { var note = rootFolder.notes[0]; var linkResolver = LinkResolver(note); - var resolvedNote = linkResolver.resolve('[[Hello]]'); - expect(resolvedNote.filePath, p.join(tempDir.path, 'Hello.md')); + var resolvedNote = linkResolver.resolve('[[Fire]]'); + expect(resolvedNote.filePath, p.join(tempDir.path, 'Fire.md')); + }); + + test('[[Fire.md]] resolves to base folder `Fire.md`', () { + var note = rootFolder.notes[0]; + var linkResolver = LinkResolver(note); + + var resolvedNote = linkResolver.resolve('[[Fire.md]]'); + expect(resolvedNote.filePath, p.join(tempDir.path, 'Fire.md')); + }); + + test('[[Folder/Water]] resolves to `Folder/Water.md`', () { + var note = rootFolder.notes[0]; + var linkResolver = LinkResolver(note); + + var resolvedNote = linkResolver.resolve('[[Folder/Water]]'); + expect(resolvedNote.filePath, p.join(tempDir.path, 'Folder/Water.md')); + }); + + test('WikiLinks with spaces resolves correctly', () { + var note = rootFolder.notes[0]; + var linkResolver = LinkResolver(note); + + var resolvedNote = linkResolver.resolve('[[Air Bender]]'); + expect(resolvedNote.filePath, p.join(tempDir.path, 'Air Bender.md')); }); } @@ -38,7 +64,7 @@ Future generateNote(String basePath, String path) async { var filePath = p.join(basePath, path); // Ensure directory exists - var dirPath = p.basename(filePath); + var dirPath = p.dirname(filePath); await Directory(dirPath).create(recursive: true); var content = """--- @@ -50,3 +76,14 @@ Hello"""; return File(filePath).writeAsString(content, flush: true); } + +// Test to write +// 6. [[Hello Dear ]] check how it works in Obsidian (ignored extra spaces) +// 7. Should resolve to 'txt' files as well +// 8. Non base path [[Fire]] should resolve to [[Fire.md]] + +// Normal Links +// 4. ./Fire.md -> resovles +// 5. Fire.md -> resolves +// 6. Fire2.md -> fails to resolve +// 7. Complex path ../../Foo/../bar/d.md