import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:nuvolari/features/timeline/data_age_banner.dart'; import 'package:nuvolari/l10n/app_localizations.dart'; void main() { late AppLocalizations l10n; setUpAll(() async { l10n = await AppLocalizations.delegate.load(const Locale('it')); }); group('formatDataAge', () { test('uses minutes below an hour', () { expect(formatDataAge(l10n, Duration.zero), 'Aggiornato ora'); expect( formatDataAge(l10n, const Duration(minutes: 1)), 'Aggiornato 1 minuto fa', ); expect( formatDataAge(l10n, const Duration(minutes: 42)), 'Aggiornato 42 minuti fa', ); expect( formatDataAge(l10n, const Duration(minutes: 59, seconds: 59)), 'Aggiornato 59 minuti fa', ); }); test('switches to hours at the hour mark', () { expect( formatDataAge(l10n, const Duration(hours: 1)), 'Aggiornato 1 ora fa', ); expect( formatDataAge(l10n, const Duration(hours: 5, minutes: 30)), 'Aggiornato 5 ore fa', ); expect( formatDataAge(l10n, const Duration(hours: 23, minutes: 59)), 'Aggiornato 23 ore fa', ); }); // The bug this replaced rendered eight-month-old demo data as "Aggiornato // 342535 minuti fa", a number nobody converts in their head. test('switches to days beyond a day', () { expect( formatDataAge(l10n, const Duration(days: 1)), 'Aggiornato 1 giorno fa', ); expect( formatDataAge(l10n, const Duration(days: 4)), 'Aggiornato 4 giorni fa', ); expect( formatDataAge(l10n, const Duration(days: 238)), 'Aggiornato 238 giorni fa', ); }); // Clock skew, or a worker publishing a frame stamped slightly ahead, must // not produce "Aggiornato -3 minuti fa". test('treats a negative age as now', () { expect( formatDataAge(l10n, const Duration(minutes: -5)), 'Aggiornato ora', ); }); }); }