import {
  clampCurrentPage,
  getTotalItems,
  normalizePageSize,
} from '../../src/utils/normalize'

describe('Normalize utils', () => {
  it('should normalize invalid page sizes to 1', () => {
    expect(normalizePageSize(0)).toBe(1)
    expect(normalizePageSize(-5)).toBe(1)
    expect(normalizePageSize(Number.NaN)).toBe(1)
  })

  it('should floor valid page sizes', () => {
    expect(normalizePageSize(5.9)).toBe(5)
  })

  it('should return zero total items for nullish collections', () => {
    expect(getTotalItems(null)).toBe(0)
    expect(getTotalItems(undefined)).toBe(0)
  })

  it('should clamp current page to valid bounds', () => {
    expect(clampCurrentPage(0, 5)).toBe(1)
    expect(clampCurrentPage(99, 5)).toBe(5)
    expect(clampCurrentPage(3, 5)).toBe(3)
    expect(clampCurrentPage(1, 0)).toBe(1)
  })
})
