Erro:
Expected: Right<dynamic, ManagerEntity>:<Right(Instance of 'ManagerEntity')>
Actual: <Instance of '_FakeEither_0<Failure, ManagerEntity>'>
package:test_api expect
expect
package:flutter_test/src/widget_tester.dart:460
main.<fn>
auth_repository.dart
`import 'package:dartz/dartz.dart';
import 'package:firebase_auth/firebase_auth.dart';
abstract class AuthRepository {
Future<Either<Failure, ManagerEntity>> loginWithEmail(
ManagerEntity newUserInfo);
Future<Either<Failure, User>>? logUp(ManagerEntity userInfo);
Future<void> LogOut({required String userId});
}`
login_with_email.dart
`import 'package:barmusic_admin/core/erros/connection_error.dart';
import 'package:barmusic_admin/core/erros/error_login.dart';
import 'package:barmusic_admin/core/erros/failures.dart';
import 'package:barmusic_admin/core/services/connectivity_service.dart';
import 'package:barmusic_admin/features/domain/entities/manager_entity.dart';
import 'package:barmusic_admin/features/domain/repositories/auth_repository.dart';
// ignore: import_of_legacy_library_into_null_safe
import 'package:dartz/dartz.dart';
abstract class LoginWithEmail {
Future<Either<Failure, ManagerEntity>> call(ManagerEntity manager);
}
class LoginWithEmailImp implements LoginWithEmail {
final AuthRepository _repository;
final ConnectivityService _service;
LoginWithEmailImp(this._repository, this._service);
@override
Future<Either<Failure, ManagerEntity>> call(ManagerEntity manager) async {
var result = await _service.isOnline();
if (result.isLeft()) {
result.map((r) => null);
return Left(ConnectionError(
message: 'Verifique sua conexão com a internet e tente novamente'));
}
if (!manager.isValidEmail) {
return Left(ErrorLoginEmail(message: 'E-mail inválido'));
} else if (!manager.isValidPassword) {
return Left(ErrorLoginEmail(message: 'Senha inválida'));
}
return await _repository.loginWithEmail(manager);
}
}`
login_with_email_test.dart
` import 'package:barmusic_admin/core/erros/error_login.dart'; import 'package:barmusic_admin/core/services/connectivity_service.dart'; import 'package:barmusic_admin/features/domain/entities/manager_entity.dart'; import 'package:barmusic_admin/features/domain/repositories/auth_repository.dart'; import 'package:barmusic_admin/features/domain/usecases/auth/login_with_email.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart';
import 'login_with_email_test.mocks.dart';
// @GenerateMocks([AuthRepository, ConnectivityService])
@GenerateNiceMocks(
[MockSpec<AuthRepository>(), MockSpec<ConnectivityService>()])
void main() {
final repository = MockAuthRepository();
final service = MockConnectivityService();
final usecase = LoginWithEmailImp(repository, service);
setUpAll(() {
when(service.isOnline()).thenAnswer((_) async => Right(unit));
});
test('should consume repository loginEmail', () async {
var user = ManagerEntity(email: 'test@gmail.com', password: 'teste');
when(repository.loginWithEmail(user)).thenAnswer((_) async => Right(user));
var result = await usecase(ManagerEntity.withEmailAndPass(
email: "test@gmail.com", password: "teste"));
expect(result, Right(user));
});
}`