68 lines
1.6 KiB
Dart
68 lines
1.6 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:marianum_mobile/background/widget_background_task.dart';
|
|
|
|
void main() {
|
|
final now = DateTime(2026, 8, 6, 12, 0);
|
|
|
|
group('shouldSkipRefresh', () {
|
|
test('skips when the snapshot is younger than the debounce window', () {
|
|
expect(
|
|
shouldSkipRefresh(
|
|
fetchedAt: now.subtract(const Duration(minutes: 5)),
|
|
now: now,
|
|
force: false,
|
|
),
|
|
isTrue,
|
|
);
|
|
});
|
|
|
|
test('refreshes when the snapshot is older than the debounce window', () {
|
|
expect(
|
|
shouldSkipRefresh(
|
|
fetchedAt: now.subtract(const Duration(minutes: 15)),
|
|
now: now,
|
|
force: false,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('refreshes exactly at the debounce boundary', () {
|
|
expect(
|
|
shouldSkipRefresh(
|
|
fetchedAt: now.subtract(WidgetBackgroundTask.refreshDebounce),
|
|
now: now,
|
|
force: false,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('force bypasses a fresh snapshot', () {
|
|
expect(
|
|
shouldSkipRefresh(
|
|
fetchedAt: now.subtract(const Duration(minutes: 1)),
|
|
now: now,
|
|
force: true,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('refreshes when no snapshot exists yet', () {
|
|
expect(shouldSkipRefresh(fetchedAt: null, now: now, force: false), isFalse);
|
|
});
|
|
|
|
test('refreshes when fetchedAt lies in the future (clock change)', () {
|
|
expect(
|
|
shouldSkipRefresh(
|
|
fetchedAt: now.add(const Duration(minutes: 5)),
|
|
now: now,
|
|
force: false,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
});
|
|
}
|