76 lines
2.1 KiB
Dart
76 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),
|
||
|
]);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
}
|