import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; import 'package:halkyon_app/halkyon_app.dart'; void main() { late Directory root; late PersonFolders folders; setUp(() async { root = await Directory.systemTemp.createTemp('people_'); folders = PersonFolders(root); }); tearDown(() => root.delete(recursive: true)); Future write(String person) async { final folder = await Directory('${root.path}/$person').create(); await File('${folder.path}/sync.sqlite').writeAsString(person); } Future> people() async => [ for (final entry in root.listSync()) entry.uri.pathSegments.lastWhere((segment) => segment.isNotEmpty), ]..sort(); test("opening a person's folder wipes everyone else's", () async { await write('anonymous-1'); await write('person-1'); final folder = await folders.openOnly('person-1'); expect(await people(), ['person-1']); expect( await File('${folder.path}/sync.sqlite').readAsString(), 'person-1', reason: "the person's own data stays", ); }); test('creates the folder of a person new to this device', () async { await write('anonymous-1'); final folder = await folders.openOnly('anonymous-2'); expect(folder.existsSync(), isTrue); expect(await people(), ['anonymous-2']); }); }