02a121703f
- core/error : Result<S> maison (Ok/Err) + Failure scellee avec egalite de valeur - core/theme : AppTheme Material 3 (palette coucher, cibles tactiles enfant) - core/router : routes nommees child/parentGate/parent (Navigator 1, placeholders) - core/di : conventions providers - CLAUDE.md §7 : Result maison & Navigator 1 actes (YAGNI) - ROADMAP : 0.3 cochee, Jalon 0 termine - corrections code review : egalite Failure, assertions tests, Map.unmodifiable Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
41 lines
1.3 KiB
Dart
41 lines
1.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:storytime/core/theme/app_theme.dart';
|
|
|
|
void main() {
|
|
group('AppTheme', () {
|
|
testWidgets('useMaterial3 est activé', (tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(theme: AppTheme.light(), home: const SizedBox.shrink()),
|
|
);
|
|
|
|
final theme = Theme.of(tester.element(find.byType(SizedBox)));
|
|
expect(theme.useMaterial3, isTrue);
|
|
});
|
|
|
|
testWidgets('la couleur primaire correspond à la palette coucher', (
|
|
tester,
|
|
) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(theme: AppTheme.light(), home: const SizedBox.shrink()),
|
|
);
|
|
|
|
final theme = Theme.of(tester.element(find.byType(SizedBox)));
|
|
// Palette « coucher » : violet/indigo doux.
|
|
// On vérifie que la teinte de seed est bien dans le spectre attendu.
|
|
final primary = theme.colorScheme.primary;
|
|
// HSL : le bleu/violet doit dominer sur le rouge et le vert.
|
|
final hsl = HSLColor.fromColor(primary);
|
|
expect(
|
|
hsl.hue,
|
|
inInclusiveRange(200.0, 320.0),
|
|
reason: 'La couleur primaire doit être dans le spectre bleu-violet',
|
|
);
|
|
});
|
|
|
|
test('AppTheme.light() retourne un ThemeData non nul', () {
|
|
expect(AppTheme.light(), isA<ThemeData>());
|
|
});
|
|
});
|
|
}
|