import 'package:flutter_test/flutter_test.dart'; import 'package:yx_tracking_flutter/src/util/time_util.dart'; import 'package:yx_tracking_flutter/yx_tracking_flutter.dart'; void main() { group('AnalyticsConfig.validate', () { test('https 配置通过校验', () { final config = AnalyticsConfig( systemCode: 'OA_APP', endpointBaseUrl: 'https://example.com', ); expect(config.validate, returnsNormally); }); test('非 https 配置会抛错', () { final config = AnalyticsConfig( systemCode: 'OA_APP', endpointBaseUrl: 'http://example.com', ); expect(config.validate, throwsArgumentError); }); }); test('Event payload 序列化/反序列化', () { const device = DeviceInfo( os: 'android', model: 'pixel', screenResolution: '1080x1920', ); const user = UserInfo(userId: 1, userName: 'max', account: 'max'); final now = TimeUtil.nowMs(); final event = Event( systemCode: 'OA_APP', eventType: 'PAGE_VIEW', userInfo: user, clientType: 3, clientTimestamp: now, timestamp: TimeUtil.iso8601FromMs(now), deviceInfo: device, eventParams: const {'page': 'home'}, customTags: const {'tenantId': 't1'}, createTime: DateTime.fromMillisecondsSinceEpoch(now), ); final payload = event.toPayload(); final decoded = Event.fromPayload( payload, createTime: event.createTime, retryCount: 0, ); expect(decoded.systemCode, event.systemCode); expect(decoded.eventType, event.eventType); expect(decoded.clientType, event.clientType); expect(decoded.deviceInfo.screenResolution, device.screenResolution); expect(decoded.eventParams?['page'], 'home'); expect(decoded.customTags?['tenantId'], 't1'); }); }