import 'package:flutter_test/flutter_test.dart';
import 'package:meinweimar_city_guide/services/opening_hours_service.dart';
void main() {
test('parses split hours and closed days', () {
final info = OpeningHoursService.parse(
'Montag Geschlossen\nDienstag Geschlossen\nMittwoch 17:00–22:00\nSamstag 11:00–15:30, 16:30–23:00',
utcNow: DateTime.utc(2026, 8, 26, 16),
);
expect(info.hasStructuredSchedule, isTrue);
expect(info.intervalsForWeekday(DateTime.monday), isEmpty);
expect(info.intervalsForWeekday(DateTime.wednesday).single.label, '17:00–22:00');
expect(info.intervalsForWeekday(DateTime.saturday).length, 2);
});
test('parses weekday ranges and exclusions', () {
final info = OpeningHoursService.parse(
'Mo, Mi–Sa 11:00–23:00; So 11:00–22:00; Di geschlossen.',
utcNow: DateTime.utc(2026, 8, 25, 12),
);
expect(info.intervalsForWeekday(DateTime.monday).single.label, '11:00–23:00');
expect(info.intervalsForWeekday(DateTime.tuesday), isEmpty);
expect(info.intervalsForWeekday(DateTime.friday).single.label, '11:00–23:00');
});
test('does not use kitchen times as venue opening hours', () {
final info = OpeningHoursService.parse(
'Mo–So 11:00–22:30; Küche bis 21:30.',
utcNow: DateTime.utc(2026, 8, 25, 12),
);
expect(info.intervalsForWeekday(DateTime.tuesday).single.label, '11:00–22:30');
expect(info.notes.join(' '), contains('Küche'));
});
test('recognizes placeholder and always accessible text', () {
expect(
OpeningHoursService.parse('Testdaten – Öffnungszeiten bitte später mit echten Daten ersetzen.').placeholder,
isTrue,
);
expect(
OpeningHoursService.parse('Außenstation – grundsätzlich jederzeit erreichbar.').state,
OpeningState.alwaysAccessible,
);
});
test('marks closing soon in Weimar time', () {
final info = OpeningHoursService.parse(
'Mo–So 08:00–18:00',
utcNow: DateTime.utc(2026, 8, 25, 15, 30), // 17:30 CEST
);
expect(info.state, OpeningState.closingSoon);
});
}

