Finished Implementation of the google sign in provider and its tests, moved mock class definitions to the end of the file in all tests
This commit is contained in:
parent
e2ff9f8f56
commit
8c3a8d5274
4 changed files with 121 additions and 46 deletions
|
|
@ -9,24 +9,6 @@ import 'package:do_more/src/resources/firestore_provider.dart';
|
|||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
|
||||
class MockFirestore extends Mock implements Firestore {}
|
||||
|
||||
class MockCollectionReference extends Mock implements CollectionReference {}
|
||||
|
||||
class MockDocumentReference extends Mock implements DocumentReference {}
|
||||
|
||||
class MockDocumentSnapshot extends Mock implements DocumentSnapshot {
|
||||
final Map<String, dynamic> data;
|
||||
|
||||
MockDocumentSnapshot([this.data]);
|
||||
|
||||
dynamic operator [](String key) => data[key];
|
||||
}
|
||||
|
||||
class MockQuerySnapshot extends Mock implements QuerySnapshot {}
|
||||
|
||||
class MockQuery extends Mock implements Query {}
|
||||
|
||||
main() {
|
||||
final task = TaskModel(
|
||||
id: '1',
|
||||
|
|
@ -253,3 +235,21 @@ main() {
|
|||
});
|
||||
});
|
||||
}
|
||||
|
||||
class MockFirestore extends Mock implements Firestore {}
|
||||
|
||||
class MockCollectionReference extends Mock implements CollectionReference {}
|
||||
|
||||
class MockDocumentReference extends Mock implements DocumentReference {}
|
||||
|
||||
class MockDocumentSnapshot extends Mock implements DocumentSnapshot {
|
||||
final Map<String, dynamic> data;
|
||||
|
||||
MockDocumentSnapshot([this.data]);
|
||||
|
||||
dynamic operator [](String key) => data[key];
|
||||
}
|
||||
|
||||
class MockQuerySnapshot extends Mock implements QuerySnapshot {}
|
||||
|
||||
class MockQuery extends Mock implements Query {}
|
||||
|
|
|
|||
59
test/src/resources/google_sign_in_provider_test.dart
Normal file
59
test/src/resources/google_sign_in_provider_test.dart
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:do_more/src/resources/google_sign_in_provider.dart';
|
||||
import 'package:firebase_auth/firebase_auth.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:google_sign_in/google_sign_in.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
|
||||
main() {
|
||||
group('GoogleSignInProvider', () {
|
||||
test('should return an instance of user', () {
|
||||
final googleSignIn = MockGoogleSignIn();
|
||||
final auth = MockFirebaseAuth();
|
||||
final googleUser = MockGoogleSignInAccount();
|
||||
final googleAuth = MockGoogleSignInAuthentication();
|
||||
final user = MockFirebaseUser();
|
||||
final provider = GoogleSignInProvider(googleSignIn, auth);
|
||||
|
||||
when(googleSignIn.signIn()).thenAnswer((_) => Future.value(googleUser));
|
||||
when(googleUser.authentication)
|
||||
.thenAnswer((_) => Future.value(googleAuth));
|
||||
when(auth.signInWithCredential(any))
|
||||
.thenAnswer((_) => Future.value(user));
|
||||
|
||||
expect(provider.signIn(), completion(isInstanceOf<FirebaseUser>()));
|
||||
});
|
||||
|
||||
test('should get the current user stored in cache', () {
|
||||
final auth = MockFirebaseAuth();
|
||||
final user = MockFirebaseUser();
|
||||
final provider = GoogleSignInProvider(null, auth);
|
||||
|
||||
when(auth.currentUser()).thenAnswer((_) => Future.value(user));
|
||||
|
||||
expect(
|
||||
provider.getCurrentUser(), completion(isInstanceOf<FirebaseUser>()));
|
||||
});
|
||||
|
||||
test('should sign out a user', () {
|
||||
final auth = MockFirebaseAuth();
|
||||
final provider = GoogleSignInProvider(null, auth);
|
||||
|
||||
when(auth.signOut()).thenAnswer((_) => Future.value());
|
||||
|
||||
expect(provider.signOut(), completes);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
class MockGoogleSignIn extends Mock implements GoogleSignIn {}
|
||||
|
||||
class MockFirebaseAuth extends Mock implements FirebaseAuth {}
|
||||
|
||||
class MockGoogleSignInAccount extends Mock implements GoogleSignInAccount {}
|
||||
|
||||
class MockGoogleSignInAuthentication extends Mock
|
||||
implements GoogleSignInAuthentication {}
|
||||
|
||||
class MockFirebaseUser extends Mock implements FirebaseUser {}
|
||||
Loading…
Add table
Add a link
Reference in a new issue