Files
photo-live/apps/mobile/test/features/album_format_test.dart
T
2026-09-19 01:56:38 +08:00

51 lines
1.8 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/// 相册时区格式化纯逻辑测试(P3 计划 Task 4)。
///
/// 覆盖:UTC 瞬间 → Asia/Shanghai 墙钟展示、无效时区回退 UTC、
/// 墙钟 → UTC 提交往返一致、IANA 时区名校验。
library;
import 'package:flutter_test/flutter_test.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:photo_live/features/albums/album_format.dart';
void main() {
setUpAll(initializeDateFormatting);
test('UTC 瞬间按 Asia/Shanghai 展示(intl 格式化)', () {
final utc = DateTime.utc(2026, 9, 18, 6, 30);
expect(formatAlbumDateTime(utc, 'Asia/Shanghai', 'en'), '2026/9/18 14:30');
});
test('非 Asia/Shanghai 时区亦按各自墙钟展示(America/New_York)', () {
final utc = DateTime.utc(2026, 9, 18, 6, 30);
// 9 月为纽约夏令时 UTC-4 → 02:30。
expect(
formatAlbumDateTime(utc, 'America/New_York', 'en'),
'2026/9/18 02:30',
);
});
test('无效时区回退 UTC 展示', () {
final utc = DateTime.utc(2026, 9, 18, 6, 30);
expect(formatAlbumDateTime(utc, 'Mars/Olympus', 'en'), '2026/9/18 06:30');
});
test('墙钟 → UTC 往返一致(表单提交与回显)', () {
final naive = DateTime(2026, 9, 18, 14, 30);
final utc = albumWallClockToUtc(naive, 'Asia/Shanghai');
expect(utc.toUtc(), DateTime.utc(2026, 9, 18, 6, 30));
final zoned = tryToAlbumZone(utc, 'Asia/Shanghai');
expect(zoned, isNotNull);
expect(zoned!.hour, 14);
expect(zoned.minute, 30);
});
test('isValidTimezone:空/非法拒绝,合法通过', () {
expect(isValidTimezone(''), isFalse);
expect(isValidTimezone(' '), isFalse);
expect(isValidTimezone('Not/AZone'), isFalse);
expect(isValidTimezone('Asia/Shanghai'), isTrue);
expect(isValidTimezone('UTC'), isTrue);
});
}