forked from eatvio/eatvio_app
feat(tests): added services tests and fixtures
This commit is contained in:
70
test/features/auth/services/auth_service_test.dart
Normal file
70
test/features/auth/services/auth_service_test.dart
Normal 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);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
57
test/features/auth/services/reset_password_service_test.dart
Normal file
57
test/features/auth/services/reset_password_service_test.dart
Normal 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);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user