import 'package:camera/camera.dart'; import 'package:finger_scanner/domain/usecases/scan_fingerprint.dart'; import 'package:finger_scanner/presentation/providers/scanner_provider.dart'; import 'package:finger_scanner/data/repositories/scanner_repository_impl.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; class MockScannerRepository extends Mock implements ScannerRepositoryImpl {} class MockScanFingerprint extends Mock implements ScanFingerprint {} class MockCameraController extends Mock implements CameraController {} void main() { late MockScannerRepository mockRepository; late MockScanFingerprint mockScanUseCase; setUp(() { mockRepository = MockScannerRepository(); mockScanUseCase = MockScanFingerprint(); }); test('ScannerNotifier initializes with ScannerInitial', () { final container = ProviderContainer( overrides: [ scannerRepositoryProvider.overrideWithValue(mockRepository), scanFingerprintUseCaseProvider.overrideWithValue(mockScanUseCase), ], ); addTearDown(container.dispose); expect(container.read(scannerProvider), isA()); }); test( 'startSimulation switches state to ScannerReady with isSimulation=true', () { final container = ProviderContainer( overrides: [ scannerRepositoryProvider.overrideWithValue(mockRepository), scanFingerprintUseCaseProvider.overrideWithValue(mockScanUseCase), ], ); addTearDown(container.dispose); final notifier = container.read(scannerProvider.notifier); notifier.startSimulation(); final state = container.read(scannerProvider); expect(state, isA()); expect((state as ScannerReady).isSimulation, true); expect(state.controller, null); }, ); }