health_local_data_convert_test.dart
1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import 'package:doublefeel_flutter/data/datasource/health/health_local_data_convert.dart';
import 'package:doublefeel_flutter/pigeon/health_kit_raw_data_api.g.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
group('LocalHealthDataConvert sleep intervals', () {
test('keeps previous-day sleep start for next-day sleep statistics', () {
final july15 = DateTime(2026, 7, 15);
final july16 = DateTime(2026, 7, 16);
final sleepStart = DateTime(2026, 7, 15, 23, 56);
final midnight = DateTime(2026, 7, 16);
final sleepEnd = DateTime(2026, 7, 16, 7);
final intervals = [
HealthKitRawDataPoint(
dataType: 3,
startTime: LocalHealthDataConvert.unixSeconds(sleepStart),
endTime: LocalHealthDataConvert.unixSeconds(midnight),
),
HealthKitRawDataPoint(
dataType: 3,
startTime: LocalHealthDataConvert.unixSeconds(midnight),
endTime: LocalHealthDataConvert.unixSeconds(sleepEnd),
),
];
final previousDayIntervals =
LocalHealthDataConvert.completeSleepIntervalsForDay(
july15,
intervals,
);
final currentDayIntervals =
LocalHealthDataConvert.completeSleepIntervalsForDay(
july16,
intervals,
);
final statistics = LocalHealthDataConvert.sleepStatistics(
dateRangeType: 3,
days: [july16],
previousDays: const [],
sleepIntervals: intervals,
heartRate: const [],
);
expect(previousDayIntervals, isEmpty);
expect(currentDayIntervals, hasLength(2));
expect(
currentDayIntervals.first.startTime,
LocalHealthDataConvert.unixSeconds(sleepStart),
);
expect(
statistics.asleepTimeTrendList?.single.asleepTime,
LocalHealthDataConvert.unixSeconds(sleepStart),
);
expect(
statistics.sleepTrendList?.single.totalTime,
const Duration(hours: 7, minutes: 4).inSeconds,
);
});
});
}