45 lines
1.8 KiB
Dart
45 lines
1.8 KiB
Dart
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);
|
|
});
|
|
});
|
|
}
|