import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:pluriwave/estado/estado_radio.dart'; import 'package:pluriwave/l10n/gen/app_localizations.dart'; import 'package:pluriwave/tema/pluriwave_tokens.dart'; import 'package:pluriwave/widgets/pluri_glass_surface.dart'; import 'package:pluriwave/widgets/tarjeta_emisora.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../helpers/fakes.dart'; /// S4 (Tier 1 visual fidelity): the prototype's dominant ROW radius is 14 /// (t4 lines 175, 227, 302 — Favoritos/Buscar/results rows, all rendered by /// `TarjetaEmisora(esCompacta: true)`), its dominant CARD radius is 18 /// (lines 155-160 — "Cerca de ti", rendered by the non-compact grid card). void main() { setUp(() { SharedPreferences.setMockInitialValues({}); }); Widget host(Widget child) { final estado = EstadoRadio( audio: FakeServicioAudio(), favoritos: FakeServicioFavoritos(), radio: FakeServicioRadio(), servicioEcualizador: FakeServicioEcualizador(), iniciarAutomaticamente: false, ); addTearDown(estado.dispose); return ChangeNotifierProvider.value( value: estado, child: MaterialApp( locale: const Locale('en'), localizationsDelegates: AppLocalizations.localizationsDelegates, supportedLocales: AppLocalizations.supportedLocales, home: Scaffold(body: Center(child: child)), ), ); } BorderRadius radiusOf(WidgetTester tester) { final surface = tester.widget( find.byType(PluriGlassSurface), ); return surface.borderRadius as BorderRadius; } testWidgets('esCompacta:true (row) uses radiusSm — 14', (tester) async { await tester.pumpWidget( host( SizedBox( width: 320, child: TarjetaEmisora( emisora: emisoraDemo(uuid: 'row', nombre: 'Row FM'), esCompacta: true, ), ), ), ); await tester.pump(); expect( radiusOf(tester), BorderRadius.circular(PluriWaveTokens.dark.radiusSm), ); expect(PluriWaveTokens.dark.radiusSm, 14); }); testWidgets('esCompacta:false (card) uses radiusMd — 18', (tester) async { await tester.pumpWidget( host( SizedBox( width: 220, height: 320, child: TarjetaEmisora( emisora: emisoraDemo(uuid: 'card', nombre: 'Card FM'), ), ), ), ); await tester.pump(); expect( radiusOf(tester), BorderRadius.circular(PluriWaveTokens.dark.radiusMd), ); expect(PluriWaveTokens.dark.radiusMd, 18); }); }