/// Tests unitaires pour GetSettings use case library get_settings_test; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'package:unionflow_mobile_apps/features/settings/domain/repositories/system_config_repository.dart'; import 'package:unionflow_mobile_apps/features/settings/domain/usecases/get_settings.dart'; import 'package:unionflow_mobile_apps/features/settings/data/models/system_config_model.dart'; @GenerateMocks([ISystemConfigRepository]) import 'get_settings_test.mocks.dart'; void main() { late GetSettings useCase; late MockISystemConfigRepository mockRepository; setUp(() { mockRepository = MockISystemConfigRepository(); useCase = GetSettings(mockRepository); }); group('GetSettings Use Case', () { final tConfig = SystemConfigModel( applicationName: 'UnionFlow', version: '1.0.0', maintenanceMode: false, defaultLanguage: 'fr', timezone: 'Europe/Paris', sessionTimeoutMinutes: 30, ); test('should return system configuration', () async { // Arrange when(mockRepository.getConfig()).thenAnswer((_) async => tConfig); // Act final result = await useCase(); // Assert expect(result, equals(tConfig)); expect(result.applicationName, equals('UnionFlow')); expect(result.maintenanceMode, isFalse); verify(mockRepository.getConfig()); verifyNoMoreInteractions(mockRepository); }); test('should return config with all optional fields', () async { // Arrange final fullConfig = SystemConfigModel( applicationName: 'UnionFlow', version: '1.0.0', maintenanceMode: false, defaultLanguage: 'fr', timezone: 'Europe/Paris', networkTimeout: 30000, sessionTimeoutMinutes: 60, twoFactorAuthEnabled: true, ); when(mockRepository.getConfig()).thenAnswer((_) async => fullConfig); // Act final result = await useCase(); // Assert expect(result.networkTimeout, equals(30000)); expect(result.twoFactorAuthEnabled, isTrue); }); test('should handle minimal config', () async { // Arrange final minimalConfig = SystemConfigModel( applicationName: 'UnionFlow', ); when(mockRepository.getConfig()).thenAnswer((_) async => minimalConfig); // Act final result = await useCase(); // Assert expect(result.applicationName, isNotNull); verify(mockRepository.getConfig()); }); test('should throw exception when config retrieval fails', () async { // Arrange when(mockRepository.getConfig()) .thenThrow(Exception('Config not found')); // Act & Assert expect(() => useCase(), throwsException); }); }); }