some issues fixed

This commit is contained in:
davmar
2026-09-11 12:31:07 +02:00
parent 2e40786bcd
commit 40366f0708
9 changed files with 416 additions and 127 deletions
+25 -6
View File
@@ -1,7 +1,6 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:myapp/models/overview_favourite.dart';
import 'package:myapp/models/transaction_meta.dart';
import 'package:myapp/services/pb_sync_service.dart';
import 'package:myapp/widgets/label_filter_dialog.dart';
void main() {
@@ -16,6 +15,8 @@ void main() {
flow: TxFlowFilter.expense,
barStyle: LabelChartBarStyle.stacked,
invertExpensePerspective: false,
updatedAt: 100,
deleted: false,
);
final restored = OverviewFavourite.fromJson(fav.toJson());
@@ -27,35 +28,53 @@ void main() {
expect(restored.labelIds, ['groceries', 'custom_ah']);
expect(restored.flow, TxFlowFilter.expense);
expect(restored.barStyle, LabelChartBarStyle.stacked);
expect(restored.updatedAt, 100);
expect(restored.deleted, isFalse);
});
test('mergeOverviewFavourites unions by id with local wins', () {
test('mergeOverviewFavourites unions by id with last-write-wins', () {
const local = OverviewFavourite(
id: 'fav_1',
name: 'Local name',
display: true,
updatedAt: 200,
);
const remoteOnly = OverviewFavourite(
id: 'fav_2',
name: 'Remote only',
display: false,
metric: OverviewMetricMode.labels,
updatedAt: 50,
);
const remoteConflict = OverviewFavourite(
const remoteConflictOlder = OverviewFavourite(
id: 'fav_1',
name: 'Remote name',
display: false,
updatedAt: 100,
);
const remoteConflictNewer = OverviewFavourite(
id: 'fav_3',
name: 'Remote newer',
display: true,
updatedAt: 300,
);
const localOlder = OverviewFavourite(
id: 'fav_3',
name: 'Local older',
display: false,
updatedAt: 10,
);
final merged = mergeOverviewFavourites(
[local],
[remoteConflict, remoteOnly],
[local, localOlder],
[remoteConflictOlder, remoteOnly, remoteConflictNewer],
);
expect(merged.length, 2);
expect(merged.length, 3);
final byId = {for (final f in merged) f.id: f};
expect(byId['fav_1']!.name, 'Local name');
expect(byId['fav_1']!.display, isTrue);
expect(byId['fav_2']!.name, 'Remote only');
expect(byId['fav_3']!.name, 'Remote newer');
});
}