feat(tests): added services tests and fixtures

This commit is contained in:
misha
2025-12-11 15:53:35 +03:00
parent d1753e99f8
commit 070a3e39e7
65 changed files with 2092 additions and 1130 deletions

View File

@@ -0,0 +1,70 @@
import 'package:eatvio_app/features/auth/models/credentials_model.dart';
import 'package:eatvio_app/features/auth/models/oauth_login_request.dart';
import 'package:eatvio_app/features/auth/models/oauth_model.dart';
import 'package:eatvio_app/features/auth/models/token_model.dart';
import 'package:eatvio_app/features/auth/services/auth_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 'auth_service_test.mocks.dart';
@GenerateNiceMocks([MockSpec<AuthService>()])
void main() {
group('AuthService', () {
late MockAuthService mockAuthService;
setUp(() {
mockAuthService = MockAuthService();
});
test('getTokenByCredentials - возвращает токен по учетным данным', () async {
final tokenJson = FixtureReader.readAsMap('auth/token_response.json');
final expectedToken = TokenModel.fromJson(tokenJson);
final credentialsJson = FixtureReader.readAsMap('auth/login_credentials.json');
final credentials = CredentialsModel.fromJson(credentialsJson);
when(mockAuthService.getTokenByCredentials(credentials: credentials))
.thenAnswer((_) async => expectedToken);
final result = await mockAuthService.getTokenByCredentials(credentials: credentials);
expect(result, isA<TokenModel>());
expect(result.token, 'test_token_12345');
verify(mockAuthService.getTokenByCredentials(credentials: credentials)).called(1);
});
test('signInViaSocialMedia - возвращает токен при входе через соцсети', () async {
final tokenJson = FixtureReader.readAsMap('auth/token_response.json');
final expectedToken = TokenModel.fromJson(tokenJson);
final oauthJson = FixtureReader.readAsMap('auth/oauth_signin_request.json');
final oauthRequest = OAuthLoginRequest.fromJson(oauthJson);
when(mockAuthService.signInViaSocialMedia(body: oauthRequest))
.thenAnswer((_) async => expectedToken);
final result = await mockAuthService.signInViaSocialMedia(body: oauthRequest);
expect(result, isA<TokenModel>());
expect(result.token, 'test_token_12345');
verify(mockAuthService.signInViaSocialMedia(body: oauthRequest)).called(1);
});
test('signUpViaSocialMedia - возвращает данные при регистрации через соцсети', () async {
final expectedResponse = {'success': true, 'message': 'User registered'};
final oauthJson = FixtureReader.readAsMap('auth/oauth_signup_request.json');
final oauthModel = OAuthModel.fromJson(oauthJson);
when(mockAuthService.signUpViaSocialMedia(body: oauthModel))
.thenAnswer((_) async => expectedResponse);
final result = await mockAuthService.signUpViaSocialMedia(body: oauthModel);
expect(result, isA<Map<String, Object?>>());
expect(result['success'], true);
verify(mockAuthService.signUpViaSocialMedia(body: oauthModel)).called(1);
});
});
}

View File

@@ -0,0 +1,57 @@
import 'package:dio/dio.dart';
import 'package:eatvio_app/features/auth/services/reset_password_service.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:retrofit/retrofit.dart';
import '../../../fixtures/fixture_reader.dart';
import 'reset_password_service_test.mocks.dart';
@GenerateNiceMocks([MockSpec<ResetPasswordService>()])
void main() {
group('ResetPasswordService', () {
late MockResetPasswordService mockResetPasswordService;
setUp(() {
mockResetPasswordService = MockResetPasswordService();
});
test('sendEmailCodeForPasswordChange - отправляет код на email', () async {
final requestJson = FixtureReader.readAsMap('auth/reset_password_request.json');
final expectedResponse = HttpResponse(requestJson, Response(
data: requestJson,
statusCode: 200,
requestOptions: RequestOptions(path: '/api/send_password_reset_code'),
));
when(mockResetPasswordService.sendEmailCodeForPasswordChange(data: requestJson))
.thenAnswer((_) async => expectedResponse);
final result = await mockResetPasswordService.sendEmailCodeForPasswordChange(data: requestJson);
expect(result, isA<HttpResponse>());
expect(result.response.statusCode, 200);
verify(mockResetPasswordService.sendEmailCodeForPasswordChange(data: requestJson)).called(1);
});
test('confirmPasswordChange - подтверждает смену пароля', () async {
final requestJson = FixtureReader.readAsMap('auth/reset_password_request.json');
final expectedResponse = HttpResponse({'success': true}, Response(
data: {'success': true},
statusCode: 200,
requestOptions: RequestOptions(path: '/api/confirm_password_reset_code'),
));
when(mockResetPasswordService.confirmPasswordChange(data: requestJson))
.thenAnswer((_) async => expectedResponse);
final result = await mockResetPasswordService.confirmPasswordChange(data: requestJson);
expect(result, isA<HttpResponse>());
expect(result.response.statusCode, 200);
verify(mockResetPasswordService.confirmPasswordChange(data: requestJson)).called(1);
});
});
}