import 'package:flutter_test/flutter_test.dart';
import 'package:superport/core/constants/app_constants.dart';
import 'package:superport/data/models/vendor_dto.dart';
import 'package:superport/data/repositories/vendor_repository.dart';
import 'package:superport/domain/usecases/vendor_usecase.dart';

/// Vendor 페이지네이션 파라미터 테스트
void main() {
  group('Vendor Pagination 파라미터 테스트', () {
    test('AppConstants.vendorPageSize가 10인지 확인', () {
      expect(AppConstants.vendorPageSize, 10);
      expect(AppConstants.maxPageSize, 100);
      expect(AppConstants.minPageSize, 5);
    });

    test('VendorUseCase 기본 limit 파라미터가 10인지 확인', () {
      // VendorUseCaseImpl을 직접 테스트하기 어려우므로
      // 상수값이 올바른지만 확인
      const testLimit = AppConstants.vendorPageSize;
      expect(testLimit, 10);
    });

    test('VendorRepository 기본 limit 파라미터가 10인지 확인', () {
      // VendorRepositoryImpl을 직접 테스트하기 어려우므로
      // 상수값이 올바른지만 확인  
      const testLimit = AppConstants.vendorPageSize;
      expect(testLimit, 10);
    });

    test('페이지 계산이 올바른지 확인', () {
      const pageSize = 10;
      
      // 1페이지: 1~10
      final page1Start = (1 - 1) * pageSize + 1;
      expect(page1Start, 1);
      
      // 2페이지: 11~20
      final page2Start = (2 - 1) * pageSize + 1;
      expect(page2Start, 11);
      
      // 3페이지: 21~30
      final page3Start = (3 - 1) * pageSize + 1;
      expect(page3Start, 21);
    });
    
    test('API 요청 쿼리 파라미터 시뮬레이션 (page_size 사용)', () {
      // 실제 API 요청에서 전송될 파라미터들 시뮬레이션 - Vendors API만 page_size 사용
      final queryParams = <String, dynamic>{
        'page': 1,
        'page_size': AppConstants.vendorPageSize,
      };
      
      expect(queryParams['page'], 1);
      expect(queryParams['page_size'], 10);
      
      print('✅ API 요청 파라미터 (최종): $queryParams');
    });
  });
}