Add retry_queue_test.dart
Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
import 'package:mocktail/mocktail.dart';
|
||||
import 'package:stream_chat/src/client/retry_policy.dart';
|
||||
import 'package:stream_chat/src/client/retry_queue.dart';
|
||||
import 'package:stream_chat/src/core/models/event.dart';
|
||||
import 'package:stream_chat/src/core/models/message.dart';
|
||||
import 'package:stream_chat/src/event_type.dart';
|
||||
import 'package:test/scaffolding.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import '../mocks.dart';
|
||||
|
||||
void main() {
|
||||
late final channel = MockRetryQueueChannel();
|
||||
late final logger = MockLogger();
|
||||
late RetryQueue retryQueue;
|
||||
|
||||
setUpAll(() {
|
||||
final retryPolicy = RetryPolicy(
|
||||
shouldRetry: (_, attempt, __) => attempt < 5,
|
||||
retryTimeout: (_, attempt, __) => Duration(seconds: attempt),
|
||||
);
|
||||
when(() => channel.client.retryPolicy).thenReturn(retryPolicy);
|
||||
|
||||
when(() => channel.client.on(EventType.connectionRecovered)).thenAnswer(
|
||||
(_) => Stream.value(Event(
|
||||
type: EventType.connectionRecovered,
|
||||
online: false,
|
||||
)),
|
||||
);
|
||||
|
||||
when(() => channel.on(any(), any(), any(), any())).thenAnswer(
|
||||
(_) => Stream.value(
|
||||
Event(type: EventType.any),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
setUp(() {
|
||||
retryQueue = RetryQueue(channel: channel, logger: logger);
|
||||
});
|
||||
|
||||
tearDown(() {
|
||||
retryQueue.dispose();
|
||||
});
|
||||
|
||||
group('`.add`', () {
|
||||
test('should return if message list is empty', () {
|
||||
expect(() => retryQueue.add([]), returnsNormally);
|
||||
verifyNever(() => logger.info(any()));
|
||||
});
|
||||
|
||||
test('should return if queue already contains the message', () {
|
||||
final message = Message(
|
||||
id: 'test-message-id',
|
||||
text: 'Sample message test',
|
||||
);
|
||||
retryQueue.add([message]);
|
||||
expect(() => retryQueue.add([message]), returnsNormally);
|
||||
// Called only for the first message
|
||||
verify(() => logger.info('Adding 1 messages')).called(1);
|
||||
});
|
||||
|
||||
test('`.add` should add failed request to the queue', () async {
|
||||
final message = Message(
|
||||
id: 'test-message-id',
|
||||
text: 'Sample message test',
|
||||
);
|
||||
retryQueue.add([message]);
|
||||
expect(retryQueue.hasMessages, isTrue);
|
||||
});
|
||||
});
|
||||
|
||||
// TODO: Add more tests once macbook is fixed :(
|
||||
}
|
||||
Reference in New Issue
Block a user