@@ -7,10 +7,13 @@ import 'mock_firebase_database.dart';
77
88class MockDatabaseReference extends Mock implements DatabaseReference {
99 var _nodePath = '/' ;
10+
1011 // ignore: prefer_final_fields
11- static Map <String , dynamic >? _persitedData = < String , dynamic > {};
12+ static Map <String , dynamic >? _persistedData = < String , dynamic > {};
1213 Map <String , dynamic >? _volatileData = < String , dynamic > {};
14+
1315 MockDatabaseReference ();
16+
1417 MockDatabaseReference ._(nodePath, [this ._volatileData]) {
1518 _nodePath += nodePath;
1619 }
@@ -22,18 +25,26 @@ class MockDatabaseReference extends Mock implements DatabaseReference {
2225
2326 Map <String , dynamic >? get _data {
2427 if (MockFirebaseDatabase .persistData) {
25- return _persitedData ;
28+ return _persistedData ;
2629 }
2730 return _volatileData;
2831 }
2932
3033 set _data (data) {
3134 if (MockFirebaseDatabase .persistData) {
32- _persitedData = data;
35+ _persistedData = data;
3336 } else
3437 return _volatileData = data;
3538 }
3639
40+ @override
41+ String ? get key {
42+ if (_nodePath == '/' ) {
43+ return null ;
44+ }
45+ return _nodePath.substring (1 , _nodePath.length - 1 ).split ('/' ).last;
46+ }
47+
3748 @override
3849 String get path => _nodePath;
3950
@@ -122,11 +133,7 @@ class MockDatabaseReference extends Mock implements DatabaseReference {
122133 );
123134 }
124135
125- @override
126-
127- /// __WARNING!__ For now only the DatabaseEventType.value event is supported.
128- Future <DatabaseEvent > once (
129- [DatabaseEventType eventType = DatabaseEventType .value]) {
136+ dynamic _getCurrentData () {
130137 var tempData = _data;
131138 // remove start and end slashes.
132139 var nodePath = _nodePath.substring (1 , _nodePath.length - 1 );
@@ -143,21 +150,37 @@ class MockDatabaseReference extends Mock implements DatabaseReference {
143150 }
144151 }
145152 }
146- return Future .value (
147- MockDatabaseEvent (MockDataSnapshot (tempData! [nodePath])));
153+
154+ return tempData! [nodePath];
155+ }
156+
157+ @override
158+
159+ /// __WARNING!__ For now only the DatabaseEventType.value event is supported.
160+ Future <DatabaseEvent > once (
161+ [DatabaseEventType eventType = DatabaseEventType .value]) {
162+ var tempData = _getCurrentData ();
163+ return Future .value (MockDatabaseEvent (MockDataSnapshot (this , tempData)));
164+ }
165+
166+ @override
167+ Future <DataSnapshot > get () {
168+ var tempData = _getCurrentData ();
169+ return Future .value (MockDataSnapshot (this , tempData));
148170 }
149171}
150172
151173class _Int {
152174 int value;
175+
153176 _Int (this .value);
177+
154178 _Int increment () {
155179 ++ value;
156180 return this ;
157181 }
158182}
159183
160-
161184// Map<String, dynamic> _makeSupportGenericValue(Map<String, dynamic> data) {
162185// var _dataWithGenericValue = {'__generic_mock_data_value__': Object()};
163186// _dataWithGenericValue.addAll(data);
0 commit comments