mirror of
https://github.com/FoggedLens/deflock-app.git
synced 2026-07-08 21:58:04 +02:00
Network status indicator should only respect the latest / current request. Others finish in background. Replace stupid bools with an enum to track state. Be smarter about split requests.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import '../../lib/services/network_status.dart';
|
||||
|
||||
void main() {
|
||||
group('NetworkStatus', () {
|
||||
late NetworkStatus networkStatus;
|
||||
|
||||
setUp(() {
|
||||
networkStatus = NetworkStatus.instance;
|
||||
networkStatus.clear(); // Start clean for each test
|
||||
});
|
||||
|
||||
test('starts with idle status', () {
|
||||
expect(networkStatus.status, NetworkRequestStatus.idle);
|
||||
});
|
||||
|
||||
test('transitions through loading states correctly', () {
|
||||
networkStatus.setLoading();
|
||||
expect(networkStatus.status, NetworkRequestStatus.loading);
|
||||
|
||||
networkStatus.setSplitting();
|
||||
expect(networkStatus.status, NetworkRequestStatus.splitting);
|
||||
|
||||
networkStatus.setSuccess();
|
||||
expect(networkStatus.status, NetworkRequestStatus.success);
|
||||
});
|
||||
|
||||
test('handles error states correctly', () {
|
||||
networkStatus.setTimeout();
|
||||
expect(networkStatus.status, NetworkRequestStatus.timeout);
|
||||
|
||||
networkStatus.setRateLimited();
|
||||
expect(networkStatus.status, NetworkRequestStatus.rateLimited);
|
||||
|
||||
networkStatus.setError();
|
||||
expect(networkStatus.status, NetworkRequestStatus.error);
|
||||
|
||||
networkStatus.setNoData();
|
||||
expect(networkStatus.status, NetworkRequestStatus.noData);
|
||||
});
|
||||
|
||||
test('clear() resets to idle', () {
|
||||
networkStatus.setError();
|
||||
expect(networkStatus.status, NetworkRequestStatus.error);
|
||||
|
||||
networkStatus.clear();
|
||||
expect(networkStatus.status, NetworkRequestStatus.idle);
|
||||
});
|
||||
|
||||
test('auto-reset timers work (success)', () async {
|
||||
networkStatus.setSuccess();
|
||||
expect(networkStatus.status, NetworkRequestStatus.success);
|
||||
|
||||
// Wait for auto-reset (2 seconds + buffer)
|
||||
await Future.delayed(const Duration(milliseconds: 2100));
|
||||
expect(networkStatus.status, NetworkRequestStatus.idle);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user