108 lines
2.3 KiB
Dart
108 lines
2.3 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:marianum_mobile/state/app/infrastructure/loadable_state/loadable_state_indicators.dart';
|
|
|
|
void main() {
|
|
group('shouldShowOfflineBar', () {
|
|
test('shows when offline with cache and not loading', () {
|
|
expect(
|
|
shouldShowOfflineBar(
|
|
hasContent: true,
|
|
loading: false,
|
|
connectivityKnown: true,
|
|
connected: false,
|
|
),
|
|
isTrue,
|
|
);
|
|
});
|
|
|
|
test('is suppressed while loading even if offline with cache', () {
|
|
expect(
|
|
shouldShowOfflineBar(
|
|
hasContent: true,
|
|
loading: true,
|
|
connectivityKnown: true,
|
|
connected: false,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('is hidden without cached content', () {
|
|
expect(
|
|
shouldShowOfflineBar(
|
|
hasContent: false,
|
|
loading: false,
|
|
connectivityKnown: true,
|
|
connected: false,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('is hidden while connectivity is unknown', () {
|
|
expect(
|
|
shouldShowOfflineBar(
|
|
hasContent: true,
|
|
loading: false,
|
|
connectivityKnown: false,
|
|
connected: false,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('is hidden when connected', () {
|
|
expect(
|
|
shouldShowOfflineBar(
|
|
hasContent: true,
|
|
loading: false,
|
|
connectivityKnown: true,
|
|
connected: true,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
});
|
|
|
|
group('shouldRefetch', () {
|
|
final window = const Duration(seconds: 10);
|
|
final base = DateTime(2026, 1, 1, 12, 0, 0);
|
|
|
|
test('is false within the throttle window', () {
|
|
expect(
|
|
shouldRefetch(
|
|
base,
|
|
base.add(const Duration(seconds: 9)),
|
|
window,
|
|
hasReFetch: true,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('is true once the window has elapsed', () {
|
|
expect(
|
|
shouldRefetch(
|
|
base,
|
|
base.add(const Duration(seconds: 10)),
|
|
window,
|
|
hasReFetch: true,
|
|
),
|
|
isTrue,
|
|
);
|
|
});
|
|
|
|
test('is false without a refetch callback', () {
|
|
expect(
|
|
shouldRefetch(
|
|
base,
|
|
base.add(const Duration(minutes: 5)),
|
|
window,
|
|
hasReFetch: false,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
});
|
|
}
|