Skip to content

Commit

Permalink
test case added
Browse files Browse the repository at this point in the history
  • Loading branch information
dipakp2726 committed Nov 9, 2022
1 parent b9a2533 commit e43474c
Showing 1 changed file with 99 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@

import 'dart:async';

import 'package:firebase_database/firebase_database.dart';
import 'package:firebase_database/ui/firebase_sorted_list.dart';
import 'package:flutter_test/flutter_test.dart';

import 'firebase_list_test.dart';

void main() {

group('FirebaseSortedList', () {
late StreamController<DatabaseEvent> onChildAddedStreamController;
late StreamController<DatabaseEvent> onChildRemovedStreamController;
late StreamController<DatabaseEvent> onChildChangedStreamController;
late StreamController<DatabaseEvent> onChildMovedStreamController;
late StreamController<DatabaseEvent> onValue;
late MockQuery query;
late FirebaseSortedList list;
late Completer<ListChange> callbackCompleter;

setUp(() {
onChildAddedStreamController = StreamController<DatabaseEvent>();
onChildRemovedStreamController = StreamController<DatabaseEvent>();
onChildChangedStreamController = StreamController<DatabaseEvent>();
onChildMovedStreamController = StreamController<DatabaseEvent>();
onValue = StreamController<DatabaseEvent>();
query = MockQuery(
onChildAddedStreamController.stream,
onChildRemovedStreamController.stream,
onChildChangedStreamController.stream,
onChildMovedStreamController.stream,
onValue.stream,
);
callbackCompleter = Completer<ListChange>();

void completeWithChange(int index, DataSnapshot snapshot) {
callbackCompleter.complete(ListChange.at(index, snapshot));
}

list = FirebaseSortedList(
query: query,
onChildAdded: completeWithChange,
onChildRemoved: completeWithChange,
onChildChanged: completeWithChange,
comparator: (DataSnapshot a, DataSnapshot b) {
return b.key.toString().compareTo(a.key.toString());
},
);
});

tearDown(() {
onChildAddedStreamController.close();
onChildRemovedStreamController.close();
onChildChangedStreamController.close();
onChildMovedStreamController.close();
onValue.close();
});

Future<ListChange> resetCompleterOnCallback() async {
final ListChange result = await callbackCompleter.future;
callbackCompleter = Completer<ListChange>();
return result;
}

Future<ListChange> processChildAddedEvent(DatabaseEvent event) {
onChildAddedStreamController.add(event);



final future = resetCompleterOnCallback();

expect(list.indexOf(event.snapshot), isNot(equals(-1)));


return future;

}

test('can push to sorted list', () async {
final DataSnapshot snapshot = MockDataSnapshot('key10', 10);
expect(
await processChildAddedEvent(
MockEvent(
DatabaseEventType.childAdded,
null,
snapshot,
),
),
ListChange.at(0, snapshot),
);
expect(list, <DataSnapshot>[snapshot]);
});

});

}


0 comments on commit e43474c

Please sign in to comment.