Files
Client/test/state/loadable_state_visibility_test.dart
T

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,
);
});
});
}