Files
ccdi/test/test_pagination.ps1

141 lines
4.3 KiB
PowerShell
Raw Normal View History

# Pagination API Test Script
# Test employee list pagination and total count
$BaseUrl = "http://localhost:8080"
$LoginUrl = "$BaseUrl/login/test"
$ListUrl = "$BaseUrl/dpc/employee/list"
# Login to get token
$loginBody = @{
username = "admin"
password = "admin123"
} | ConvertTo-Json
Write-Host "Logging in..." -ForegroundColor Cyan
$loginResponse = Invoke-RestMethod -Uri $LoginUrl -Method Post -Body $loginBody -ContentType "application/json"
$token = $loginResponse.token
Write-Host "Login success!" -ForegroundColor Green
Write-Host ""
$headers = @{
Authorization = "Bearer $token"
}
# Test function
function Test-Page {
param(
[int]$PageNum,
[int]$PageSize
)
Write-Host "========== Testing: pageNum=$PageNum, pageSize=$PageSize ==========" -ForegroundColor Yellow
$queryParams = @{
pageNum = $PageNum
pageSize = $PageSize
}
$queryString = ($queryParams.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join '&'
$url = "$ListUrl?$queryString"
try {
$response = Invoke-RestMethod -Uri $url -Method Get -Headers $headers
$rows = $response.rows.Count
$total = $response.total
$code = $response.code
Write-Host " Response Code: $code" -ForegroundColor Cyan
Write-Host " Returned Rows: $rows" -ForegroundColor Cyan
Write-Host " Total Records: $total" -ForegroundColor Cyan
# Calculate expected values
$expectedTotalPages = [Math]::Ceiling($total / $pageSize)
$expectedRows = if ($PageNum -lt $expectedTotalPages) { $pageSize } elseif ($PageNum -eq $expectedTotalPages) { $total - ($pageSize * ($PageNum - 1)) } else { 0 }
Write-Host " Expected Rows: $expectedRows" -ForegroundColor Cyan
Write-Host " Expected Total Pages: $expectedTotalPages" -ForegroundColor Cyan
# Verify
$isCorrect = $rows -eq $expectedRows
if ($isCorrect) {
Write-Host " Result: CORRECT" -ForegroundColor Green
} else {
Write-Host " Result: WRONG! Got $rows rows, expected $expectedRows" -ForegroundColor Red
}
# Show returned employee IDs
if ($response.rows -and $response.rows.Count -gt 0) {
$ids = ($response.rows | ForEach-Object { $_.employeeId }) -join ', '
Write-Host " Employee IDs: $ids" -ForegroundColor Gray
}
return @{
Success = ($code -eq 200)
Rows = $rows
Total = $total
ExpectedRows = $expectedRows
IsCorrect = $isCorrect
Response = $response
}
}
catch {
Write-Host " Error: $_" -ForegroundColor Red
return @{
Success = $false
Error = $_.Exception.Message
}
}
}
Write-Host ""
Write-Host "================ Starting Pagination Tests ================" -ForegroundColor Yellow
Write-Host ""
# Test cases
$testCases = @(
@{ PageNum = 1; PageSize = 10; Description = "Page 1, Size 10" }
@{ PageNum = 2; PageSize = 10; Description = "Page 2, Size 10" }
@{ PageNum = 1; PageSize = 5; Description = "Page 1, Size 5" }
@{ PageNum = 3; PageSize = 5; Description = "Page 3, Size 5" }
@{ PageNum = 1; PageSize = 20; Description = "Page 1, Size 20" }
@{ PageNum = 1; PageSize = 3; Description = "Page 1, Size 3" }
)
$results = @()
$allCorrect = $true
foreach ($testCase in $testCases) {
Write-Host ""
$result = Test-Page -PageNum $testCase.PageNum -PageSize $testCase.PageSize
$results += [PSCustomObject]@{
Test = $testCase.Description
PageNum = $testCase.PageNum
PageSize = $testCase.PageSize
ReturnedRows = $result.Rows
TotalRecords = $result.Total
ExpectedRows = $result.ExpectedRows
Correct = if ($result.IsCorrect) { "PASS" } else { "FAIL" }
}
if (-not $result.IsCorrect) {
$allCorrect = $false
}
Start-Sleep -Milliseconds 200
}
# Show summary
Write-Host ""
Write-Host "================ Test Results Summary ================" -ForegroundColor Yellow
Write-Host ""
$results | Format-Table -AutoSize
Write-Host ""
if ($allCorrect) {
Write-Host "PASS - All tests passed! Pagination is working correctly." -ForegroundColor Green
} else {
Write-Host "FAIL - Some tests failed! Please check pagination logic." -ForegroundColor Red
}