mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-08-02 12:03:24 +08:00
82 lines
2.3 KiB
Dart
82 lines
2.3 KiB
Dart
import 'dart:math';
|
|
|
|
import 'package:fixnum/fixnum.dart';
|
|
import 'package:path/path.dart' as p;
|
|
import 'package:test/test.dart';
|
|
import 'package:universal_io/io.dart';
|
|
|
|
import 'package:gitjournal/analytics/generated/analytics.pb.dart' as pb;
|
|
import 'package:gitjournal/analytics/storage.dart';
|
|
|
|
void main() {
|
|
test('Read and write', () async {
|
|
var ev1 = _randomEvent();
|
|
var ev2 = _randomEvent();
|
|
|
|
var dir = await Directory.systemTemp.createTemp('_analytics_');
|
|
var af = p.join(dir.path, "analytics");
|
|
|
|
var storage = AnalyticsStorage(dir.path);
|
|
await storage.appendEventToFile(ev1, af);
|
|
await storage.appendEventToFile(ev2, af);
|
|
|
|
var events = await storage.fetchFromFile(af);
|
|
expect(events.length, 2);
|
|
expect(events[0].toDebugString(), ev1.toDebugString());
|
|
expect(events[1].toDebugString(), ev2.toDebugString());
|
|
// expect(events[0], ev);
|
|
});
|
|
|
|
test('Fetch All', () async {
|
|
var ev1 = _randomEvent();
|
|
var ev2 = _randomEvent();
|
|
var ev3 = _randomEvent();
|
|
|
|
var dir = await Directory.systemTemp.createTemp('_analytics_');
|
|
var storage = AnalyticsStorage(dir.path);
|
|
|
|
await storage.appendEvent(ev1);
|
|
await storage.appendEvent(ev2);
|
|
|
|
await storage.fetchAll((events) async {
|
|
expect(events.length, 2);
|
|
expect(events[0].toDebugString(), ev1.toDebugString());
|
|
expect(events[1].toDebugString(), ev2.toDebugString());
|
|
return false;
|
|
});
|
|
|
|
await storage.appendEvent(ev3);
|
|
await storage.fetchAll((events) async {
|
|
expect(events.length, 3);
|
|
expect(events[0].toDebugString(), ev1.toDebugString());
|
|
expect(events[1].toDebugString(), ev2.toDebugString());
|
|
expect(events[2].toDebugString(), ev3.toDebugString());
|
|
return true;
|
|
});
|
|
|
|
await storage.fetchAll((events) async {
|
|
expect(events.length, 0);
|
|
return true;
|
|
});
|
|
|
|
await storage.fetchAll((events) async {
|
|
expect(events.length, 0);
|
|
return false;
|
|
});
|
|
});
|
|
}
|
|
|
|
pb.Event _randomEvent() {
|
|
var random = Random();
|
|
var dt = DateTime.now().add(Duration(days: random.nextInt(5000) * -1));
|
|
var ev = pb.Event(
|
|
name: 'test-' + random.nextInt(100).toString(),
|
|
date: Int64(dt.millisecondsSinceEpoch ~/ 1000),
|
|
params: {'a': 'hello'},
|
|
pseudoId: 'id',
|
|
userProperties: {'b': 'c'},
|
|
sessionID: 'session',
|
|
);
|
|
return ev;
|
|
}
|