a7c3795e5a
device_usage.dart 一直是 untracked(stats-overhaul WIP 漏提交),本地有所以 analyze/test 过,但不在 git → bundle → Windows 构建报「找不到 device_usage.dart / DeviceUsage isn't a type」。account_providers/account_api/golden 测试都引用它,补提交。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
34 lines
1016 B
Dart
34 lines
1016 B
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:pangolin_vpn/models/device_usage.dart';
|
|
|
|
void main() {
|
|
group('DeviceUsage.fromJson', () {
|
|
test('parses a full row and derives totals', () {
|
|
final d = DeviceUsage.fromJson(const {
|
|
'uuid': 'dev-a',
|
|
'name': 'My iPhone',
|
|
'platform': 'ios',
|
|
'bytes_up': 1500,
|
|
'bytes_down': 2500,
|
|
'minutes_used': 8,
|
|
});
|
|
expect(d.uuid, 'dev-a');
|
|
expect(d.name, 'My iPhone');
|
|
expect(d.platform, 'ios');
|
|
expect(d.bytesUp, 1500);
|
|
expect(d.bytesDown, 2500);
|
|
expect(d.minutesUsed, 8);
|
|
expect(d.bytesTotal, 4000);
|
|
expect(d.gbTotal, 4000 / (1024 * 1024 * 1024));
|
|
});
|
|
|
|
test('tolerates missing/absent fields with zero defaults', () {
|
|
final d = DeviceUsage.fromJson(const {'uuid': 'dev-b', 'name': '', 'platform': ''});
|
|
expect(d.bytesUp, 0);
|
|
expect(d.bytesDown, 0);
|
|
expect(d.minutesUsed, 0);
|
|
expect(d.bytesTotal, 0);
|
|
});
|
|
});
|
|
}
|