Fix timeout (#162)
diff --git a/lib/src/usage_impl.dart b/lib/src/usage_impl.dart
index 4d89968..b1ea566 100644
--- a/lib/src/usage_impl.dart
+++ b/lib/src/usage_impl.dart
@@ -228,7 +228,7 @@
_trySendBatches(Completer<void>());
}
var f = Future.wait(_futures);
- if (timeout != null) f = f.timeout(timeout);
+ if (timeout != null) f = f.timeout(timeout, onTimeout: () => []);
return f;
}
diff --git a/test/src/common.dart b/test/src/common.dart
index e934e71..b08d89b 100644
--- a/test/src/common.dart
+++ b/test/src/common.dart
@@ -28,6 +28,23 @@
String get last => mockPostHandler.last;
}
+class StallingAnalyticsImplMock extends AnalyticsImpl {
+ StallingAnalyticsImplMock(String trackingId, {Map<String, dynamic>? props})
+ : super(trackingId, MockProperties(props), StallingPostHandler(),
+ applicationName: 'Test App', applicationVersion: '0.1');
+}
+
+class StallingPostHandler extends PostHandler {
+ @override
+ void close() {}
+
+ @override
+ String encodeHit(Map<String, String> hit) => jsonEncode(hit);
+
+ @override
+ Future sendPost(String url, List<String> batch) => Completer().future;
+}
+
class MockProperties extends PersistentProperties {
Map<String, dynamic> props = {};
diff --git a/test/usage_impl_test.dart b/test/usage_impl_test.dart
index 21111b3..8b2739a 100644
--- a/test/usage_impl_test.dart
+++ b/test/usage_impl_test.dart
@@ -90,6 +90,13 @@
return mock.waitForLastPing(timeout: Duration(milliseconds: 100));
});
+ test('waitForLastPing times out', () async {
+ var mock = StallingAnalyticsImplMock('blahID');
+ // ignore: unawaited_futures
+ mock.sendScreenView('foo');
+ await mock.waitForLastPing(timeout: Duration(milliseconds: 100));
+ });
+
group('clientId', () {
test('is available immediately', () {
var mock = createMock();