A whole lot of stuff

This commit is contained in:
Courtney Arnold 2026-08-18 11:04:58 -05:00
parent faf319322a
commit ad850d2be6
50 changed files with 3013 additions and 213 deletions

View file

@ -180,10 +180,14 @@ void main() {
syncService.configure('app-folder-id');
final result = await syncService.syncNow(
beforeUpload: () async => calls.add('beforeUpload'),
beforeUpload: () async {
calls.add('beforeUpload');
return true;
},
);
expect(result.ranSync, isTrue);
expect(result.adGateBlocked, isFalse);
expect(calls.first, 'download', reason: 'pull/merge happens first');
expect(calls[1], 'beforeUpload');
// Everything after beforeUpload is an upload (the data-file push,
@ -200,12 +204,39 @@ void main() {
final syncService = CloudSyncService(provider: provider, databaseService: databaseService);
syncService.configure('app-folder-id');
await syncService.syncNow(beforeUpload: () async => calls.add('beforeUpload'));
await syncService.syncNow(
beforeUpload: () async {
calls.add('beforeUpload');
return true;
},
);
expect(calls.first, 'beforeUpload');
expect(calls, contains('upload:$dataFileName'));
});
test('a false return blocks the upload but keeps whatever was already pulled/merged',
() async {
final calls = <String>[];
final remoteDbBytes = await File(databaseService.databasePath).readAsBytes();
final session = _FakeSession();
session.existingDataFile = CloudFileInfo(id: 'remote-db-id', versionTag: 'remote-v1');
session.remoteDbBytes = remoteDbBytes;
session.onDownload = () => calls.add('download');
session.onUpload = (name) => calls.add('upload:$name');
final provider = _FakeProvider(session);
final syncService = CloudSyncService(provider: provider, databaseService: databaseService);
syncService.configure('app-folder-id');
final result = await syncService.syncNow(beforeUpload: () async => false);
expect(result.ranSync, isFalse);
expect(result.adGateBlocked, isTrue);
expect(calls, ['download'], reason: 'pull/merge still ran; nothing was uploaded');
expect(session.deletedFileIds, ['lock-id'],
reason: 'the lock must still be released when the gate blocks the upload');
});
test('omitting it changes nothing — every other syncNow call site keeps working', () async {
final session = _FakeSession();
final provider = _FakeProvider(session);