Files
user-system/internal/repository/pagination_test.go
Your Name 871bc79598 test: add repository and domain tests
- Add pagination result tests (internal/repository/pagination.go)
- Add Gemini drive client factory test (internal/repository/gemini_drive_client.go)
- Add scanSingleRow contract tests (internal/repository/sql_scan.go)
- Add DefaultThemeConfig test (internal/domain/theme.go)

Coverage improvements:
- repository: 75.8%
- domain: 21.1%
2026-05-29 16:59:05 +08:00

86 lines
1.6 KiB
Go

package repository
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/user-management-system/internal/pkg/pagination"
)
func TestPaginationResultFromTotal(t *testing.T) {
tests := []struct {
name string
total int64
page int
pageSize int
wantPages int
wantTotal int64
wantPage int
wantLimit int
}{
{
name: "exact_division",
total: 100,
page: 1,
pageSize: 20,
wantPages: 5,
wantTotal: 100,
wantPage: 1,
wantLimit: 20,
},
{
name: "with_remainder",
total: 105,
page: 1,
pageSize: 20,
wantPages: 6,
wantTotal: 105,
wantPage: 1,
wantLimit: 20,
},
{
name: "zero_total",
total: 0,
page: 1,
pageSize: 20,
wantPages: 0,
wantTotal: 0,
wantPage: 1,
wantLimit: 20,
},
{
name: "small_page_size",
total: 10,
page: 1,
pageSize: 5,
wantPages: 2,
wantTotal: 10,
wantPage: 1,
wantLimit: 5,
},
{
name: "page_size_over_100",
total: 100,
page: 1,
pageSize: 150,
wantPages: 1,
wantTotal: 100,
wantPage: 1,
// Limit() caps at 100
wantLimit: 100,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
params := pagination.PaginationParams{Page: tt.page, PageSize: tt.pageSize}
result := paginationResultFromTotal(tt.total, params)
require.Equal(t, tt.wantTotal, result.Total)
require.Equal(t, tt.wantPage, result.Page)
require.Equal(t, tt.wantLimit, result.PageSize)
require.Equal(t, tt.wantPages, result.Pages)
})
}
}