etm-powersync-app/test/chart_tooltip_test.dart
Patrick Schurig 09556039e4 feat(énergie): infobulles avec l'heure sur tous les graphes
Puissances, Qui consomme et Prévision PV affichent au toucher l'heure puis
une ligne par série (nommée comme la légende) ; Qui consomme donne la part
de chaque charge, pas le cumul empilé. Les barres Jour / Semaine / Mois /
Année donnent leur période et le détail autoconsommé / exporté / soutiré.
Les bandes invisibles de la fourchette se taisent ; -0,00 kW se lit 0,00.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011fNqASdws99s94UqQqBYoB
2026-10-17 08:48:15 +02:00

37 lines
1.4 KiB
Dart

/// Infobulles des graphes (Patrick, 2026-10-17 : « il manque l'heure »).
library;
import 'package:etm_powersync_app/widgets/chart_tooltip.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
String _texte(InlineSpan? s) => s is TextSpan
? '${s.text ?? ''}${(s.children ?? []).map(_texte).join()}'
: '';
void main() {
testWidgets('l\'heure s\'écrit UNE fois, sur la première ligne affichée — pas sur une tue', (t) async {
final items = itemsInfobulle('14:30', [
null, // bande invisible
(couleur: Colors.amber, nom: 'Mesuré', valeur: '1,20 kW'),
(couleur: Colors.yellow, nom: 'Prévu', valeur: '1,50 kW'),
]);
// Alignés sur les séries touchées : fl_chart l'exige.
expect(items, hasLength(3));
expect(items[0], isNull);
final t1 = (items[1]!.children ?? []).map(_texte).join();
final t2 = (items[2]!.children ?? []).map(_texte).join();
expect(t1, startsWith('14:30\n'));
expect(t1, contains('Mesuré 1,20 kW'));
expect(t2, isNot(contains('14:30')));
});
testWidgets('une bulle de barre porte sa période en tête', (t) async {
final b = itemBarre('ven. 17/10', [
(couleur: Colors.blue, nom: 'Consommation', valeur: '12,40 kWh'),
]);
final t = (b.children ?? []).map(_texte).join();
expect(t, 'ven. 17/10\n● Consommation 12,40 kWh');
});
}