99 lines
2.8 KiB
Dart
99 lines
2.8 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:jamshalat_masjid_screen/core/enums.dart';
|
|
import 'package:jamshalat_masjid_screen/data/local/models.dart';
|
|
import 'package:jamshalat_masjid_screen/data/services/hijri_service.dart';
|
|
import 'package:jamshalat_masjid_screen/data/services/sync_service.dart';
|
|
|
|
void main() {
|
|
group('PrayerName display labels', () {
|
|
test('uses Jumat label for Friday dzuhur', () {
|
|
expect(
|
|
PrayerName.dzuhur.displayLabel(isFriday: true),
|
|
'JUMAT',
|
|
);
|
|
expect(
|
|
PrayerName.dzuhur.displayLabel(isFriday: false),
|
|
'Dzuhur',
|
|
);
|
|
});
|
|
|
|
test('marks fardhu prayers correctly', () {
|
|
expect(PrayerName.subuh.isFardhu, isTrue);
|
|
expect(PrayerName.imsak.isFardhu, isFalse);
|
|
});
|
|
});
|
|
|
|
group('AppSettings copyWith', () {
|
|
test('preserves defaults and overrides selected fields', () {
|
|
final settings = AppSettings();
|
|
final updated = settings.copyWith(
|
|
masjidName: 'Masjid Raya',
|
|
cityIdApi: '1301',
|
|
iqomahDzuhur: 12,
|
|
);
|
|
|
|
expect(updated.masjidName, 'Masjid Raya');
|
|
expect(updated.cityIdApi, '1301');
|
|
expect(updated.iqomahDzuhur, 12);
|
|
expect(updated.masjidAddress, settings.masjidAddress);
|
|
expect(updated.runningTexts, settings.runningTexts);
|
|
});
|
|
});
|
|
|
|
group('HijriCalendarService parsing', () {
|
|
test('extracts hijri label from MyQuran calendar response', () {
|
|
final label = HijriCalendarService.parseHijriLabel({
|
|
'status': true,
|
|
'data': {
|
|
'hijr': {
|
|
'today': 'Senin, 11 Syawal 1447 H',
|
|
'day': 11,
|
|
'monthName': 'Syawal',
|
|
'year': 1447,
|
|
},
|
|
},
|
|
});
|
|
|
|
expect(label, '11 Syawal 1447 H');
|
|
});
|
|
});
|
|
|
|
group('ScheduleCacheStatus', () {
|
|
test('derives cached date range and days left from stored schedules', () {
|
|
final status = ScheduleCacheStatus.fromSchedules(
|
|
[
|
|
DailyPrayerSchedule(
|
|
date: '2026-03-01',
|
|
imsak: '04:20',
|
|
subuh: '04:30',
|
|
terbit: '05:45',
|
|
dhuha: '06:10',
|
|
dzuhur: '11:55',
|
|
ashar: '15:10',
|
|
maghrib: '17:58',
|
|
isya: '19:05',
|
|
),
|
|
DailyPrayerSchedule(
|
|
date: '2026-04-30',
|
|
imsak: '04:19',
|
|
subuh: '04:29',
|
|
terbit: '05:44',
|
|
dhuha: '06:09',
|
|
dzuhur: '11:54',
|
|
ashar: '15:09',
|
|
maghrib: '17:57',
|
|
isya: '19:04',
|
|
),
|
|
],
|
|
DateTime(2026, 3, 30),
|
|
);
|
|
|
|
expect(status.hasData, isTrue);
|
|
expect(status.startDate, DateTime(2026, 3, 1));
|
|
expect(status.endDate, DateTime(2026, 4, 30));
|
|
expect(status.cachedDays, 2);
|
|
expect(status.daysUntilRefresh, 31);
|
|
});
|
|
});
|
|
}
|