fix: alot

This commit is contained in:
2026-10-19 21:41:34 +02:00
parent 30dd74af90
commit b0074aeb3f
40 changed files with 1979 additions and 405 deletions
+43 -29
View File
@@ -3,46 +3,60 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:kooltap/app/app_lifecycle_lock.dart';
void main() {
test('locks when the app is no longer active', () {
var lockCount = 0;
final observer = AppLifecycleLockObserver(onLock: () => lockCount++);
late DateTime now;
late int lockCount;
for (final state in [
AppLifecycleState.inactive,
AppLifecycleState.hidden,
AppLifecycleState.paused,
AppLifecycleState.detached,
]) {
observer.didChangeAppLifecycleState(state);
}
AppLifecycleLockObserver observer({bool Function()? shouldLock}) {
return AppLifecycleLockObserver(
onLock: () => lockCount++,
shouldLock: shouldLock,
clock: () => now,
);
}
expect(lockCount, 4);
setUp(() {
now = DateTime(2026, 1, 1, 20);
lockCount = 0;
});
test('does not lock while the app is active', () {
var lockCount = 0;
final observer = AppLifecycleLockObserver(onLock: () => lockCount++);
test('locks when the app returns after the grace period', () {
final lock = observer();
observer.didChangeAppLifecycleState(AppLifecycleState.resumed);
lock.didChangeAppLifecycleState(AppLifecycleState.inactive);
lock.didChangeAppLifecycleState(AppLifecycleState.hidden);
lock.didChangeAppLifecycleState(AppLifecycleState.paused);
now = now.add(const Duration(seconds: 30));
lock.didChangeAppLifecycleState(AppLifecycleState.resumed);
expect(lockCount, 1);
});
test('does not lock after a short trip to the background', () {
final lock = observer();
lock.didChangeAppLifecycleState(AppLifecycleState.paused);
now = now.add(const Duration(seconds: 10));
lock.didChangeAppLifecycleState(AppLifecycleState.resumed);
expect(lockCount, 0);
});
test('does not lock when only inactive', () {
final lock = observer();
lock.didChangeAppLifecycleState(AppLifecycleState.inactive);
now = now.add(const Duration(minutes: 5));
lock.didChangeAppLifecycleState(AppLifecycleState.resumed);
expect(lockCount, 0);
});
test('does not lock when auto-lock is disabled', () {
var lockCount = 0;
final observer = AppLifecycleLockObserver(
onLock: () => lockCount++,
shouldLock: () => false,
);
final lock = observer(shouldLock: () => false);
for (final state in [
AppLifecycleState.inactive,
AppLifecycleState.hidden,
AppLifecycleState.paused,
AppLifecycleState.detached,
]) {
observer.didChangeAppLifecycleState(state);
}
lock.didChangeAppLifecycleState(AppLifecycleState.paused);
now = now.add(const Duration(minutes: 5));
lock.didChangeAppLifecycleState(AppLifecycleState.resumed);
expect(lockCount, 0);
});