TIF_E41211115_Genso_quiz_app/test/controller/login_controller_test.dart

136 lines
5.3 KiB
Dart

// import 'package:flutter/material.dart';
// import 'package:flutter_test/flutter_test.dart';
// import 'package:get/get.dart';
// import 'package:mockito/mockito.dart';
// import 'package:quiz_app/app/routes/app_pages.dart';
// import 'package:quiz_app/component/global_button.dart';
// import 'package:quiz_app/data/controllers/user_controller.dart';
// import 'package:quiz_app/data/entity/user/user_entity.dart';
// import 'package:quiz_app/data/models/login/login_request_model.dart';
// import 'package:quiz_app/data/models/login/login_response_model.dart';
// import 'package:quiz_app/data/services/auth_service.dart';
// import 'package:quiz_app/data/services/google_auth_service.dart';
// import 'package:quiz_app/data/services/user_storage_service.dart';
// import 'package:quiz_app/feature/login/controllers/login_controller.dart';
// class MockAuthService extends Mock implements AuthService {}
// class MockUserStorageService extends Mock implements UserStorageService {}
// class MockUserController extends Mock implements UserController {}
// class MockGoogleAuthService extends Mock implements GoogleAuthService {}
// void main() {
// late LoginController loginController;
// late MockAuthService mockAuthService;
// late MockUserStorageService mockUserStorageService;
// late MockUserController mockUserController;
// late MockGoogleAuthService mockGoogleAuthService;
// setUp(() {
// mockAuthService = MockAuthService();
// mockUserStorageService = MockUserStorageService();
// mockUserController = MockUserController();
// mockGoogleAuthService = MockGoogleAuthService();
// loginController = LoginController(
// mockAuthService,
// mockUserStorageService,
// mockUserController,
// mockGoogleAuthService,
// );
// });
// test('Initial state should have button disabled and password hidden', () {
// expect(loginController.isButtonEnabled.value, ButtonType.disabled);
// expect(loginController.isPasswordHidden.value, true);
// });
// test('Button should enable when both fields are not empty', () {
// loginController.emailController.text = 'test@example.com';
// loginController.passwordController.text = 'password123';
// loginController.validateFields();
// expect(loginController.isButtonEnabled.value, ButtonType.primary);
// });
// test('Button should disable if email or password is empty', () {
// loginController.emailController.text = '';
// loginController.passwordController.text = 'password123';
// loginController.validateFields();
// expect(loginController.isButtonEnabled.value, ButtonType.disabled);
// });
// test('Toggle password visibility works', () {
// final initial = loginController.isPasswordHidden.value;
// loginController.togglePasswordVisibility();
// expect(loginController.isPasswordHidden.value, !initial);
// });
// test('Successful email login navigates to main page', () async {
// final response = LoginResponseModel(id: '1', name: 'John', email: 'john@example.com');
// when(mockAuthService.loginWithEmail(any)).thenAnswer((_) async => response);
// when(mockUserStorageService.saveUser(any)).thenAnswer((_) async => {});
// when(mockUserStorageService.isLogged = true).thenReturn(true);
// loginController.emailController.text = 'john@example.com';
// loginController.passwordController.text = 'password123';
// await loginController.loginWithEmail();
// verify(mockAuthService.loginWithEmail(any)).called(1);
// verify(mockUserStorageService.saveUser(any)).called(1);
// verify(mockUserController.setUserFromEntity(any)).called(1);
// });
// test('Login with empty fields should show error', () async {
// loginController.emailController.text = '';
// loginController.passwordController.text = '';
// await loginController.loginWithEmail();
// expect(loginController.isLoading.value, false);
// });
// test('Google login canceled should show error', () async {
// when(mockGoogleAuthService.signIn()).thenAnswer((_) async => null);
// await loginController.loginWithGoogle();
// verifyNever(mockAuthService.loginWithGoogle(any));
// });
// test('Successful Google login navigates to main page', () async {
// final fakeGoogleUser = FakeGoogleUser();
// final response = LoginResponseModel(id: '1', name: 'John', email: 'john@example.com');
// when(mockGoogleAuthService.signIn()).thenAnswer((_) async => fakeGoogleUser);
// when(fakeGoogleUser.authentication).thenAnswer((_) async => FakeGoogleAuth());
// when(mockAuthService.loginWithGoogle(any)).thenAnswer((_) async => response);
// when(mockUserStorageService.saveUser(any)).thenAnswer((_) async => {});
// when(mockUserStorageService.isLogged = true).thenReturn(true);
// await loginController.loginWithGoogle();
// verify(mockAuthService.loginWithGoogle(any)).called(1);
// verify(mockUserStorageService.saveUser(any)).called(1);
// verify(mockUserController.setUserFromEntity(any)).called(1);
// });
// }
// /// Fakes for Google Sign-In
// class FakeGoogleUser extends Mock {
// @override
// Future<FakeGoogleAuth> get authentication async => FakeGoogleAuth();
// }
// class FakeGoogleAuth extends Mock {
// @override
// Future<String> get idToken async => 'fake_id_token';
// }