// import 'package:flutter_test/flutter_test.dart'; // import 'package:mockito/mockito.dart'; // import 'package:quiz_app/data/models/register/register_request.dart'; // import 'package:quiz_app/data/services/auth_service.dart'; // import 'package:quiz_app/feature/register/controller/register_controller.dart'; // // Mock class for AuthService // class MockAuthService extends Mock implements AuthService {} // void main() { // late RegisterController registerController; // late MockAuthService mockAuthService; // setUp(() { // mockAuthService = MockAuthService(); // registerController = RegisterController(mockAuthService); // }); // test('Initial state should have password and confirm password hidden', () { // expect(registerController.isPasswordHidden.value, true); // expect(registerController.isConfirmPasswordHidden.value, true); // }); // test('Toggle password visibility works correctly', () { // final initial = registerController.isPasswordHidden.value; // registerController.togglePasswordVisibility(); // expect(registerController.isPasswordHidden.value, !initial); // }); // test('Toggle confirm password visibility works correctly', () { // final initial = registerController.isConfirmPasswordHidden.value; // registerController.toggleConfirmPasswordVisibility(); // expect(registerController.isConfirmPasswordHidden.value, !initial); // }); // test('Invalid email format should show error', () async { // registerController.emailController.text = 'invalid-email'; // registerController.nameController.text = 'John Doe'; // registerController.bDateController.text = '12-12-2000'; // registerController.passwordController.text = 'password123'; // registerController.confirmPasswordController.text = 'password123'; // await registerController.onRegister(); // // Verify no call to register method due to invalid email // verifyNever(() => mockAuthService.register(any())); // }); // // test('Invalid date format should show error', () async { // // registerController.emailController.text = 'john@example.com'; // // registerController.nameController.text = 'John Doe'; // // registerController.bDateController.text = '12/12/2000'; // Invalid format // // registerController.passwordController.text = 'password123'; // // registerController.confirmPasswordController.text = 'password123'; // // await registerController.onRegister(); // // verifyNever(mockAuthService.register(any)); // // }); // // test('Passwords do not match should show error', () async { // // registerController.emailController.text = 'john@example.com'; // // registerController.nameController.text = 'John Doe'; // // registerController.bDateController.text = '12-12-2000'; // // registerController.passwordController.text = 'password123'; // // registerController.confirmPasswordController.text = 'password456'; // // await registerController.onRegister(); // // verifyNever(mockAuthService.register(any)); // // }); // // test('Phone number invalid length should show error', () async { // // registerController.emailController.text = 'john@example.com'; // // registerController.nameController.text = 'John Doe'; // // registerController.bDateController.text = '12-12-2000'; // // registerController.passwordController.text = 'password123'; // // registerController.confirmPasswordController.text = 'password123'; // // registerController.phoneController.text = '123'; // Too short // // await registerController.onRegister(); // // verifyNever(mockAuthService.register(any)); // // }); // // test('Successful registration calls AuthService and navigates back', () async { // // registerController.emailController.text = 'john@example.com'; // // registerController.nameController.text = 'John Doe'; // // registerController.bDateController.text = '12-12-2000'; // // registerController.passwordController.text = 'password123'; // // registerController.confirmPasswordController.text = 'password123'; // // registerController.phoneController.text = '081234567890'; // // when(mockAuthService.register(any)).thenAnswer((_) async => {}); // // await registerController.onRegister(); // // verify(mockAuthService.register(any)).called(1); // // }); // // test('_isValidDateFormat should return correct results', () { // // expect(registerController._isValidDateFormat('12-12-2000'), true); // // expect(registerController._isValidDateFormat('31-02-2000'), true); // Format correct, logic not checked // // expect(registerController._isValidDateFormat('12/12/2000'), false); // // expect(registerController._isValidDateFormat('2000-12-12'), false); // // }); // // test('_isValidEmail should return correct results', () { // // expect(registerController._isValidEmail('test@example.com'), true); // // expect(registerController._isValidEmail('test.example.com'), false); // // expect(registerController._isValidEmail('test@com'), false); // // }); // }