Files
GitJournal/test/note_storage_test.dart
Vishesh Handa 06824ccee3 Note: Setting the 'created' property should update the NoteData
We shouldn't just do it when saving the note, this way when viewing the
raw editor, the created field is show for new notes.
2019-10-11 02:18:34 +02:00

73 lines
1.9 KiB
Dart

import 'dart:collection';
import 'dart:io';
import 'package:gitjournal/datetime_utils.dart';
import 'package:gitjournal/note.dart';
import 'package:gitjournal/storage/serializers.dart';
import 'package:path/path.dart' as p;
import 'package:test/test.dart';
void main() {
group('NoteStorage', () {
var notes = <Note>[];
String n1Path;
String n2Path;
Directory tempDir;
setUpAll(() async {
tempDir = await Directory.systemTemp.createTemp('__storage_test__');
var dt = DateTime(2019, 12, 2, 5, 4, 2);
// ignore: prefer_collection_literals
var props = LinkedHashMap<String, dynamic>();
props['created'] = toIso8601WithTimezone(dt);
n1Path = p.join(tempDir.path, "1.md");
n2Path = p.join(tempDir.path, "2.md");
var n1 = Note(n1Path);
n1.body = "test";
n1.created = dt;
var n2 = Note(n2Path);
n2.data = NoteData("test2", props);
notes = [n1, n2];
});
tearDownAll(() async {
tempDir.deleteSync(recursive: true);
});
test('Should persist and load Notes from disk', () async {
await Future.forEach(notes, (Note note) async {
await note.save();
});
expect(tempDir.listSync(recursive: true).length, 2);
expect(File(n1Path).existsSync(), isTrue);
expect(File(n2Path).existsSync(), isTrue);
var loadedNotes = <Note>[];
await Future.forEach(notes, (origNote) async {
var note = Note(origNote.filePath);
var r = await note.load();
expect(r, NoteLoadState.Loaded);
loadedNotes.add(note);
});
loadedNotes.sort();
notes.sort();
expect(loadedNotes, notes);
await Future.forEach(notes, (Note note) async {
await note.remove();
});
expect(tempDir.listSync(recursive: true).length, 0);
expect(File(n1Path).existsSync(), isFalse);
expect(File(n2Path).existsSync(), isFalse);
});
});
}