import 'package:flutter/cupertino.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:please_pay_me/theme/theme.dart'; void main() { group('ThemePreference', () { test('parse falls back to system', () { expect(ThemePreference.parse(null), ThemePreference.system); expect(ThemePreference.parse('nope'), ThemePreference.system); expect(ThemePreference.parse('light'), ThemePreference.light); expect(ThemePreference.parse('dark'), ThemePreference.dark); }); test('resolve follows the platform only in system mode', () { expect(ThemePreference.system.resolve(Brightness.dark), Brightness.dark); expect(ThemePreference.light.resolve(Brightness.dark), Brightness.light); expect(ThemePreference.dark.resolve(Brightness.light), Brightness.dark); }); }); group('systemUiOverlayFor', () { test('dark paints the Android nav bar transparent black without a scrim', () { final overlay = systemUiOverlayFor(Brightness.dark); expect(overlay.systemNavigationBarColor, const Color(0x00000000)); expect(overlay.systemNavigationBarContrastEnforced, isFalse); expect(overlay.systemNavigationBarIconBrightness, Brightness.light); }); }); group('ThemeController', () { test('restore and setPreference persist independently of session', () async { final store = MemoryThemeStore('dark'); final controller = ThemeController(store: store); await controller.restore(); expect(controller.preference, ThemePreference.dark); await controller.setPreference(ThemePreference.light); expect(controller.preference, ThemePreference.light); expect(store.value, 'light'); expect(controller.resolve(Brightness.dark), Brightness.light); }); }); }