import filterPagination from '../../src/utils/filterPagination'
import drones from '../mock/drones'
import resultFilterPagination from '../mock/resultFilterPagination'

describe('FilterPagination', () => {
  it('should perform pagination filters', () => {
    expect(filterPagination(drones, 5, 2)).toStrictEqual(resultFilterPagination)
  })

  it('should return the first page items when currentPage is 1', () => {
    const result = filterPagination(drones, 5, 1)

    expect(result.contentItems).toStrictEqual(drones.slice(0, 5))
  })

  it('should return the last page items when currentPage is the final page', () => {
    const result = filterPagination(drones, 5, 3)

    expect(result.contentItems).toStrictEqual(drones.slice(10))
  })

  it('should return an empty array when items is null', () => {
    expect(filterPagination(null, 5, 1)).toStrictEqual({ contentItems: [] })
  })

  it('should return an empty array when items is undefined', () => {
    expect(filterPagination(undefined, 5, 1)).toStrictEqual({
      contentItems: [],
    })
  })

  it('should return an empty array when items is empty', () => {
    expect(filterPagination([], 5, 1)).toStrictEqual({ contentItems: [] })
  })

  it('should return all items when pageSize is greater than array length', () => {
    const items = [{ id: 1 }, { id: 2 }]
    const result = filterPagination(items, 10, 1)

    expect(result.contentItems).toStrictEqual(items)
  })
})
