Files
GitJournal/test/notes_cache_test.dart
Vishesh Handa 2505d00dfb Replace dart:io with universal_io
Platform from dart:io cannot be used on the web for reasons. And this
way we get a fake File/Directory class which we can use for atleast
running the web version, even if it won't work.
2021-07-30 11:39:26 +02:00

74 lines
2.1 KiB
Dart

import 'package:path/path.dart' as p;
import 'package:shared_preferences/shared_preferences.dart';
import 'package:test/test.dart';
import 'package:universal_io/io.dart';
import 'package:gitjournal/core/notes_cache.dart';
import 'package:gitjournal/core/notes_folder_config.dart';
import 'package:gitjournal/core/notes_folder_fs.dart';
void main() {
group('Notes Cache', () {
late Directory tempDir;
String cacheFilePath;
var fileList = [
'/base/file.md',
'/base/d1/d2/file.md',
'/base/d5/file.md',
'/base/d1/file.md',
];
late NotesCache cache;
late NotesFolderConfig config;
setUp(() async {
tempDir = await Directory.systemTemp.createTemp('__notes_test__');
SharedPreferences.setMockInitialValues({});
config = NotesFolderConfig('', await SharedPreferences.getInstance());
cacheFilePath = p.join(tempDir.path, "cache.raw");
cache = NotesCache(
filePath: cacheFilePath,
notesBasePath: '/base',
folderConfig: config,
);
});
tearDown(() async {
tempDir.deleteSync(recursive: true);
});
test('Should load list correctly', () async {
var loadedList = await cache.loadFromDisk();
expect(loadedList.length, 0);
await cache.saveToDisk(fileList);
loadedList = await cache.loadFromDisk();
expect(loadedList, fileList);
});
test('Should create directory structure accurately', () async {
await cache.saveToDisk(fileList);
var rootFolder = NotesFolderFS(null, '/base', config);
await cache.load(rootFolder);
expect(rootFolder.subFolders.length, 2);
expect(rootFolder.notes.length, 1);
// d1
var folder = rootFolder.subFolders[0];
expect(folder.subFolders.length, 1);
expect(folder.notes.length, 1);
// d1/d2
folder = rootFolder.subFolders[0].subFolders[0];
expect(folder.subFolders.length, 0);
expect(folder.notes.length, 1);
// d6
folder = rootFolder.subFolders[1];
expect(folder.subFolders.length, 0);
expect(folder.notes.length, 1);
});
});
}