A whole lot of stuff
This commit is contained in:
parent
faf319322a
commit
ad850d2be6
50 changed files with 3013 additions and 213 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue