사용하지 않는 파일 정리 전 백업 (Phase 10 완료 후 상태)
This commit is contained in:
122
test/vendor_api_test.dart
Normal file
122
test/vendor_api_test.dart
Normal 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');
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user