mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-01 04:07:53 +08:00
LinkResolver: Add more tests
This commit is contained in:
@ -11,7 +11,7 @@ class LinkResolver {
|
|||||||
|
|
||||||
if (link.startsWith('[[') && link.endsWith(']]') && link.length > 4) {
|
if (link.startsWith('[[') && link.endsWith(']]') && link.length > 4) {
|
||||||
// FIXME: What if the case is different?
|
// 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('./')) {
|
if (link.startsWith('./')) {
|
||||||
@ -40,18 +40,3 @@ class LinkResolver {
|
|||||||
return null;
|
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
|
|
||||||
|
@ -17,6 +17,8 @@ void main() {
|
|||||||
|
|
||||||
await generateNote(tempDir.path, "Hello.md");
|
await generateNote(tempDir.path, "Hello.md");
|
||||||
await generateNote(tempDir.path, "Fire.md");
|
await generateNote(tempDir.path, "Fire.md");
|
||||||
|
await generateNote(tempDir.path, "Folder/Water.md");
|
||||||
|
await generateNote(tempDir.path, "Air Bender.md");
|
||||||
|
|
||||||
await rootFolder.loadRecursively();
|
await rootFolder.loadRecursively();
|
||||||
});
|
});
|
||||||
@ -25,12 +27,36 @@ void main() {
|
|||||||
tempDir.deleteSync(recursive: true);
|
tempDir.deleteSync(recursive: true);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Should process simple wiki links', () {
|
test('[[Fire]] resolves to base folder `Fire.md`', () {
|
||||||
var note = rootFolder.notes[0];
|
var note = rootFolder.notes[0];
|
||||||
var linkResolver = LinkResolver(note);
|
var linkResolver = LinkResolver(note);
|
||||||
|
|
||||||
var resolvedNote = linkResolver.resolve('[[Hello]]');
|
var resolvedNote = linkResolver.resolve('[[Fire]]');
|
||||||
expect(resolvedNote.filePath, p.join(tempDir.path, 'Hello.md'));
|
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<void> generateNote(String basePath, String path) async {
|
|||||||
var filePath = p.join(basePath, path);
|
var filePath = p.join(basePath, path);
|
||||||
|
|
||||||
// Ensure directory exists
|
// Ensure directory exists
|
||||||
var dirPath = p.basename(filePath);
|
var dirPath = p.dirname(filePath);
|
||||||
await Directory(dirPath).create(recursive: true);
|
await Directory(dirPath).create(recursive: true);
|
||||||
|
|
||||||
var content = """---
|
var content = """---
|
||||||
@ -50,3 +76,14 @@ Hello""";
|
|||||||
|
|
||||||
return File(filePath).writeAsString(content, flush: true);
|
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
|
||||||
|
Reference in New Issue
Block a user