fix: alot
This commit is contained in:
@@ -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);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user