사용하지 않는 파일 정리 전 백업 (Phase 10 완료 후 상태)

This commit is contained in:
JiWoong Sul
2025-08-29 15:11:59 +09:00
parent a740ff10c8
commit d916b281a7
333 changed files with 53617 additions and 22574 deletions

122
test/vendor_api_test.dart Normal file
View File

@@ -0,0 +1,122 @@
import 'package:dio/dio.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:superport/data/datasources/remote/api_client.dart';
import 'package:superport/data/models/vendor_dto.dart';
import 'package:superport/data/repositories/vendor_repository.dart';
void main() {
late Dio dio;
late VendorRepository vendorRepository;
String? authToken;
setUpAll(() async {
// 직접 Dio 인스턴스 생성 (테스트용)
dio = Dio(BaseOptions(
baseUrl: 'http://43.201.34.104:8080/api/v1',
connectTimeout: const Duration(seconds: 30),
receiveTimeout: const Duration(seconds: 30),
));
// 로그인하여 토큰 획득
try {
final loginResponse = await dio.post('/auth/login', data: {
'email': 'admin@example.com',
'password': 'password123',
});
authToken = loginResponse.data['access_token'];
dio.options.headers['Authorization'] = 'Bearer $authToken';
print('✅ 로그인 성공! 토큰 획득됨');
} catch (e) {
print('❌ 로그인 실패: $e');
fail('로그인에 실패했습니다');
}
});
group('Vendor API Tests', () {
test('Vendors 목록 조회 테스트', () async {
try {
// 직접 API 호출 테스트
final response = await dio.get('/vendors', queryParameters: {
'page': 1,
'limit': 5,
});
print('\n========== 원본 API 응답 ==========');
print('Status Code: ${response.statusCode}');
print('응답 데이터: ${response.data}');
expect(response.statusCode, 200);
expect(response.data, isA<Map<String, dynamic>>());
expect(response.data['data'], isA<List>());
expect(response.data['total'], isA<int>());
expect(response.data['page'], isA<int>());
expect(response.data['total_pages'], isA<int>());
print('\n========== JSON 파싱 테스트 ==========');
// VendorListResponse로 파싱 테스트
try {
final vendorListResponse = VendorListResponse.fromJson(response.data);
print('✅ VendorListResponse 파싱 성공');
print('Items 개수: ${vendorListResponse.items.length}');
print('총 개수: ${vendorListResponse.totalCount}');
print('현재 페이지: ${vendorListResponse.currentPage}');
print('총 페이지: ${vendorListResponse.totalPages}');
expect(vendorListResponse.items.length, greaterThan(0));
expect(vendorListResponse.totalCount, greaterThan(0));
// 첫 번째 Vendor 데이터 확인
final firstVendor = vendorListResponse.items.first;
print('\n첫 번째 벤더 정보:');
print('ID: ${firstVendor.id}');
print('이름: ${firstVendor.name}');
print('삭제됨: ${firstVendor.isDeleted}');
print('활성화: ${firstVendor.isActive}');
expect(firstVendor.id, isNotNull);
expect(firstVendor.name.isNotEmpty, true);
} catch (e, stackTrace) {
print('❌ VendorListResponse 파싱 실패: $e');
print('Stack trace: $stackTrace');
fail('JSON 파싱에 실패했습니다: $e');
}
} catch (e, stackTrace) {
print('❌ API 호출 실패: $e');
print('Stack trace: $stackTrace');
fail('API 호출에 실패했습니다: $e');
}
});
test('단일 Vendor 조회 테스트', () async {
try {
// 먼저 목록에서 첫 번째 벤더 ID 가져오기
final listResponse = await dio.get('/vendors', queryParameters: {'limit': 1});
final firstVendorId = listResponse.data['data'][0]['id'];
// 단일 벤더 조회
final response = await dio.get('/vendors/$firstVendorId');
print('\n========== 단일 벤더 조회 ==========');
print('Status Code: ${response.statusCode}');
print('응답 데이터: ${response.data}');
expect(response.statusCode, 200);
expect(response.data, isA<Map<String, dynamic>>());
// VendorDto로 파싱 테스트
final vendor = VendorDto.fromJson(response.data);
print('✅ VendorDto 파싱 성공');
print('벤더 정보: ${vendor.name}');
} catch (e) {
print('❌ 단일 벤더 조회 실패: $e');
fail('단일 벤더 조회에 실패했습니다: $e');
}
});
});
}