63 lines
1.8 KiB
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');
|
|
});
|
|
}
|