- AppDatabase with schemaVersion 1, in-memory executor for testing - Database provider with @Riverpod(keepAlive: true) - AppTheme with sage green seed ColorScheme and warm surface overrides - ThemeNotifier with SharedPreferences persistence, defaults to system - Full German ARB localization (15 keys) with proper umlauts - Minimal main.dart with ProviderScope placeholder - Drift schema v1 captured via make-migrations - All .g.dart files generated via build_runner - Wave 0 tests: database (3), color scheme (6), theme (3), localization (2) -- 14 total, all passing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
42 lines
1.3 KiB
Dart
42 lines
1.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:household_keeper/core/theme/theme_provider.dart';
|
|
|
|
void main() {
|
|
group('ThemeNotifier', () {
|
|
setUp(() {
|
|
SharedPreferences.setMockInitialValues({});
|
|
});
|
|
|
|
test('defaults to ThemeMode.system', () {
|
|
final container = ProviderContainer();
|
|
addTearDown(container.dispose);
|
|
|
|
final themeMode = container.read(themeProvider);
|
|
expect(themeMode, equals(ThemeMode.system));
|
|
});
|
|
|
|
test('setThemeMode(dark) updates state to dark', () async {
|
|
final container = ProviderContainer();
|
|
addTearDown(container.dispose);
|
|
|
|
await container.read(themeProvider.notifier).setThemeMode(
|
|
ThemeMode.dark,
|
|
);
|
|
expect(container.read(themeProvider), equals(ThemeMode.dark));
|
|
});
|
|
|
|
test('setThemeMode(light) updates state to light', () async {
|
|
final container = ProviderContainer();
|
|
addTearDown(container.dispose);
|
|
|
|
await container.read(themeProvider.notifier).setThemeMode(
|
|
ThemeMode.light,
|
|
);
|
|
expect(container.read(themeProvider), equals(ThemeMode.light));
|
|
});
|
|
});
|
|
}
|