yx_tracking_flutter/test/yx_tracking_flutter_test.dart

63 lines
1.8 KiB
Dart

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 <String, dynamic>{'page': 'home'},
customTags: const <String, dynamic>{'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');
});
}