Added missing tests for the firestore provider
This commit is contained in:
parent
6c564cc2d0
commit
006261698d
4 changed files with 81 additions and 19 deletions
|
|
@ -86,7 +86,6 @@ class EventModel {
|
||||||
mediumPriority.hashCode ^
|
mediumPriority.hashCode ^
|
||||||
lowPriority.hashCode;
|
lowPriority.hashCode;
|
||||||
|
|
||||||
// TODO: find a way to compare the 3 commented properties.
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) =>
|
bool operator ==(Object other) =>
|
||||||
identical(this, other) ||
|
identical(this, other) ||
|
||||||
|
|
|
||||||
|
|
@ -111,19 +111,6 @@ class TaskModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a sample [TaskModel] with mock data.
|
|
||||||
static TaskModel sample() {
|
|
||||||
return TaskModel(
|
|
||||||
id: '1',
|
|
||||||
text:
|
|
||||||
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut.',
|
|
||||||
done: false,
|
|
||||||
ownerUsername: 'testUser',
|
|
||||||
event: 'testEvent',
|
|
||||||
priority: TaskPriority.medium,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get hashCode =>
|
int get hashCode =>
|
||||||
id.hashCode ^
|
id.hashCode ^
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,6 @@ class FirestoreProvider {
|
||||||
return Observable(mappedStream);
|
return Observable(mappedStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: add tests for this method.
|
|
||||||
|
|
||||||
/// Returns a [UserModel].
|
/// Returns a [UserModel].
|
||||||
/// Only one out of id or username can be provided, if both are provided id
|
/// Only one out of id or username can be provided, if both are provided id
|
||||||
/// will have higher priority.
|
/// will have higher priority.
|
||||||
|
|
@ -251,8 +249,6 @@ class FirestoreProvider {
|
||||||
return Observable(mappedStream);
|
return Observable(mappedStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: add tests for this method.
|
|
||||||
|
|
||||||
/// Returns an [EventModel].
|
/// Returns an [EventModel].
|
||||||
/// Only one out of id or name can be provided, if both are provided id
|
/// Only one out of id or name can be provided, if both are provided id
|
||||||
/// will have higher priority.
|
/// will have higher priority.
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,15 @@ import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:mockito/mockito.dart';
|
import 'package:mockito/mockito.dart';
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
final task = TaskModel.sample();
|
final task = TaskModel(
|
||||||
|
id: '1',
|
||||||
|
text:
|
||||||
|
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut.',
|
||||||
|
done: false,
|
||||||
|
ownerUsername: 'testUser',
|
||||||
|
event: 'testEvent',
|
||||||
|
priority: TaskPriority.medium,
|
||||||
|
);
|
||||||
|
|
||||||
final event = EventModel(
|
final event = EventModel(
|
||||||
id: '1',
|
id: '1',
|
||||||
|
|
@ -84,6 +92,42 @@ main() {
|
||||||
expect(provider.getUserObservable(user.username), emits(user));
|
expect(provider.getUserObservable(user.username), emits(user));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
group('should retrieve a user', () {
|
||||||
|
test('from an id', () {
|
||||||
|
final firestore = MockFirestore();
|
||||||
|
final reference = MockDocumentReference();
|
||||||
|
final snapshot = MockDocumentSnapshot(user.toFirestoreMap());
|
||||||
|
final provider = FirestoreProvider(firestore);
|
||||||
|
|
||||||
|
when(firestore.document('users/123')).thenReturn(reference);
|
||||||
|
when(reference.get())
|
||||||
|
.thenAnswer((_) => Future<DocumentSnapshot>.value(snapshot));
|
||||||
|
when(snapshot.documentID).thenReturn(user.id);
|
||||||
|
|
||||||
|
expect(provider.getUser(id: user.id), completion(equals(user)));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('from a username', () {
|
||||||
|
final firestore = MockFirestore();
|
||||||
|
final documentSnapshot = MockDocumentSnapshot(user.toFirestoreMap());
|
||||||
|
final querySnapshot = MockQuerySnapshot();
|
||||||
|
final collection = MockCollectionReference();
|
||||||
|
final query = MockQuery();
|
||||||
|
final provider = FirestoreProvider(firestore);
|
||||||
|
|
||||||
|
when(firestore.collection('users')).thenReturn(collection);
|
||||||
|
when(collection.where('username', isEqualTo: user.username))
|
||||||
|
.thenReturn(query);
|
||||||
|
when(query.getDocuments())
|
||||||
|
.thenAnswer((_) => Future<QuerySnapshot>.value(querySnapshot));
|
||||||
|
when(querySnapshot.documents).thenReturn([documentSnapshot]);
|
||||||
|
when(documentSnapshot.documentID).thenReturn(user.id);
|
||||||
|
|
||||||
|
expect(provider.getUser(username: user.username),
|
||||||
|
completion(equals(user)));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test('should create task', () {
|
test('should create task', () {
|
||||||
final firestore = MockFirestore();
|
final firestore = MockFirestore();
|
||||||
final collection = MockCollectionReference();
|
final collection = MockCollectionReference();
|
||||||
|
|
@ -212,6 +256,42 @@ main() {
|
||||||
expectLater(provider.getEventObservable('123', event.id), emits(event));
|
expectLater(provider.getEventObservable('123', event.id), emits(event));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
group('should retrieve an event', () {
|
||||||
|
test('from an id', () {
|
||||||
|
final firestore = MockFirestore();
|
||||||
|
final reference = MockDocumentReference();
|
||||||
|
final snapshot = MockDocumentSnapshot(event.toFirestoreMap());
|
||||||
|
final provider = FirestoreProvider(firestore);
|
||||||
|
|
||||||
|
when(firestore.document('users/123/events/1')).thenReturn(reference);
|
||||||
|
when(reference.get())
|
||||||
|
.thenAnswer((_) => Future<DocumentSnapshot>.value(snapshot));
|
||||||
|
when(snapshot.documentID).thenReturn(event.id);
|
||||||
|
|
||||||
|
expect(provider.getEvent('123', eventId: event.id),
|
||||||
|
completion(equals(event)));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('from a name', () {
|
||||||
|
final firestore = MockFirestore();
|
||||||
|
final documentSnapshot = MockDocumentSnapshot(event.toFirestoreMap());
|
||||||
|
final querySnapshot = MockQuerySnapshot();
|
||||||
|
final collection = MockCollectionReference();
|
||||||
|
final query = MockQuery();
|
||||||
|
final provider = FirestoreProvider(firestore);
|
||||||
|
|
||||||
|
when(firestore.collection('users/123/events')).thenReturn(collection);
|
||||||
|
when(collection.where('name', isEqualTo: event.name)).thenReturn(query);
|
||||||
|
when(query.getDocuments())
|
||||||
|
.thenAnswer((_) => Future<QuerySnapshot>.value(querySnapshot));
|
||||||
|
when(querySnapshot.documents).thenReturn([documentSnapshot]);
|
||||||
|
when(documentSnapshot.documentID).thenReturn(event.id);
|
||||||
|
|
||||||
|
expectLater(provider.getEvent('123', eventName: event.name),
|
||||||
|
completion(equals(event)));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test('should delete an event', () {
|
test('should delete an event', () {
|
||||||
final firestore = MockFirestore();
|
final firestore = MockFirestore();
|
||||||
final document = MockDocumentReference();
|
final document = MockDocumentReference();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue