forked from eatvio/eatvio_app
test(session): cover avatar refresh and session teardown
Add regression tests for avatar reset and token-change refresh, stale 401 handling, idempotent session teardown and account-scoped preference cleanup. Update existing cubit tests for the new session dependency. Refs: #1113
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import 'package:eatvio_app/core/session/session_lifecycle_service.dart';
|
||||
import 'package:eatvio_app/features/consultant/become_consultant/repositories/consultant_repository.dart';
|
||||
import 'package:eatvio_app/features/consultations/repositories/consultations_repository.dart';
|
||||
import 'package:eatvio_app/features/profile/repositories/profile_repository.dart';
|
||||
@@ -7,6 +8,7 @@ import 'package:eatvio_app/features/settings/repositories/service_repository.dar
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:mockito/annotations.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import '../../../../fixtures/doubles/session_doubles.dart';
|
||||
import '../../../../fixtures/settings_fixtures.dart';
|
||||
import 'settings_cubit_test.mocks.dart';
|
||||
|
||||
@@ -23,6 +25,7 @@ void main() {
|
||||
late MockSettingsRepository mockSettingsRepository;
|
||||
late MockConsultantRepository mockConsultantRepository;
|
||||
late MockConsultationsRepository mockConsultationsRepository;
|
||||
late FakeSessionLifecycleService fakeSession;
|
||||
|
||||
|
||||
setUp(() {
|
||||
@@ -30,6 +33,7 @@ void main() {
|
||||
mockSettingsRepository = MockSettingsRepository();
|
||||
mockConsultantRepository = MockConsultantRepository();
|
||||
mockConsultationsRepository = MockConsultationsRepository();
|
||||
fakeSession = FakeSessionLifecycleService();
|
||||
});
|
||||
|
||||
tearDown(() async {
|
||||
@@ -46,6 +50,7 @@ void main() {
|
||||
settingsRepository: mockSettingsRepository,
|
||||
consultantRepository: mockConsultantRepository,
|
||||
consultationsRepository: mockConsultationsRepository,
|
||||
sessionLifecycleService: fakeSession,
|
||||
);
|
||||
expect(settingsCubit!.state, const SettingsState.loading());
|
||||
});
|
||||
@@ -56,6 +61,7 @@ void main() {
|
||||
settingsRepository: mockSettingsRepository,
|
||||
consultantRepository: mockConsultantRepository,
|
||||
consultationsRepository: mockConsultationsRepository,
|
||||
sessionLifecycleService: fakeSession,
|
||||
);
|
||||
|
||||
when(mockProfileRepository.getMyProfile())
|
||||
@@ -86,6 +92,7 @@ void main() {
|
||||
settingsRepository: mockSettingsRepository,
|
||||
consultantRepository: mockConsultantRepository,
|
||||
consultationsRepository: mockConsultationsRepository,
|
||||
sessionLifecycleService: fakeSession,
|
||||
);
|
||||
|
||||
// Ошибка происходит при загрузке настроек профиля (внутри try-catch блока)
|
||||
@@ -114,6 +121,7 @@ void main() {
|
||||
settingsRepository: mockSettingsRepository,
|
||||
consultantRepository: mockConsultantRepository,
|
||||
consultationsRepository: mockConsultationsRepository,
|
||||
sessionLifecycleService: fakeSession,
|
||||
);
|
||||
|
||||
when(mockProfileRepository.getMyProfile())
|
||||
@@ -145,6 +153,7 @@ void main() {
|
||||
settingsRepository: mockSettingsRepository,
|
||||
consultantRepository: mockConsultantRepository,
|
||||
consultationsRepository: mockConsultationsRepository,
|
||||
sessionLifecycleService: fakeSession,
|
||||
);
|
||||
|
||||
when(mockProfileRepository.getMyProfile())
|
||||
@@ -176,6 +185,7 @@ void main() {
|
||||
settingsRepository: mockSettingsRepository,
|
||||
consultantRepository: mockConsultantRepository,
|
||||
consultationsRepository: mockConsultationsRepository,
|
||||
sessionLifecycleService: fakeSession,
|
||||
);
|
||||
|
||||
when(mockProfileRepository.deleteAccount())
|
||||
@@ -184,6 +194,8 @@ void main() {
|
||||
final result = await settingsCubit!.deleteAccount();
|
||||
|
||||
expect(result, true);
|
||||
expect(fakeSession.endSessionCalls, 1);
|
||||
expect(fakeSession.lastEndReason, SessionEndReason.accountDeleted);
|
||||
verify(mockProfileRepository.deleteAccount()).called(1);
|
||||
});
|
||||
|
||||
@@ -193,6 +205,7 @@ void main() {
|
||||
settingsRepository: mockSettingsRepository,
|
||||
consultantRepository: mockConsultantRepository,
|
||||
consultationsRepository: mockConsultationsRepository,
|
||||
sessionLifecycleService: fakeSession,
|
||||
);
|
||||
|
||||
when(mockProfileRepository.deleteAccount())
|
||||
@@ -209,6 +222,7 @@ void main() {
|
||||
settingsRepository: mockSettingsRepository,
|
||||
consultantRepository: mockConsultantRepository,
|
||||
consultationsRepository: mockConsultationsRepository,
|
||||
sessionLifecycleService: fakeSession,
|
||||
);
|
||||
|
||||
when(mockProfileRepository.getMyProfile())
|
||||
@@ -244,6 +258,7 @@ void main() {
|
||||
settingsRepository: mockSettingsRepository,
|
||||
consultantRepository: mockConsultantRepository,
|
||||
consultationsRepository: mockConsultationsRepository,
|
||||
sessionLifecycleService: fakeSession,
|
||||
);
|
||||
|
||||
when(mockProfileRepository.getMyProfile())
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:eatvio_app/features/settings/presentation/bloc/settings_cubit/se
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import '../../../../fixtures/doubles/session_doubles.dart';
|
||||
import '../../../../fixtures/settings_fixtures.dart';
|
||||
import '../bloc/settings_cubit_test.mocks.dart';
|
||||
|
||||
@@ -27,6 +28,7 @@ void main() {
|
||||
settingsRepository: mockSettingsRepository,
|
||||
consultantRepository: mockConsultantRepository,
|
||||
consultationsRepository: mockConsultationsRepository,
|
||||
sessionLifecycleService: FakeSessionLifecycleService(),
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:mockito/annotations.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
|
||||
import '../../../../fixtures/doubles/session_doubles.dart';
|
||||
import 'settings_screen_smoke_test.mocks.dart';
|
||||
|
||||
@GenerateNiceMocks([
|
||||
@@ -57,6 +58,7 @@ void main() {
|
||||
settingsRepository: sl(),
|
||||
consultantRepository: sl(),
|
||||
consultationsRepository: sl(),
|
||||
sessionLifecycleService: FakeSessionLifecycleService(),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user