75 lines
2.1 KiB
Dart
75 lines
2.1 KiB
Dart
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 :(
|
|
}
|