Skip to content

Commit 7b895be

Browse files
authored
Implement get method for MockDatabaseReference (#7)
* feat: implement get() method for MockDatabaseReference * fix: typos * test: added tests for MockDatabaseReference and MockDataSnapshot * chore: remove pubspec.lock from .gitignore and add coverage directory from Android Studio
1 parent d5a95c8 commit 7b895be

File tree

7 files changed

+92
-386
lines changed

7 files changed

+92
-386
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
*.ipr
1515
*.iws
1616
.idea/
17+
coverage/
1718

1819
# The .vscode folder contains launch configuration and tasks you configure in
1920
# VS Code which you may wish to be included in version control, so this line
@@ -30,6 +31,7 @@
3031
.pub-cache/
3132
.pub/
3233
/build/
34+
pubspec.lock
3335

3436
# Web related
3537
lib/generated_plugin_registrant.dart

lib/src/mock_data_snapshot.dart

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,20 @@ import 'package:firebase_database/firebase_database.dart';
22
import 'package:mockito/mockito.dart';
33

44
class MockDataSnapshot extends Mock implements DataSnapshot {
5+
final DatabaseReference _ref;
56
final dynamic _value;
67

7-
MockDataSnapshot(this._value);
8+
MockDataSnapshot(this._ref, this._value);
9+
10+
@override
11+
String? get key => _ref.key;
12+
13+
@override
14+
DatabaseReference get ref => _ref;
815

916
@override
1017
dynamic get value => _value;
18+
19+
@override
20+
bool get exists => _value != null;
1121
}

lib/src/mock_database_reference.dart

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@ import 'mock_firebase_database.dart';
77

88
class 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

151173
class _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);

lib/src/mock_firebase_database.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class MockFirebaseDatabase extends Mock implements FirebaseDatabase {
2020
// ignore: unused_field
2121
static bool _persistData = true;
2222
//Todo support non persistence.
23-
static void setDataPersistanceEnabled({bool ennabled = true}) {
24-
_persistData = ennabled;
23+
static void setDataPersistenceEnabled({bool enabled = true}) {
24+
_persistData = enabled;
2525
}
2626
}

0 commit comments

Comments
 (0)