결재 API 계약 보완 및 테스트 정리
This commit is contained in:
@@ -2,12 +2,19 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:mocktail/mocktail.dart';
|
||||
import 'package:shadcn_ui/shadcn_ui.dart';
|
||||
import 'package:superport_v2/core/common/models/paginated_result.dart';
|
||||
import 'package:superport_v2/core/config/environment.dart';
|
||||
import 'package:superport_v2/core/constants/app_sections.dart';
|
||||
import 'package:superport_v2/core/permissions/permission_manager.dart';
|
||||
import 'package:superport_v2/core/theme/superport_shad_theme.dart';
|
||||
import 'package:superport_v2/core/services/token_storage.dart';
|
||||
import 'package:superport_v2/features/auth/application/auth_service.dart';
|
||||
import 'package:superport_v2/features/auth/domain/entities/auth_session.dart';
|
||||
import 'package:superport_v2/features/auth/domain/entities/authenticated_user.dart';
|
||||
import 'package:superport_v2/features/auth/domain/entities/login_request.dart';
|
||||
import 'package:superport_v2/features/auth/domain/repositories/auth_repository.dart';
|
||||
import 'package:superport_v2/features/login/presentation/pages/login_page.dart';
|
||||
import 'package:superport_v2/features/masters/group/domain/entities/group.dart';
|
||||
import 'package:superport_v2/features/masters/group/domain/repositories/group_repository.dart';
|
||||
@@ -222,9 +229,74 @@ class _StubGroupPermissionRepository implements GroupPermissionRepository {
|
||||
}
|
||||
}
|
||||
|
||||
class _MockAuthRepository extends Mock implements AuthRepository {}
|
||||
|
||||
class _FakeTokenStorage implements TokenStorage {
|
||||
String? _accessToken;
|
||||
String? _refreshToken;
|
||||
|
||||
@override
|
||||
Future<void> clear() async {
|
||||
_accessToken = null;
|
||||
_refreshToken = null;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String?> readAccessToken() async => _accessToken;
|
||||
|
||||
@override
|
||||
Future<String?> readRefreshToken() async => _refreshToken;
|
||||
|
||||
@override
|
||||
Future<void> writeAccessToken(String? token) async {
|
||||
_accessToken = token;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> writeRefreshToken(String? token) async {
|
||||
_refreshToken = token;
|
||||
}
|
||||
}
|
||||
|
||||
AuthSession _buildSampleSession() {
|
||||
return const AuthSession(
|
||||
accessToken: 'access-token',
|
||||
refreshToken: 'refresh-token',
|
||||
expiresAt: null,
|
||||
user: AuthenticatedUser(id: 1, name: '테스터'),
|
||||
permissions: [],
|
||||
);
|
||||
}
|
||||
|
||||
void _registerAuthService(
|
||||
_MockAuthRepository repository,
|
||||
_FakeTokenStorage storage,
|
||||
) {
|
||||
final service = AuthService(repository: repository, tokenStorage: storage);
|
||||
when(() => repository.login(any())).thenAnswer((_) async => _buildSampleSession());
|
||||
when(() => repository.refresh(any())).thenThrow(UnimplementedError());
|
||||
GetIt.I.registerSingleton<AuthService>(service);
|
||||
}
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
setUpAll(() {
|
||||
registerFallbackValue(
|
||||
LoginRequest(identifier: '', password: '', rememberMe: false),
|
||||
);
|
||||
});
|
||||
|
||||
late _MockAuthRepository authRepository;
|
||||
late _FakeTokenStorage tokenStorage;
|
||||
|
||||
setUp(() async {
|
||||
await GetIt.I.reset();
|
||||
authRepository = _MockAuthRepository();
|
||||
tokenStorage = _FakeTokenStorage();
|
||||
_registerAuthService(authRepository, tokenStorage);
|
||||
});
|
||||
|
||||
setUpAll(() async {
|
||||
await Environment.initialize();
|
||||
});
|
||||
@@ -240,12 +312,10 @@ void main() {
|
||||
view.resetDevicePixelRatio();
|
||||
});
|
||||
|
||||
await GetIt.I.reset();
|
||||
GetIt.I.registerSingleton<GroupRepository>(_StubGroupRepository());
|
||||
GetIt.I.registerSingleton<GroupPermissionRepository>(
|
||||
_StubGroupPermissionRepository(),
|
||||
);
|
||||
addTearDown(() async => GetIt.I.reset());
|
||||
|
||||
final router = _createTestRouter();
|
||||
await tester.pumpWidget(_TestApp(router: router));
|
||||
|
||||
Reference in New Issue
Block a user