import 'package:tm_app/core/utils/result.dart'; import 'package:tm_app/data/repositories/auth_repository.dart'; import 'package:tm_app/data/services/model/forgot_password_response/forgot_password_response_model.dart'; import 'package:tm_app/data/services/model/login_response/login_response_model.dart'; import 'package:tm_app/data/services/model/logout_response/logout_response.dart'; import 'package:tm_app/data/services/model/reset_password_response/reset_password_response.dart'; import 'package:tm_app/data/services/model/verify_otp_response/verify_otp_response_model.dart'; import '../fixtures/test_fixtures.dart'; class MockAuthRepository implements AuthRepository { Result? _loginResult; Result? _logoutResult; Result? _forgotPasswordResult; Result? _verifyOtpResult; Result? _resetPasswordResult; Result? _checkIsLoggedInResult; Exception? _localLogoutException; void setLoginResult(Result result) { _loginResult = result; } void setLogoutResult(Result result) { _logoutResult = result; } void setForgotPasswordResult(Result result) { _forgotPasswordResult = result; } void setVerifyOtpResult(Result result) { _verifyOtpResult = result; } void setResetPasswordResult(Result result) { _resetPasswordResult = result; } void setCheckIsLoggedInResult(Result result) { _checkIsLoggedInResult = result; } void setLocalLogoutException(Exception exception) { _localLogoutException = exception; } @override Future> login({ required String username, required String password, }) async { return _loginResult ?? const Result.ok(TestFixtures.loginResponse); } @override Future> logout() async { return _logoutResult ?? const Result.ok(TestFixtures.logoutResponse); } @override Future> resetPassword({ required String newPassword, required String token, }) async { return _resetPasswordResult ?? const Result.ok(TestFixtures.resetPasswordResponse); } @override Future localLogout() async { if (_localLogoutException != null) { throw _localLogoutException!; } } @override Future> forgotPassword({ required String email, }) async { return _forgotPasswordResult ?? const Result.ok(TestFixtures.forgotPasswordResponse); } @override Future> verifyOtp({ required String code, required String email, }) async { return _verifyOtpResult ?? const Result.ok(TestFixtures.verifyOtpResponse); } @override Future> checkIsLoggedIn() async { return _checkIsLoggedInResult ?? const Result.ok(true); } }