import 'package:flutter_test/flutter_test.dart';
import 'package:intl/date_symbol_data_local.dart' as date_data;
import 'package:consumer_app/core/formatting/localized_formatters.dart';
import 'package:consumer_app/models/content_models.dart';
void main() {
setUpAll(date_data.initializeDateFormatting);
test('numbers use the selected locale', () {
expect(formatCount(1234, 'de'), '1.234');
expect(formatCount(1234, 'en'), '1,234');
expect(formatDistance(1.5, 'de'), '1,5');
expect(formatDistance(1.5, 'en'), '1.5');
expect(formatDistanceLabel(0.3, 'de'), '300 m');
expect(formatDistanceLabel(1.25, 'de'), '1,3 km');
expect(formatDistanceLabel(1.25, 'en'), '1.3 km');
});
test('dates use localized date and time formatting', () {
final german = formatDate('2026-09-21T14:30:00Z', 'de');
final english = formatDate('2026-09-21T14:30:00Z', 'en');
expect(german, contains('2026'));
expect(german, contains(':30'));
expect(english, contains('2026'));
expect(english, contains(':30'));
expect(formatDate('not-a-date', 'de'), 'not-a-date');
});
test('does not invent midnight for date-only values', () {
final formatted = formatDate('2026-10-01', 'de');
expect(formatted, isNot(contains('00:00')));
expect(formatted, contains('2026'));
expect(
formatDate('2026-10-01T00:00:00', 'de', includeTime: false),
isNot(contains('00:00')),
);
});
test('opening hours preserve localized day labels and closed states', () {
const openingHours = OpeningHoursData(
raw: '',
parsed: true,
entries: [
OpeningHoursEntry(
days: ['mon', 'tue'],
slots: [
OpeningHoursSlot(open: '10:00', close: '18:00', overnight: false),
],
closed: false,
),
OpeningHoursEntry(days: ['sun'], slots: [], closed: true),
],
days: ['mon', 'tue', 'sun'],
slots: [],
closed: true,
unparsed: [],
);
final german = formatOpeningHours(openingHours, 'de', 'Geschlossen');
final english = formatOpeningHours(openingHours, 'en', 'Closed');
expect(german, contains('Mo–Di'));
expect(german, contains('10:00–18:00'));
expect(german, contains('So: Geschlossen'));
expect(english, contains('Mon–Tue'));
expect(english, contains('Sun: Closed'));
});
}
