import 'package:eatvio_app/features/registration/models/location_model.dart'; import 'package:eatvio_app/features/registration/services/registration_service.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import '../../../fixtures/fixture_reader.dart'; import 'registration_service_test.mocks.dart'; @GenerateNiceMocks([MockSpec()]) void main() { group('RegistrationService', () { late MockRegistrationService mockRegistrationService; setUp(() { mockRegistrationService = MockRegistrationService(); }); test('register - регистрирует нового пользователя', () async { final expectedResponse = {'success': 'true', 'message': 'User registered'}; final registrationData = {'first_name': 'John', 'last_name': 'Doe', 'email': 'john@example.com', 'password': 'password123'}; when(mockRegistrationService.register(sheet: registrationData)).thenAnswer((_) async => expectedResponse); final result = await mockRegistrationService.register(sheet: registrationData); expect(result, isA>()); verify(mockRegistrationService.register(sheet: registrationData)).called(1); }); test('getLocationsByAddress - возвращает локации по адресу', () async { const query = 'Москва'; final locationJson = FixtureReader.readAsMap('registration/location_response.json'); final expectedLocation = LocationModel.fromJson(locationJson); when(mockRegistrationService.getLocationsByAddress(query: query)).thenAnswer((_) async => expectedLocation); final result = await mockRegistrationService.getLocationsByAddress(query: query); expect(result, isA()); expect(result.locations.length, 2); verify(mockRegistrationService.getLocationsByAddress(query: query)).called(1); }); test('getLocationsByCoordinate - возвращает локации по координатам', () async { const latitude = '55.7558'; const longitude = '37.6173'; final locationJson = FixtureReader.readAsMap('registration/location_response.json'); final expectedLocation = LocationModel.fromJson(locationJson); when(mockRegistrationService.getLocationsByCoordinate(latitude: latitude, longitude: longitude)).thenAnswer((_) async => expectedLocation); final result = await mockRegistrationService.getLocationsByCoordinate(latitude: latitude, longitude: longitude); expect(result, isA()); expect(result.locations.length, 2); verify(mockRegistrationService.getLocationsByCoordinate(latitude: latitude, longitude: longitude)).called(1); }); }); }