platform/sandbox/eventbus/test/history_test.dart

75 lines
2.1 KiB
Dart

import 'package:clock/clock.dart';
import 'package:event_bus_plus/event_bus_plus.dart';
import 'package:given_when_then_unit_test/given_when_then_unit_test.dart';
import 'package:shouldly/shouldly.dart';
import 'package:test/test.dart';
import 'models.dart';
void main() {
late IEventBus bus;
before(() {
bus = EventBus(maxHistoryLength: 3);
});
test('Keep history', () {
final date = DateTime(2022, 9, 1);
withClock(Clock.fixed(date), () {
bus.fire(const SomeEvent());
bus.fire(const SomeAnotherEvent());
bus.fire(const FollowAppEvent('@username'));
bus.history.should.be([
EventBusHistoryEntry(const SomeEvent(), date),
EventBusHistoryEntry(const SomeAnotherEvent(), date),
EventBusHistoryEntry(const FollowAppEvent('@username'), date),
]);
});
});
test('Keep full history without debounce', () {
final date = DateTime(2022, 9, 1, 4, 59, 55);
withClock(Clock.fixed(date), () {
bus.fire(const SomeEvent());
bus.fire(const SomeEvent());
bus.fire(const SomeAnotherEvent());
bus.history.should.be([
EventBusHistoryEntry(const SomeEvent(), date),
EventBusHistoryEntry(const SomeEvent(), date),
EventBusHistoryEntry(const SomeAnotherEvent(), date),
]);
});
});
test('Clear history', () {
bus.fire(const SomeEvent());
bus.fire(const SomeAnotherEvent());
bus.clearHistory();
bus.history.should.beEmpty();
});
group('History length', () {
test('Add more than max', () {
final date = DateTime(2022, 9, 1, 4, 59, 55);
withClock(Clock.fixed(date), () {
bus.fire(const SomeEvent());
bus.fire(const SomeAnotherEvent());
bus.fire(const FollowAppEvent('@username'));
bus.fire(const NewCommentEvent('text'));
bus.history.length.should.be(3);
bus.history.should.be([
EventBusHistoryEntry(const SomeAnotherEvent(), date),
EventBusHistoryEntry(const FollowAppEvent('@username'), date),
EventBusHistoryEntry(const NewCommentEvent('text'), date),
]);
});
});
});
}