Skip to content

Commit

Permalink
fix: query result not always correctly updated after receiving new data
Browse files Browse the repository at this point in the history
  • Loading branch information
rbellens committed Nov 15, 2022
1 parent a7f36ee commit 12b2b28
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
2 changes: 1 addition & 1 deletion packages/firebase_dart/pubspec.yaml
Expand Up @@ -10,7 +10,7 @@ dependencies:
quiver: ^3.0.0
async: ^2.5.0
logging: ^1.0.0
sortedmap: ^0.5.1
sortedmap: ^0.5.2
web_socket_channel: ^2.0.0
stream_channel: ^2.1.0
collection: ^1.15.0
Expand Down
36 changes: 36 additions & 0 deletions packages/firebase_dart/test/database/incomplete_data_test.dart
Expand Up @@ -3,6 +3,7 @@ import 'package:firebase_dart/src/database/impl/operations/tree.dart';
import 'package:firebase_dart/src/database/impl/utils.dart';
import 'package:firebase_dart/src/database/impl/tree.dart';
import 'package:firebase_dart/src/database/impl/treestructureddata.dart';
import 'package:sortedmap/sortedmap.dart';
import 'package:test/test.dart';

void main() {
Expand Down Expand Up @@ -528,6 +529,41 @@ void main() {
Name.parsePath('child'), TreeStructuredData()));
expect(v.toOperation().apply(TreeStructuredData()), leafNode);
});

test(
'a merge should remove children that do no longer comply with the filter',
() {
var v = empty.withFilter(QueryFilter(
ordering: TreeStructuredDataOrdering.byChild('isFinished'),
validInterval: KeyValueInterval(
Name.min,
TreeStructuredData.leaf(Value(false)),
Name.max,
TreeStructuredData.leaf(Value(false)),
)));

v = v.applyOperation(
TreeOperation.overwrite(
Path.from([]),
TreeStructuredData.fromJson({
'v1': {'isFinished': false, 'isCancelled': false},
'v2': {'isFinished': false, 'isCancelled': false},
'v3': {'isFinished': false, 'isCancelled': false},
})),
);

v = v.applyOperation(
TreeOperation.merge(Name.parsePath('v2'), {
Name.parsePath('isFinished'): TreeStructuredData.leaf(Value(true)),
Name.parsePath('isCancelled'): TreeStructuredData.leaf(Value(true)),
}),
);

expect(v.completeValue!.toJson(), {
'v1': {'isFinished': false, 'isCancelled': false},
'v3': {'isFinished': false, 'isCancelled': false},
});
});
});
}

Expand Down

0 comments on commit 12b2b28

Please sign in to comment.