Refine iOS navigation, media controls, and background sync
Build APK / build (push) Successful in 5m50s

This commit is contained in:
Ayushya Amitabh
2026-10-06 23:18:50 -04:00
parent c5b46fd493
commit ce2273c9a6
39 changed files with 2309 additions and 647 deletions
@@ -0,0 +1,54 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:noo/providers/settings_controller.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
test(
'defaults to top and safely handles an unknown saved position',
() async {
for (final saved in [null, 'unknown']) {
SharedPreferences.setMockInitialValues({
'ui_selection_bar_position': ?saved,
});
final settings = SettingsController();
await Future<void>.delayed(Duration.zero);
expect(settings.selectionBarPosition, SelectionBarPosition.top);
settings.dispose();
}
},
);
test(
'bottom position persists and restores across controller creation',
() async {
SharedPreferences.setMockInitialValues({});
final settings = SettingsController();
await Future<void>.delayed(Duration.zero);
settings.setSelectionBarPosition(SelectionBarPosition.bottom);
await Future<void>.delayed(Duration.zero);
final restored = SettingsController();
await Future<void>.delayed(Duration.zero);
expect(restored.selectionBarPosition, SelectionBarPosition.bottom);
settings.dispose();
restored.dispose();
},
);
test(
'avatar position defaults to top and restores a saved bottom choice',
() async {
SharedPreferences.setMockInitialValues({});
final settings = SettingsController();
await Future<void>.delayed(Duration.zero);
expect(settings.avatarPosition, AvatarPosition.top);
settings.setAvatarPosition(AvatarPosition.bottom);
await Future<void>.delayed(Duration.zero);
final restored = SettingsController();
await Future<void>.delayed(Duration.zero);
expect(restored.avatarPosition, AvatarPosition.bottom);
settings.dispose();
restored.dispose();
},
);
}